diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5518e60 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +.editorconfig +.gitattributes +.github +.gitignore +.gitlab-ci.yml +.idea +.pre-commit-config.yaml +.readthedocs.yml +.travis.yml +venv diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6a9a5c4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,27 @@ +# http://editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{py,rst,ini}] +indent_style = space +indent_size = 4 + +[*.{html,css,scss,json,yml,xml}] +indent_style = space +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab + +[nginx.conf] +indent_style = space +indent_size = 2 diff --git a/.envs/.local/.django b/.envs/.local/.django new file mode 100644 index 0000000..de24db4 --- /dev/null +++ b/.envs/.local/.django @@ -0,0 +1,14 @@ +# General +# ------------------------------------------------------------------------------ +USE_DOCKER=yes +IPYTHONDIR=/app/.ipython +# Redis +# ------------------------------------------------------------------------------ +REDIS_URL=redis://redis:6379/0 + +# Celery +# ------------------------------------------------------------------------------ + +# Flower +CELERY_FLOWER_USER=PhFRdLexbrsBvrrbSXxjcMMOcVOavCrZ +CELERY_FLOWER_PASSWORD=QgScyefPrYhHgO6onW61u0nazc5xdBuP4sM7jMRrBBFuA2RjsFhZLp7xbVYZbrwR diff --git a/.envs/.local/.minio b/.envs/.local/.minio new file mode 100644 index 0000000..1e66353 --- /dev/null +++ b/.envs/.local/.minio @@ -0,0 +1,4 @@ +# Minio +# ------------------------------------------------------------------------------ +MINIO_ROOT_USER=minio +MINIO_ROOT_PASSWORD=minio123 \ No newline at end of file diff --git a/.envs/.local/.postgres b/.envs/.local/.postgres new file mode 100644 index 0000000..89f5c62 --- /dev/null +++ b/.envs/.local/.postgres @@ -0,0 +1,7 @@ +# PostgreSQL +# ------------------------------------------------------------------------------ +POSTGRES_HOST=postgres +POSTGRES_PORT=5432 +POSTGRES_DB=scielo_core +POSTGRES_USER=GVRFlLmcCNfGLhsFvSnCioYOPJPYpyfj +POSTGRES_PASSWORD=BQ4hSUL4rdj5WZLdR8ilDLRQMvCtzo0caMaXDO0olGsmycQjlcZlTVK9DepZR8kk diff --git a/.envs/.production/.django b/.envs/.production/.django new file mode 100644 index 0000000..134e2d1 --- /dev/null +++ b/.envs/.production/.django @@ -0,0 +1,31 @@ +# General +# ------------------------------------------------------------------------------ +USE_DOCKER=yes +IPYTHONDIR=/app/.ipython + +# Redis +# ------------------------------------------------------------------------------ +REDIS_URL=redis://redis:6379/0 + +# Celery +# ------------------------------------------------------------------------------ + +# Flower +# ------------------------------------------------------------------------------ +CELERY_FLOWER_USER=PhFRdLexbrsBvrrbSXxjcMMOcVOavCrZ +CELERY_FLOWER_PASSWORD=QgScyefPrYhHgO6onW61u0nazc5xdBuP4sM7jMRrBBFuA2RjsFhZLp7xbVYZbrwR + +# Django +# ------------------------------------------------------------------------------ +DJANGO_SETTINGS_MODULE=config.settings.production +DJANGO_SECRET_KEY=FMiraeekXCSl3zHfg7D4oHx7ufT46HRnwnsawKgTCC53BYajVkVzb8HhOvBOHakR" +DJANGO_ADMIN_URL=django-admin/ +DJANGO_ALLOWED_HOSTS=* + +# Wagtail +# ------------------------------------------------------------------------------ +WAGTAIL_ADMIN_URL=admin/ + +# Sentry +# ------------------------------------------------------------------------------ +SENTRY_DSN= diff --git a/.envs/.production/.minio b/.envs/.production/.minio new file mode 100644 index 0000000..e721371 --- /dev/null +++ b/.envs/.production/.minio @@ -0,0 +1,4 @@ +# Minio +# ------------------------------------------------------------------------------ +MINIO_ROOT_USER= +MINIO_ROOT_PASSWORD= \ No newline at end of file diff --git a/.envs/.production/.postgres b/.envs/.production/.postgres new file mode 100644 index 0000000..7466c92 --- /dev/null +++ b/.envs/.production/.postgres @@ -0,0 +1,7 @@ +# PostgreSQL +# ------------------------------------------------------------------------------ +POSTGRES_HOST=postgres +POSTGRES_PORT=5432 +POSTGRES_DB=core +POSTGRES_USER=GVRFlLmcCNfGLhsFvSnCioYOPJPYpyfj +POSTGRES_PASSWORD=BQ4hSUL4rdj5WZLdR8ilDLRQMvCtzo0caMaXDO0olGsmycQjlcZlTVK9DepZR8kk diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..176a458 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto diff --git a/.github/ISSUE_TEMPLATE/nova-funcionalidade.md b/.github/ISSUE_TEMPLATE/nova-funcionalidade.md new file mode 100644 index 0000000..87bf256 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/nova-funcionalidade.md @@ -0,0 +1,85 @@ +--- +name: Nova funcionalidade +about: Contribua com novas idéias e necessidades +title: '' +labels: enhancement +assignees: '' + +--- + +### Descrição da nova funcionalidade +Eu, como **[tipo de cargo/ usuário / papel em sistema]**, gostaria que **[descrição breve da funcionalidade]**, então **[consequência ou o porque da requisição da atividade]**. + +### Critérios de aceitação + +Lista de critérios a serem observados pela equipe de engenharia durante a elaboração e construção da tarefa. Seja claro(a), descreva os pontos que são importantes para você: +- Ex 1: Fale sobre qual deve ser o comportamento da funcionalidade; +- Ex 2: Fale sobre quais validações um formulário deve conter; +- Ex 3: Fale sobre os tipos de impressão uma página deve suportar; +- Ex 4: Fale sobre os tipos de usuários podem realizar a ação requisitada; +- Critério 5; +- Critério 6 + +### Anexos +Este tópico é opcional mas pode ser utilizado para incluir objetos a serem analisados ou demonstrações que podem ser utilizados de exemplo. + +### Referências +Este tópico é opcional mas pode ser utilizado para enumerar items de referências como links ou bibliografia. + + +---- + +# Exemplos + +### 1) Descrição do requisito + +Como Usuário Administrador do OPAC, gostaria que o botão de publicação de periódicos possuisse **DESTAQUE**, assim poderia ter um indicativo visual de cuidado antes de clicar. + +### Critérios de aceitação + +Para que esta tarefa seja considerada concluída deve conter os seguintes pontos: +- O botão de publicação deve possuir um tom vermelho que se destaque dos outros elementos de tela; +- O botão deve conter o modo daltônico para que os membros daltônicos do time de publicação possam identifica-lo com facilidade; +- O botão deve ter conter um indicativo de "descrição de ação" ao posicionar o mouse e aguardar alguns segundos. + +### Anexos +N/A + +### Referências +N/A + +--- +### 2) Descrição do requisito +Como Usuário visitante do OPAC, gostaria que a página de artigos fosse adaptativa para celulares, assim poderia utilizar meu dispositivo móvel para navegar com mais facilidade. + +### Critérios de aceitação + +Os seguintes pontos devem ser contemplados: +- Os botões de navegação nesta tela devem ser de fácil acesso e possuir fácil toque; +- Os textos nesta tela devem possuir tamanho adequado para leitura seguindo os padrões da W3C; +- Deve-se agrupar em blocos as seções de página para facilitar a navegabilidade; + +### Anexos +N/A + +### Referências +N/A + +--- +### 3) Descrição do requisito +Como administrador do processo de qualidade, gostaria de ter um pré visualizador de HTML, assim poderia validar a marcação dos XMLs antes de envia-lo para publicação. + + +### Critérios de aceitação + +Os seguintes pontos devem ser contemplados: +- O visualizador de HTML deve ser auto contido e não depender de internet; +- O visualizador de HTML deve funcionar a partir do SPS 1.8; +- O visualizador de HTML deve exibir o conteúdo da mesma forma que o site oficial; +- O visualizador de HTML deve projetar as tabelas de forma correta; + +### Anexos +N/A + +### Referências +N/A diff --git a/.github/ISSUE_TEMPLATE/reportar-problema.md b/.github/ISSUE_TEMPLATE/reportar-problema.md new file mode 100644 index 0000000..abf5219 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/reportar-problema.md @@ -0,0 +1,38 @@ +--- +name: Reportar problema +about: Reporte um erro ou problema e nos ajude a melhorar nossos produtos +title: '' +labels: bug +assignees: '' + +--- + +### Descrição do problema +Descreva de forma clara e objetiva o problema relatado. + +### Passos para reproduzir o problema +1. Acesse a página ... +2. Clique no link ... +3. Role a página até ... +4. Observe o erro apresentado + +### Comportamento esperado +Descreva com clareza qual seria o comportamento **esperado** (correto) ao reproduzir os passos acima. + +### Screenshots ou vídeos +Para dar mais detalhes e contexto sobre o erro, considere anexar fotos ou vídeos do problema. + +### Anexos +Está seção é opcional, utilize para referenciar arquivos que servem de insumo para reproduzir o erro, ex: +- XML utilizado +- HTML produzido +- PDF criado + +### Ambiente utilizado + +Quando aplicável, forneça detalhes sobre o ambiente utilizado, ex: + +- Navegador Mozilla Firefox versão 30 +- Windows XP +- PC programs versão 1.0 +- Aparelho celular iPhone 7, iOS 7 diff --git a/.github/ISSUE_TEMPLATE/tarefa-de-desenvolvimento.md b/.github/ISSUE_TEMPLATE/tarefa-de-desenvolvimento.md new file mode 100644 index 0000000..a3ac269 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/tarefa-de-desenvolvimento.md @@ -0,0 +1,21 @@ +--- +name: Tarefa de desenvolvimento +about: Tarefas definidas pelo próprio time de desenvolvimento +title: '' +labels: task +assignees: '' + +--- + +### Descrição da tarefa +Descreva de forma clara e objetiva a tarefa em questão + +### Subtarefas + +- [ ] Descrição da primeira subtarefa +- [ ] Descrição da segunda subtarefa + + +## Considerações e notas + +* A implementação destas mudanças implica em aumentar o consumo de disco.. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..98a0de6 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,79 @@ +# Config for Dependabot updates. See Documentation here: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + # Update GitHub actions in workflows + - package-ecosystem: "github-actions" + directory: "/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Docker + # We need to specify each Dockerfile in a separate entry because Dependabot doesn't + # support wildcards or recursively checking subdirectories. Check this issue for updates: + # https://github.com/dependabot/dependabot-core/issues/2178 + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `compose/local/django` directory + directory: "compose/local/django/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Docker + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `compose/local/docs` directory + directory: "compose/local/docs/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Docker + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `compose/local/node` directory + directory: "compose/local/node/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Docker + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `compose/production/aws` directory + directory: "compose/production/aws/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Docker + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `compose/production/django` directory + directory: "compose/production/django/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Docker + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `compose/production/postgres` directory + directory: "compose/production/postgres/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Docker + - package-ecosystem: "docker" + # Look for a `Dockerfile` in the `compose/production/traefik` directory + directory: "compose/production/traefik/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" + + # Enable version updates for Python/Pip - Production + - package-ecosystem: "pip" + # Look for a `requirements.txt` in the `root` directory + # also 'setup.cfg', 'runtime.txt' and 'requirements/*.txt' + directory: "/" + # Check for updates to GitHub Actions every weekday + schedule: + interval: "daily" diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..c540b4b --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,20 @@ +#### O que esse PR faz? +Fale sobre o propósito do Pull Request como: quais problemas ele soluciona ou quais features ele adiciona. + +#### Por onde a revisão poderia começar? +Indique o caminho do arquivo e o arquivo por onde o revisor deve iniciar a leitura do código. + +#### Como este poderia ser testado manualmente? +Estabeleça os passos necessários para que a funcionalidade seja testada manualmente pelo revisor. + +#### Algum cenário de contexto que queira dar? +Indique um contexto em que as modificações se fazem necessárias ou passe informações que contextualizam o revisor a fim de facilitar o entendimento da funcionalidade. + +### Screenshots +Quando aplicável, adicione screenshots que remetem à situação gráfica do problema que o Pull Request resolve. + +#### Quais são tickets relevantes? +Indique uma issue relacionada ao Pull Request. + +### Referências +Indique as referências utilizadas para a elaboração do Pull Request. diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1d626f6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,60 @@ +name: CI + +# Enable Buildkit and let compose use it to speed up image building +env: + DOCKER_BUILDKIT: 1 + COMPOSE_DOCKER_CLI_BUILD: 1 + +on: + pull_request: + branches: [ "master", "main" ] + paths-ignore: [ "docs/**" ] + + push: + branches: [ "master", "main" ] + paths-ignore: [ "docs/**" ] + +concurrency: + group: ${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + linter: + runs-on: ubuntu-latest + steps: + + - name: Checkout Code Repository + uses: actions/checkout@v3 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.9" + cache: pip + cache-dependency-path: | + requirements/base.txt + requirements/local.txt + + - name: Run pre-commit + uses: pre-commit/action@v3.0.0 + + # With no caching at all the entire ci process takes 4m 30s to complete! + pytest: + runs-on: ubuntu-latest + + steps: + + - name: Checkout Code Repository + uses: actions/checkout@v3 + + - name: Build the Stack + run: docker-compose -f local.yml build + + - name: Run DB Migrations + run: docker-compose -f local.yml run --rm django python manage.py migrate + + - name: Run Django Tests + run: docker-compose -f local.yml run django pytest + + - name: Tear down the Stack + run: docker-compose -f local.yml down diff --git a/.gitignore b/.gitignore index 68bc17f..f341aa9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# Solr +index/usage/data +index/data/usage/data/ + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..73bf112 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,33 @@ +exclude: "^docs/|/migrations/" +default_stages: [commit] + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + + - repo: https://github.com/psf/black + rev: 23.1.0 + hooks: + - id: black + + - repo: https://github.com/PyCQA/isort + rev: 5.12.0 + hooks: + - id: isort + + - repo: https://github.com/PyCQA/flake8 + rev: 6.0.0 + hooks: + - id: flake8 + args: ["--config=setup.cfg"] + additional_dependencies: [flake8-isort] + +# sets up .pre-commit-ci.yaml to ensure pre-commit dependencies stay up to date +ci: + autoupdate_schedule: weekly + skip: [] + submodules: false diff --git a/.pylintrc b/.pylintrc new file mode 100644 index 0000000..55509fe --- /dev/null +++ b/.pylintrc @@ -0,0 +1,14 @@ +[MASTER] +load-plugins=pylint_django, pylint_celery +django-settings-module=config.settings.base +[FORMAT] +max-line-length=120 + +[MESSAGES CONTROL] +disable=missing-docstring,invalid-name + +[DESIGN] +max-parents=13 + +[TYPECHECK] +generated-members=REQUEST,acl_users,aq_parent,"[a-zA-Z]+_set{1,2}",save,delete diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 0000000..b4cf0c0 --- /dev/null +++ b/.readthedocs.yml @@ -0,0 +1,12 @@ +version: 2 + +sphinx: + configuration: docs/conf.py + +build: + image: testing + +python: + version: 3.9 + install: + - requirements: requirements/local.txt diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt new file mode 100644 index 0000000..43e8deb --- /dev/null +++ b/CONTRIBUTORS.txt @@ -0,0 +1 @@ +Rafael J P Damaceno - Pitanga Innovare diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..67b206c --- /dev/null +++ b/Makefile @@ -0,0 +1,130 @@ +default: build + +COMPOSE_FILE_DEV = local.yml + +compose = ${COMPOSE_FILE_DEV} + +export SCMS_BUILD_DATE=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ") +export SCMS_VCS_REF=$(strip $(shell git rev-parse --short HEAD)) +export SCMS_WEBAPP_VERSION=$(strip $(shell cat VERSION)) + +help: ## Show this help + @echo 'Usage: make [target] [argument] ...' + @echo '' + @echo 'Argument:' + @echo "\t compose = {compose_file_name}" + @echo '' + @echo 'Targets:' + @egrep '^(.+)\:\ .*##\ (.+)' ${MAKEFILE_LIST} | sed 's/:.*##/#/' | column -t -c 1 -s "#" + @echo '' + @echo 'Example:' + @echo "\t Type 'make' (default target=build) is the same of type 'make build compose=local.yml'" + @echo "\t Type 'make build' is the same of type 'make build compose=local.yml'" + @echo "\t Type 'make up' is the same of type 'make up compose=local.yml'" + +app_version: ## Show version of webapp + @echo "Version: " $(SCMS_WEBAPP_VERSION) + +latest_commit: ## Show last commit ref + @echo "Latest commit: " $(SCMS_VCS_REF) + +build_date: ## Show build date + @echo "Build date: " $(SCMS_BUILD_DATE) + +############################################ +## atalhos docker-compose desenvolvimento ## +############################################ + +build: ## Build app using $(compose) + @docker-compose -f $(compose) build + +build_no_cache: ## Build app using $(compose) + @docker-compose -f $(compose) build --no-cache + +up: ## Start app using $(compose) + @docker-compose -f $(compose) up -d + +logs: ## See all app logs using $(compose) + @docker-compose -f $(compose) logs -f + +stop: ## Stop all app using $(compose) + @docker-compose -f $(compose) stop + +restart: + @docker-compose -f $(compose) restart + +ps: ## See all containers using $(compose) + @docker-compose -f $(compose) ps + +rm: ## Remove all containers using $(compose) + @docker-compose -f $(compose) rm -f + +django_shell: ## Open python terminal from django $(compose) + @docker-compose -f $(compose) run --rm django python manage.py shell + +wagtail_sync: ## Wagtail sync Page fields (repeat every time you add a new language and to update the wagtailcore_page translations) $(compose) + @docker-compose -f $(compose) run --rm django python manage.py sync_page_translation_fields + +wagtail_update_translation_field: ## Wagtail update translation fields, user this command first $(compose) + @docker-compose -f $(compose) run --rm django python manage.py update_translation_fields + +django_createsuperuser: ## Create a super user from django $(compose) + @docker-compose -f $(compose) run --rm django python manage.py createsuperuser + +django_bash: ## Open a bash terminar from django container using $(compose) + @docker-compose -f $(compose) run --rm django bash + +django_test: ## Run tests from django container using $(compose) + @docker-compose -f $(compose) run --rm django python manage.py test + +django_fast: ## Run tests fast from django container using $(compose) + @docker-compose -f $(compose) run --rm django python manage.py test --failfast + +django_makemigrations: ## Run makemigrations from django container using $(compose) + @docker-compose -f $(compose) run --rm django python manage.py makemigrations + +django_migrate: ## Run migrate from django container using $(compose) + @docker-compose -f $(compose) run --rm django python manage.py migrate + +django_makemessages: ## Run ./manage.py makemessages $(compose) + @docker-compose -f $(compose) run --rm django python manage.py makemessages --all + +django_compilemessages: ## Run ./manage.py compilemessages $(compose) + @docker-compose -f $(compose) run --rm django python manage.py compilemessages + +django_dump_auth: ## Run manage.py dumpdata auth --indent=2 $(compose) + @docker-compose -f $(compose) run --rm django python manage.py dumpdata auth --indent=2 --output=fixtures/auth.json + +django_load_auth: ## Run manage.py dumpdata auth --indent=2 $(compose) + @docker-compose -f $(compose) run --rm django python manage.py loaddata --database=default fixtures/auth.json + +dump_data: ## Dump database into .sql $(compose) + docker exec -t scielo_core_local_postgres pg_dumpall -c -U debug > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql + +restore_data: ## Restore database into from latest.sql file $(compose) + cat backup/latest.sql | docker exec -i scielo_core_local_postgres psql -U debug + +############################################ +## Atalhos Úteis ## +############################################ + +clean_container: ## Remove all containers + @docker rm $$(docker ps -a -q --no-trunc) + +clean_dangling_images: ## Remove all dangling images + @docker rmi -f $$(docker images --filter 'dangling=true' -q --no-trunc) + +clean_dangling_volumes: ## Remove all dangling volumes + @docker volume rm $$(docker volume ls -f dangling=true -q) + +clean_project_images: ## Remove all images with "core" on name + @docker rmi -f $$(docker images --filter=reference='*scielo_core*' -q) + +volume_down: ## Remove all volume + @docker-compose -f $(compose) down -v + +clean_migrations: ## Remove all migrations + @echo "Cleaning migrations..." + @find . -path "*/migrations/*.py" -not -name "__init__.py" -not -path "./django_celery_beat/migrations*" -not -path "./core_settings/migrations*" -not -path "./core/contrib/sites/migrations*" -not -path "./core/users/migrations*" -delete + @find . -path "*/migrations/*.pyc" -delete + @echo "Migrations cleaned successfully." \ No newline at end of file diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..8acdd82 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.0.1 diff --git a/collection/__init__.py b/collection/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/collection/admin.py b/collection/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/collection/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/collection/apps.py b/collection/apps.py new file mode 100644 index 0000000..040c2d3 --- /dev/null +++ b/collection/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class CollectionConfig(AppConfig): + default_auto_field = "django.db.models.BigAutoField" + name = "collection" diff --git a/collection/choices.py b/collection/choices.py new file mode 100644 index 0000000..6235503 --- /dev/null +++ b/collection/choices.py @@ -0,0 +1,16 @@ +from django.utils.translation import gettext as _ + +STATUS = [ + ("certified", _("Certified")), + ("development", _("Development")), + ("diffusion", _("Diffusion")), + ("independent", _("Independent")), +] + +TYPE = [ + ("journals", _("Journals")), + ("preprints", _("Preprints")), + ("repositories", _("Repositories")), + ("books", _("Books")), + ("data", _("Data repository")), +] diff --git a/collection/exceptions.py b/collection/exceptions.py new file mode 100644 index 0000000..62ce062 --- /dev/null +++ b/collection/exceptions.py @@ -0,0 +1,2 @@ +class MainCollectionNotFoundError(Exception): + ... \ No newline at end of file diff --git a/collection/migrations/0001_initial.py b/collection/migrations/0001_initial.py new file mode 100644 index 0000000..f63bd79 --- /dev/null +++ b/collection/migrations/0001_initial.py @@ -0,0 +1,223 @@ +# Generated by Django 4.2.7 on 2024-04-12 19:20 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import modelcluster.fields + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("core", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="Collection", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "updated", + models.DateTimeField( + auto_now=True, verbose_name="Last update date" + ), + ), + ( + "acron3", + models.CharField( + blank=True, + max_length=10, + null=True, + verbose_name="Acronym with 3 chars", + ), + ), + ( + "acron2", + models.CharField( + blank=True, + max_length=10, + null=True, + verbose_name="Acronym with 2 chars", + ), + ), + ( + "code", + models.CharField( + blank=True, max_length=10, null=True, verbose_name="Código" + ), + ), + ( + "domain", + models.URLField(blank=True, null=True, verbose_name="Domain"), + ), + ( + "main_name", + models.TextField(blank=True, null=True, verbose_name="Main name"), + ), + ( + "status", + models.CharField( + blank=True, + choices=[ + ("certified", "Certified"), + ("development", "Development"), + ("diffusion", "Diffusion"), + ("independent", "Independent"), + ], + max_length=20, + null=True, + verbose_name="Status", + ), + ), + ( + "has_analytics", + models.BooleanField( + blank=True, null=True, verbose_name="Has analytics" + ), + ), + ( + "collection_type", + models.CharField( + blank=True, + choices=[ + ("journals", "Journals"), + ("preprints", "Preprints"), + ("repositories", "Repositories"), + ("books", "Books"), + ("data", "Data repository"), + ], + max_length=20, + null=True, + verbose_name="Collection Type", + ), + ), + ( + "is_active", + models.BooleanField( + blank=True, null=True, verbose_name="Is active" + ), + ), + ( + "foundation_date", + models.DateField( + blank=True, null=True, verbose_name="Foundation data" + ), + ), + ( + "creator", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_creator", + to=settings.AUTH_USER_MODEL, + verbose_name="Creator", + ), + ), + ( + "updated_by", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_last_mod_user", + to=settings.AUTH_USER_MODEL, + verbose_name="Updater", + ), + ), + ], + options={ + "verbose_name": "Coleção", + "verbose_name_plural": "Coleções", + "ordering": ["main_name"], + }, + ), + migrations.CreateModel( + name="CollectionName", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("text", models.TextField(blank=True, null=True, verbose_name="Texto")), + ( + "collection", + modelcluster.fields.ParentalKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="collection_name", + to="collection.collection", + ), + ), + ( + "language", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="core.language", + verbose_name="Idioma", + ), + ), + ], + options={ + "abstract": False, + }, + ), + migrations.AddIndex( + model_name="collection", + index=models.Index(fields=["acron3"], name="collection__acron3_a9f5cf_idx"), + ), + migrations.AddIndex( + model_name="collection", + index=models.Index(fields=["acron2"], name="collection__acron2_a6ae4c_idx"), + ), + migrations.AddIndex( + model_name="collection", + index=models.Index(fields=["code"], name="collection__code_e4f01a_idx"), + ), + migrations.AddIndex( + model_name="collection", + index=models.Index(fields=["domain"], name="collection__domain_f79fa7_idx"), + ), + migrations.AddIndex( + model_name="collection", + index=models.Index( + fields=["main_name"], name="collection__main_na_f316bd_idx" + ), + ), + migrations.AddIndex( + model_name="collection", + index=models.Index(fields=["status"], name="collection__status_ee0d16_idx"), + ), + migrations.AddIndex( + model_name="collection", + index=models.Index( + fields=["collection_type"], name="collection__collect_a99863_idx" + ), + ), + ] diff --git a/collection/migrations/__init__.py b/collection/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/collection/models.py b/collection/models.py new file mode 100644 index 0000000..b0ca01d --- /dev/null +++ b/collection/models.py @@ -0,0 +1,235 @@ +import logging + +from django.db import models +from django.utils.translation import gettext as _ +from modelcluster.fields import ParentalKey +from modelcluster.models import ClusterableModel +from wagtail.admin.panels import FieldPanel, InlinePanel +from wagtailautocomplete.edit_handlers import AutocompletePanel + +from core.forms import CoreAdminModelForm +from core.models import CommonControlField, Language, TextWithLang +from core.utils.utils import fetch_data + +from . import choices + + +class CollectionName(TextWithLang): + collection = ParentalKey( + "Collection", + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name="collection_name", + ) + + panels = [ + AutocompletePanel("language"), + FieldPanel("text"), + ] + + @property + def data(self): + d = { + "collection_name__text": self.text, + "collection_name__language": self.language, + } + + return d + + def __unicode__(self): + return self.text + + def __str__(self): + return self.text + + @classmethod + def get_or_create(cls, collection, lang, name, user=None): + try: + obj = cls.objects.get(collection=collection, language=lang, text=name) + except cls.DoesNotExist: + obj = cls() + obj.collection = collection + obj.language = lang + obj.text = name + obj.creator = user + obj.save() + return obj + + +class Collection(CommonControlField, ClusterableModel): + acron3 = models.CharField( + _("Acronym with 3 chars"), max_length=10, null=True, blank=True + ) + acron2 = models.CharField( + _("Acronym with 2 chars"), max_length=10, null=True, blank=True + ) + code = models.CharField(_("Code"), max_length=10, null=True, blank=True) + domain = models.URLField(_("Domain"), null=True, blank=True) + main_name = models.TextField(_("Main name"), null=True, blank=True) + status = models.CharField( + _("Status"), choices=choices.STATUS, max_length=20, null=True, blank=True + ) + has_analytics = models.BooleanField(_("Has analytics"), null=True, blank=True) + collection_type = models.CharField( + _("Collection Type"), choices=choices.TYPE, max_length=20, null=True, blank=True + ) + is_active = models.BooleanField(_("Is active"), null=True, blank=True) + foundation_date = models.DateField(_("Foundation data"), null=True, blank=True) + + autocomplete_search_field = "main_name" + + def autocomplete_label(self): + return str(self) + + panels = [ + FieldPanel("acron3"), + FieldPanel("acron2"), + FieldPanel("code"), + FieldPanel("domain"), + InlinePanel("collection_name", label=_("Translated names")), + FieldPanel("main_name"), + FieldPanel("status"), + FieldPanel("has_analytics"), + FieldPanel("collection_type"), + FieldPanel("is_active"), + FieldPanel("foundation_date"), + ] + + class Meta: + ordering = ['main_name'] + verbose_name = _("Collection") + verbose_name_plural = _("Collections") + indexes = [ + models.Index( + fields=[ + "acron3", + ] + ), + models.Index( + fields=[ + "acron2", + ] + ), + models.Index( + fields=[ + "code", + ] + ), + models.Index( + fields=[ + "domain", + ] + ), + models.Index( + fields=[ + "main_name", + ] + ), + models.Index( + fields=[ + "status", + ] + ), + models.Index( + fields=[ + "collection_type", + ] + ), + ] + + @property + def data(self): + d = { + "collection__acron3": self.acron3, + "collection__acron2": self.acron2, + "collection__code": self.code, + "collection__domain": self.domain, + "collection__main_name": self.main_name, + "collection__status": self.status, + "collection__has_analytics": self.has_analytics, + "collection__collection_type": self.collection_type, + "collection__is_active": self.is_active, + "collection__is_foundation_date": self.foundation_date, + } + + if self.name: + d.update(self.name.data) + + return d + + def __unicode__(self): + return "%s" % self.main_name or "" + + def __str__(self): + return "%s" % self.main_name or "" + + base_form_class = CoreAdminModelForm + + @classmethod + def load(cls, user, collections_data=None): + if not collections_data: + collections_data = fetch_data( + "https://articlemeta.scielo.org/api/v1/collection/identifiers/", + json=True, + verify=False, + ) + + for collection_data in collections_data: + logging.info(collection_data) + cls.create_or_update( + user, + main_name=collection_data.get("original_name"), + acron2=collection_data.get("acron2"), + acron3=collection_data.get("acron"), + code=collection_data.get("code"), + domain=collection_data.get("domain"), + names=collection_data.get("name"), + status=collection_data.get("status"), + has_analytics=collection_data.get("has_analytics"), + collection_type=collection_data.get("type"), + is_active=collection_data.get("is_active"), + ) + + @classmethod + def create_or_update( + cls, + user, + main_name, + acron2, + acron3, + code, + domain, + names, + status, + has_analytics, + collection_type, + is_active, + ): + try: + obj = cls.objects.get(acron3=acron3) + obj.updated_by = user + except cls.DoesNotExist: + obj = cls() + obj.acron3 = acron3 + obj.creator = user + + obj.main_name = main_name + obj.acron2 = acron2 + obj.code = code + obj.domain = domain + obj.status = status + obj.has_analytics = has_analytics + obj.collection_type = collection_type + obj.is_active = is_active + obj.save() + for language in names: + lang = Language.get_or_create(code2=language, creator=user) + CollectionName.get_or_create(obj, lang, names.get(language), user) + obj.save() + logging.info(acron3) + return obj + + @property + def name(self): + return CollectionName.objects.filter(collection=self).iterator() diff --git a/collection/scripts/load_collection.py b/collection/scripts/load_collection.py new file mode 100644 index 0000000..a197681 --- /dev/null +++ b/collection/scripts/load_collection.py @@ -0,0 +1,5 @@ +from collection import tasks + + +def run(username): + tasks.task_load_collections.apply_async(kwargs={"username": username}) diff --git a/collection/tasks.py b/collection/tasks.py new file mode 100644 index 0000000..0dcdb98 --- /dev/null +++ b/collection/tasks.py @@ -0,0 +1,16 @@ +from django.contrib.auth import get_user_model +from django.utils.translation import gettext as _ + +from collection.models import Collection +from config import celery_app + +User = get_user_model() + + +@celery_app.task(bind=True) +def task_load_collections(self, user_id=None, username=None): + if user_id: + user = User.objects.get(pk=user_id) + if username: + user = User.objects.get(username=username) + Collection.load(user) diff --git a/collection/tests.py b/collection/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/collection/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/collection/views.py b/collection/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/collection/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/collection/wagtail_hooks.py b/collection/wagtail_hooks.py new file mode 100644 index 0000000..5b45e1f --- /dev/null +++ b/collection/wagtail_hooks.py @@ -0,0 +1,69 @@ +from django.http import HttpResponseRedirect +from django.utils.translation import gettext as _ +from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register +from wagtail.contrib.modeladmin.views import CreateView + +from .models import Collection + + +class CollectionCreateView(CreateView): + def form_valid(self, form): + self.object = form.save_all(self.request.user) + return HttpResponseRedirect(self.get_success_url()) + + +class CollectionAdmin(ModelAdmin): + model = Collection + create_view_class = CollectionCreateView + inspect_view_enabled = True + menu_label = _("Collection") + menu_icon = "folder-open-inverse" + menu_order = 1 + add_to_settings_menu = False + exclude_from_explorer = ( + False + ) + list_display = ( + "main_name", + "acron3", + "code", + "status", + "collection_type", + "is_active", + "updated", + "created", + ) + list_filter = ( + "status", + "collection_type", + "is_active", + "has_analytics", + ) + search_fields = ( + "acron3", + "acron2", + "code", + "domain", + "name__text", + "main_name", + ) + list_export = ( + "acron3", + "acron2", + "code", + "domain", + "main_name", + "status", + "has_analytics", + "collection_type", + "is_active", + "foundation_date", + "creator", + "updated", + "created", + "updated_by", + ) + export_filename = "collections" + + +modeladmin_register(CollectionAdmin) diff --git a/compose/local/django/Dockerfile b/compose/local/django/Dockerfile new file mode 100644 index 0000000..84c62ad --- /dev/null +++ b/compose/local/django/Dockerfile @@ -0,0 +1,85 @@ +ARG PYTHON_VERSION=3.11-bullseye + +# define an alias for the specfic python version used in this file. +FROM python:${PYTHON_VERSION} as python + +# Python build stage +FROM python as python-build-stage + +ARG BUILD_ENVIRONMENT=local + +# Install apt packages +RUN apt-get update && apt-get install --no-install-recommends -y \ + # dependencies for building Python packages + build-essential \ + git \ + # psycopg2 dependencies + libpq-dev + +# Requirements are installed here to ensure they will be cached. +COPY ./requirements . + +# Update pip +RUN python -m pip install --upgrade pip + +# Create Python Dependency and Sub-Dependency Wheels. +RUN pip wheel --wheel-dir /usr/src/app/wheels \ + -r ${BUILD_ENVIRONMENT}.txt + + +# Python 'run' stage +FROM python as python-run-stage + +ARG BUILD_ENVIRONMENT=local +ARG APP_HOME=/app + +ENV PYTHONUNBUFFERED 1 +ENV PYTHONDONTWRITEBYTECODE 1 +ENV BUILD_ENV ${BUILD_ENVIRONMENT} + +WORKDIR ${APP_HOME} + +# Install required system dependencies +RUN apt-get update && apt-get install --no-install-recommends -y \ + # psycopg2 dependencies + libpq-dev \ + # Translations dependencies + gettext \ + # cleaning up unused files + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && rm -rf /var/lib/apt/lists/* + +# All absolute dir copies ignore workdir instruction. All relative dir copies are wrt to the workdir instruction +# copy python dependency wheels from python-build-stage +COPY --from=python-build-stage /usr/src/app/wheels /wheels/ + +# use wheels to install python dependencies +RUN pip install --no-cache-dir --no-index --find-links=/wheels/ /wheels/* \ + && rm -rf /wheels/ + +COPY ./compose/production/django/entrypoint /entrypoint +RUN sed -i 's/\r$//g' /entrypoint +RUN chmod +x /entrypoint + +COPY ./compose/local/django/start /start +RUN sed -i 's/\r$//g' /start +RUN chmod +x /start + + +COPY ./compose/local/django/celery/worker/start /start-celeryworker +RUN sed -i 's/\r$//g' /start-celeryworker +RUN chmod +x /start-celeryworker + +COPY ./compose/local/django/celery/beat/start /start-celerybeat +RUN sed -i 's/\r$//g' /start-celerybeat +RUN chmod +x /start-celerybeat + +COPY ./compose/local/django/celery/flower/start /start-flower +RUN sed -i 's/\r$//g' /start-flower +RUN chmod +x /start-flower + + +# copy application code to WORKDIR +COPY . ${APP_HOME} + +ENTRYPOINT ["/entrypoint"] diff --git a/compose/local/django/celery/beat/start b/compose/local/django/celery/beat/start new file mode 100644 index 0000000..c04a736 --- /dev/null +++ b/compose/local/django/celery/beat/start @@ -0,0 +1,8 @@ +#!/bin/bash + +set -o errexit +set -o nounset + + +rm -f './celerybeat.pid' +celery -A config.celery_app beat -l INFO diff --git a/compose/local/django/celery/flower/start b/compose/local/django/celery/flower/start new file mode 100644 index 0000000..bd3c9f2 --- /dev/null +++ b/compose/local/django/celery/flower/start @@ -0,0 +1,11 @@ +#!/bin/bash + +set -o errexit +set -o nounset + + +celery \ + -A config.celery_app \ + -b "${CELERY_BROKER_URL}" \ + flower \ + --basic_auth="${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}" diff --git a/compose/local/django/celery/worker/start b/compose/local/django/celery/worker/start new file mode 100644 index 0000000..d7b63cd --- /dev/null +++ b/compose/local/django/celery/worker/start @@ -0,0 +1,7 @@ +#!/bin/bash + +set -o errexit +set -o nounset + + +watchgod celery.__main__.main --args -A config.celery_app worker -l INFO diff --git a/compose/local/django/start b/compose/local/django/start new file mode 100644 index 0000000..f076ee5 --- /dev/null +++ b/compose/local/django/start @@ -0,0 +1,9 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + + +python manage.py migrate +python manage.py runserver_plus 0.0.0.0:8000 diff --git a/compose/local/docs/Dockerfile b/compose/local/docs/Dockerfile new file mode 100644 index 0000000..1a9ee9d --- /dev/null +++ b/compose/local/docs/Dockerfile @@ -0,0 +1,68 @@ +ARG PYTHON_VERSION=3.9-slim-bullseye + +# define an alias for the specfic python version used in this file. +FROM python:${PYTHON_VERSION} as python + + +# Python build stage +FROM python as python-build-stage + +ENV PYTHONDONTWRITEBYTECODE 1 + +RUN apt-get update && apt-get install --no-install-recommends -y \ + # dependencies for building Python packages + build-essential \ + # psycopg2 dependencies + libpq-dev \ + git \ + # cleaning up unused files + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && rm -rf /var/lib/apt/lists/* + +# Requirements are installed here to ensure they will be cached. +COPY ./requirements /requirements + +# Update pip +RUN python -m pip install --upgrade pip + +# create python dependency wheels +RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels \ + -r /requirements/local.txt -r /requirements/production.txt \ + && rm -rf /requirements + + +# Python 'run' stage +FROM python as python-run-stage + +ARG BUILD_ENVIRONMENT +ENV PYTHONUNBUFFERED 1 +ENV PYTHONDONTWRITEBYTECODE 1 + +RUN apt-get update && apt-get install --no-install-recommends -y \ + # To run the Makefile + make \ + # psycopg2 dependencies + libpq-dev \ + # Translations dependencies + gettext \ + # Uncomment below lines to enable Sphinx output to latex and pdf + # texlive-latex-recommended \ + # texlive-fonts-recommended \ + # texlive-latex-extra \ + # latexmk \ + # cleaning up unused files + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && rm -rf /var/lib/apt/lists/* + +# copy python dependency wheels from python-build-stage +COPY --from=python-build-stage /usr/src/app/wheels /wheels + +# use wheels to install python dependencies +RUN pip install --no-cache /wheels/* \ + && rm -rf /wheels + +COPY ./compose/local/docs/start /start-docs +RUN sed -i 's/\r$//g' /start-docs +RUN chmod +x /start-docs + +WORKDIR /docs diff --git a/compose/local/docs/start b/compose/local/docs/start new file mode 100644 index 0000000..fd2e0de --- /dev/null +++ b/compose/local/docs/start @@ -0,0 +1,7 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + +make livehtml diff --git a/compose/production/django/Dockerfile b/compose/production/django/Dockerfile new file mode 100644 index 0000000..cfa4372 --- /dev/null +++ b/compose/production/django/Dockerfile @@ -0,0 +1,96 @@ +ARG PYTHON_VERSION=3.11-bullseye + +# define an alias for the specfic python version used in this file. +FROM python:${PYTHON_VERSION} as python + +# Python build stage +FROM python as python-build-stage + +ARG BUILD_ENVIRONMENT=production + +# Install apt packages +RUN apt-get update && apt-get install --no-install-recommends -y \ + # dependencies for building Python packages + git \ + build-essential \ + # psycopg2 dependencies + libpq-dev + +# Requirements are installed here to ensure they will be cached. +COPY ./requirements . + +# Update pip +RUN python -m pip install --upgrade pip + +# Create Python Dependency and Sub-Dependency Wheels. +RUN pip wheel --wheel-dir /usr/src/app/wheels \ + -r ${BUILD_ENVIRONMENT}.txt + + +# Python 'run' stage +FROM python as python-run-stage + +ARG BUILD_ENVIRONMENT=production +ARG APP_HOME=/app + +ENV PYTHONUNBUFFERED 1 +ENV PYTHONDONTWRITEBYTECODE 1 +ENV BUILD_ENV ${BUILD_ENVIRONMENT} + +WORKDIR ${APP_HOME} + +RUN addgroup --system django \ + && adduser --system --ingroup django django + + +# Install required system dependencies +RUN apt-get update && apt-get install --no-install-recommends -y \ + # psycopg2 dependencies + libpq-dev \ + # Translations dependencies + gettext \ + # cleaning up unused files + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ + && rm -rf /var/lib/apt/lists/* + +# All absolute dir copies ignore workdir instruction. All relative dir copies are wrt to the workdir instruction +# copy python dependency wheels from python-build-stage +COPY --from=python-build-stage /usr/src/app/wheels /wheels/ + +# use wheels to install python dependencies +RUN pip install --no-cache-dir --no-index --find-links=/wheels/ /wheels/* \ + && rm -rf /wheels/ + + +COPY --chown=django:django ./compose/production/django/entrypoint /entrypoint +RUN sed -i 's/\r$//g' /entrypoint +RUN chmod +x /entrypoint + + +COPY --chown=django:django ./compose/production/django/start /start +RUN sed -i 's/\r$//g' /start +RUN chmod +x /start +COPY --chown=django:django ./compose/production/django/celery/worker/start /start-celeryworker +RUN sed -i 's/\r$//g' /start-celeryworker +RUN chmod +x /start-celeryworker + + +COPY --chown=django:django ./compose/production/django/celery/beat/start /start-celerybeat +RUN sed -i 's/\r$//g' /start-celerybeat +RUN chmod +x /start-celerybeat + + +COPY ./compose/production/django/celery/flower/start /start-flower +RUN sed -i 's/\r$//g' /start-flower +RUN chmod +x /start-flower + + +# copy application code to WORKDIR +COPY --chown=django:django . ${APP_HOME} + +# make django owner of the WORKDIR directory as well. +RUN chown django:django ${APP_HOME} + +USER django + +ENTRYPOINT ["/entrypoint"] diff --git a/compose/production/django/celery/beat/start b/compose/production/django/celery/beat/start new file mode 100644 index 0000000..42ddca9 --- /dev/null +++ b/compose/production/django/celery/beat/start @@ -0,0 +1,8 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + + +exec celery -A config.celery_app beat -l INFO diff --git a/compose/production/django/celery/flower/start b/compose/production/django/celery/flower/start new file mode 100644 index 0000000..4180d67 --- /dev/null +++ b/compose/production/django/celery/flower/start @@ -0,0 +1,11 @@ +#!/bin/bash + +set -o errexit +set -o nounset + + +exec celery \ + -A config.celery_app \ + -b "${CELERY_BROKER_URL}" \ + flower \ + --basic_auth="${CELERY_FLOWER_USER}:${CELERY_FLOWER_PASSWORD}" diff --git a/compose/production/django/celery/worker/start b/compose/production/django/celery/worker/start new file mode 100644 index 0000000..af0c8f7 --- /dev/null +++ b/compose/production/django/celery/worker/start @@ -0,0 +1,8 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + + +exec celery -A config.celery_app worker -l INFO diff --git a/compose/production/django/entrypoint b/compose/production/django/entrypoint new file mode 100644 index 0000000..599841e --- /dev/null +++ b/compose/production/django/entrypoint @@ -0,0 +1,45 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + + + +# N.B. If only .env files supported variable expansion... +export CELERY_BROKER_URL="${REDIS_URL}" + + +if [ -z "${POSTGRES_USER}" ]; then + base_postgres_image_default_user='postgres' + export POSTGRES_USER="${base_postgres_image_default_user}" +fi +export DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}" + +postgres_ready() { +python << END +import sys + +import psycopg2 + +try: + psycopg2.connect( + dbname="${POSTGRES_DB}", + user="${POSTGRES_USER}", + password="${POSTGRES_PASSWORD}", + host="${POSTGRES_HOST}", + port="${POSTGRES_PORT}", + ) +except psycopg2.OperationalError: + sys.exit(-1) +sys.exit(0) + +END +} +until postgres_ready; do + >&2 echo 'Waiting for PostgreSQL to become available...' + sleep 1 +done +>&2 echo 'PostgreSQL is available' + +exec "$@" diff --git a/compose/production/django/start b/compose/production/django/start new file mode 100644 index 0000000..d9da8ea --- /dev/null +++ b/compose/production/django/start @@ -0,0 +1,29 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + + +python /app/manage.py collectstatic --noinput + +compress_enabled() { +python << END +import sys + +from environ import Env + +env = Env(COMPRESS_ENABLED=(bool, True)) +if env('COMPRESS_ENABLED'): + sys.exit(0) +else: + sys.exit(1) + +END +} + +if compress_enabled; then + # NOTE this command will fail if django-compressor is disabled + python /app/manage.py compress +fi +/usr/local/bin/gunicorn config.wsgi --bind 0.0.0.0:5000 --chdir=/app --timeout 1000 --workers 3 --worker-connections=1000 --worker-class=gevent diff --git a/compose/production/postgres/Dockerfile b/compose/production/postgres/Dockerfile new file mode 100644 index 0000000..aec0f7f --- /dev/null +++ b/compose/production/postgres/Dockerfile @@ -0,0 +1,6 @@ +FROM postgres:15.3 + +COPY ./compose/production/postgres/maintenance /usr/local/bin/maintenance +RUN chmod +x /usr/local/bin/maintenance/* +RUN mv /usr/local/bin/maintenance/* /usr/local/bin \ + && rmdir /usr/local/bin/maintenance diff --git a/compose/production/postgres/maintenance/_sourced/constants.sh b/compose/production/postgres/maintenance/_sourced/constants.sh new file mode 100644 index 0000000..6ca4f0c --- /dev/null +++ b/compose/production/postgres/maintenance/_sourced/constants.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + + +BACKUP_DIR_PATH='/backups' +BACKUP_FILE_PREFIX='backup' diff --git a/compose/production/postgres/maintenance/_sourced/countdown.sh b/compose/production/postgres/maintenance/_sourced/countdown.sh new file mode 100644 index 0000000..e6cbfb6 --- /dev/null +++ b/compose/production/postgres/maintenance/_sourced/countdown.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + + +countdown() { + declare desc="A simple countdown. Source: https://superuser.com/a/611582" + local seconds="${1}" + local d=$(($(date +%s) + "${seconds}")) + while [ "$d" -ge `date +%s` ]; do + echo -ne "$(date -u --date @$(($d - `date +%s`)) +%H:%M:%S)\r"; + sleep 0.1 + done +} diff --git a/compose/production/postgres/maintenance/_sourced/messages.sh b/compose/production/postgres/maintenance/_sourced/messages.sh new file mode 100644 index 0000000..f6be756 --- /dev/null +++ b/compose/production/postgres/maintenance/_sourced/messages.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash + + +message_newline() { + echo +} + +message_debug() +{ + echo -e "DEBUG: ${@}" +} + +message_welcome() +{ + echo -e "\e[1m${@}\e[0m" +} + +message_warning() +{ + echo -e "\e[33mWARNING\e[0m: ${@}" +} + +message_error() +{ + echo -e "\e[31mERROR\e[0m: ${@}" +} + +message_info() +{ + echo -e "\e[37mINFO\e[0m: ${@}" +} + +message_suggestion() +{ + echo -e "\e[33mSUGGESTION\e[0m: ${@}" +} + +message_success() +{ + echo -e "\e[32mSUCCESS\e[0m: ${@}" +} diff --git a/compose/production/postgres/maintenance/_sourced/yes_no.sh b/compose/production/postgres/maintenance/_sourced/yes_no.sh new file mode 100644 index 0000000..fd9cae1 --- /dev/null +++ b/compose/production/postgres/maintenance/_sourced/yes_no.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + + +yes_no() { + declare desc="Prompt for confirmation. \$\"\{1\}\": confirmation message." + local arg1="${1}" + + local response= + read -r -p "${arg1} (y/[n])? " response + if [[ "${response}" =~ ^[Yy]$ ]] + then + exit 0 + else + exit 1 + fi +} diff --git a/compose/production/postgres/maintenance/backup b/compose/production/postgres/maintenance/backup new file mode 100644 index 0000000..ee0c9d6 --- /dev/null +++ b/compose/production/postgres/maintenance/backup @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + + +### Create a database backup. +### +### Usage: +### $ docker-compose -f .yml (exec |run --rm) postgres backup + + +set -o errexit +set -o pipefail +set -o nounset + + +working_dir="$(dirname ${0})" +source "${working_dir}/_sourced/constants.sh" +source "${working_dir}/_sourced/messages.sh" + + +message_welcome "Backing up the '${POSTGRES_DB}' database..." + + +if [[ "${POSTGRES_USER}" == "postgres" ]]; then + message_error "Backing up as 'postgres' user is not supported. Assign 'POSTGRES_USER' env with another one and try again." + exit 1 +fi + +export PGHOST="${POSTGRES_HOST}" +export PGPORT="${POSTGRES_PORT}" +export PGUSER="${POSTGRES_USER}" +export PGPASSWORD="${POSTGRES_PASSWORD}" +export PGDATABASE="${POSTGRES_DB}" + +backup_filename="${BACKUP_FILE_PREFIX}_$(date +'%Y_%m_%dT%H_%M_%S').sql.gz" +pg_dump | gzip > "${BACKUP_DIR_PATH}/${backup_filename}" + + +message_success "'${POSTGRES_DB}' database backup '${backup_filename}' has been created and placed in '${BACKUP_DIR_PATH}'." diff --git a/compose/production/postgres/maintenance/backups b/compose/production/postgres/maintenance/backups new file mode 100644 index 0000000..0484ccf --- /dev/null +++ b/compose/production/postgres/maintenance/backups @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + + +### View backups. +### +### Usage: +### $ docker-compose -f .yml (exec |run --rm) postgres backups + + +set -o errexit +set -o pipefail +set -o nounset + + +working_dir="$(dirname ${0})" +source "${working_dir}/_sourced/constants.sh" +source "${working_dir}/_sourced/messages.sh" + + +message_welcome "These are the backups you have got:" + +ls -lht "${BACKUP_DIR_PATH}" diff --git a/compose/production/postgres/maintenance/restore b/compose/production/postgres/maintenance/restore new file mode 100644 index 0000000..9661ca7 --- /dev/null +++ b/compose/production/postgres/maintenance/restore @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + + +### Restore database from a backup. +### +### Parameters: +### <1> filename of an existing backup. +### +### Usage: +### $ docker-compose -f .yml (exec |run --rm) postgres restore <1> + + +set -o errexit +set -o pipefail +set -o nounset + + +working_dir="$(dirname ${0})" +source "${working_dir}/_sourced/constants.sh" +source "${working_dir}/_sourced/messages.sh" + + +if [[ -z ${1+x} ]]; then + message_error "Backup filename is not specified yet it is a required parameter. Make sure you provide one and try again." + exit 1 +fi +backup_filename="${BACKUP_DIR_PATH}/${1}" +if [[ ! -f "${backup_filename}" ]]; then + message_error "No backup with the specified filename found. Check out the 'backups' maintenance script output to see if there is one and try again." + exit 1 +fi + +message_welcome "Restoring the '${POSTGRES_DB}' database from the '${backup_filename}' backup..." + +if [[ "${POSTGRES_USER}" == "postgres" ]]; then + message_error "Restoring as 'postgres' user is not supported. Assign 'POSTGRES_USER' env with another one and try again." + exit 1 +fi + +export PGHOST="${POSTGRES_HOST}" +export PGPORT="${POSTGRES_PORT}" +export PGUSER="${POSTGRES_USER}" +export PGPASSWORD="${POSTGRES_PASSWORD}" +export PGDATABASE="${POSTGRES_DB}" + +message_info "Dropping the database..." +dropdb "${PGDATABASE}" + +message_info "Creating a new database..." +createdb --owner="${POSTGRES_USER}" + +message_info "Applying the backup to the new database..." +gunzip -c "${backup_filename}" | psql "${POSTGRES_DB}" + +message_success "The '${POSTGRES_DB}' database has been restored from the '${backup_filename}' backup." diff --git a/compose/production/traefik/Dockerfile b/compose/production/traefik/Dockerfile new file mode 100644 index 0000000..bdedff7 --- /dev/null +++ b/compose/production/traefik/Dockerfile @@ -0,0 +1,5 @@ +FROM traefik:2.10.3 +RUN mkdir -p /etc/traefik/acme \ + && touch /etc/traefik/acme/acme.json \ + && chmod 600 /etc/traefik/acme/acme.json +COPY ./compose/production/traefik/traefik.yml /etc/traefik diff --git a/compose/production/traefik/traefik.yml b/compose/production/traefik/traefik.yml new file mode 100644 index 0000000..510adc1 --- /dev/null +++ b/compose/production/traefik/traefik.yml @@ -0,0 +1,75 @@ +log: + level: INFO + +entryPoints: + web: + # http + address: ":80" + http: + # https://docs.traefik.io/routing/entrypoints/#entrypoint + redirections: + entryPoint: + to: web-secure + + web-secure: + # https + address: ":443" + + flower: + address: ":5555" + +certificatesResolvers: + letsencrypt: + # https://docs.traefik.io/master/https/acme/#lets-encrypt + acme: + email: "atta.jamil@innolabs.com.br" + storage: /etc/traefik/acme/acme.json + # https://docs.traefik.io/master/https/acme/#httpchallenge + httpChallenge: + entryPoint: web + +http: + routers: + web-secure-router: + rule: "Host(`example.com`) || Host(`www.example.com`)" + entryPoints: + - web-secure + middlewares: + - csrf + service: django + tls: + # https://docs.traefik.io/master/routing/routers/#certresolver + certResolver: letsencrypt + + flower-secure-router: + rule: "Host(`example.com`)" + entryPoints: + - flower + service: flower + tls: + # https://docs.traefik.io/master/routing/routers/#certresolver + certResolver: letsencrypt + + middlewares: + csrf: + # https://docs.traefik.io/master/middlewares/headers/#hostsproxyheaders + # https://docs.djangoproject.com/en/dev/ref/csrf/#ajax + headers: + hostsProxyHeaders: ["X-CSRFToken"] + + services: + django: + loadBalancer: + servers: + - url: http://django:5000 + + flower: + loadBalancer: + servers: + - url: http://flower:5555 + +providers: + # https://docs.traefik.io/master/providers/file/ + file: + filename: /etc/traefik/traefik.yml + watch: true diff --git a/config/__init__.py b/config/__init__.py new file mode 100644 index 0000000..10f5014 --- /dev/null +++ b/config/__init__.py @@ -0,0 +1,5 @@ +# This will make sure the app is always imported when +# Django starts so that shared_task will use this app. +from .celery_app import app as celery_app + +__all__ = ("celery_app",) diff --git a/config/api_router.py b/config/api_router.py new file mode 100644 index 0000000..93be311 --- /dev/null +++ b/config/api_router.py @@ -0,0 +1,11 @@ +from django.conf import settings +from rest_framework.routers import DefaultRouter, SimpleRouter + +app_name = "pid_provider" + +if settings.DEBUG: + router = DefaultRouter() +else: + router = SimpleRouter() + +urlpatterns = router.urls diff --git a/config/celery_app.py b/config/celery_app.py new file mode 100644 index 0000000..f821f5d --- /dev/null +++ b/config/celery_app.py @@ -0,0 +1,17 @@ +import os + +from celery import Celery + +# set the default Django settings module for the 'celery' program. +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.local") + +app = Celery("core") + +# Using a string here means the worker doesn't have to serialize +# the configuration object to child processes. +# - namespace='CELERY' means all celery-related configuration keys +# should have a `CELERY_` prefix. +app.config_from_object("django.conf:settings", namespace="CELERY") + +# Load task modules from all registered Django app configs. +app.autodiscover_tasks() diff --git a/config/menu.py b/config/menu.py new file mode 100644 index 0000000..1eb1f1b --- /dev/null +++ b/config/menu.py @@ -0,0 +1,9 @@ +WAGTAIL_MENU_APPS_ORDER = { +} + + +def get_menu_order(app_name): + try: + return WAGTAIL_MENU_APPS_ORDER[app_name] + except: + return 900 diff --git a/config/settings/__init__.py b/config/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/config/settings/base.py b/config/settings/base.py new file mode 100644 index 0000000..3e1c706 --- /dev/null +++ b/config/settings/base.py @@ -0,0 +1,432 @@ +""" +Base settings to build other settings files upon. +""" +from datetime import timedelta +from pathlib import Path + +import environ +from django.utils.translation import gettext_lazy as _ + +ROOT_DIR = Path(__file__).resolve(strict=True).parent.parent.parent +# core/ +APPS_DIR = ROOT_DIR / "core" +env = environ.Env() + +READ_DOT_ENV_FILE = env.bool("DJANGO_READ_DOT_ENV_FILE", default=False) +if READ_DOT_ENV_FILE: + # OS environment variables take precedence over variables from .env + env.read_env(str(ROOT_DIR / ".env")) + +# GENERAL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#debug +DEBUG = env.bool("DJANGO_DEBUG", False) +# Local time zone. Choices are +# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name +# though not all of them may be available with every OS. +# In Windows, this must be set to your system time zone. +TIME_ZONE = "UTC" +# https://docs.djangoproject.com/en/dev/ref/settings/#language-code +LANGUAGE_CODE = "pt-BR" +# https://docs.djangoproject.com/en/dev/ref/settings/#site-id +SITE_ID = 1 +# https://docs.djangoproject.com/en/dev/ref/settings/#use-i18n +USE_I18N = True +# https://docs.djangoproject.com/en/dev/ref/settings/#use-l10n +USE_L10N = True +# https://docs.djangoproject.com/en/dev/ref/settings/#use-tz +USE_TZ = True +# https://docs.djangoproject.com/en/dev/ref/settings/#locale-paths +LOCALE_PATHS = [str(ROOT_DIR / "locale")] + +# DATABASES +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#databases +DATABASES = {"default": env.db("DATABASE_URL")} +DATABASES["default"]["ATOMIC_REQUESTS"] = True +# https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-DEFAULT_AUTO_FIELD +DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" + +# URLS +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#root-urlconf +ROOT_URLCONF = "config.urls" +# https://docs.djangoproject.com/en/dev/ref/settings/#wsgi-application +WSGI_APPLICATION = "config.wsgi.application" + +# APPS +# ------------------------------------------------------------------------------ +# wagtail apps +WAGTAIL = [ + "core.home", + "core.search_site", + "wagtail.contrib.forms", + "wagtail.contrib.redirects", + "wagtail.contrib.modeladmin", + "wagtail_modeladmin", + "wagtail.contrib.simple_translation", + "wagtail_localize", + "wagtail_localize.modeladmin", + "wagtail.embeds", + "wagtail.sites", + "wagtail.users", + "wagtail.snippets", + "wagtail.documents", + "wagtail.images", + "wagtail.search", + "wagtail.admin", + "wagtail", + "wagtail.locales", + "wagtail.api.v2", + "wagtail.contrib.settings", + "wagtail.contrib.styleguide", + "wagtail.contrib.routable_page", + "modelcluster", + "taggit", +] + +DJANGO_APPS = [ + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.sessions", + "django.contrib.sites", + "django.contrib.messages", + "django.contrib.staticfiles", + "django.contrib.humanize", # Handy template tags + "django.contrib.admin", + "django.forms", + "django_celery_results", +] + +THIRD_PARTY_APPS = [ + "crispy_forms", + "crispy_bootstrap5", + "allauth", + "allauth.account", + "allauth.socialaccount", + "django_celery_beat", + "captcha", + "wagtailautocomplete", + "wagtailcaptcha", + "wagtailmenus", + "rest_framework", + "haystack", +] + +LOCAL_APPS = [ + "core.users", + "core_settings", + # Your stuff: custom apps go here + "collection", + "core", + "log_manager", + "tracker", +] + +# https://docs.djangoproject.com/en/dev/ref/settings/#installed-apps +INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS + WAGTAIL + +# MIGRATIONS +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#migration-modules +MIGRATION_MODULES = {"sites": "core.contrib.sites.migrations"} + +# AUTHENTICATION +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#authentication-backends +AUTHENTICATION_BACKENDS = [ + "django.contrib.auth.backends.ModelBackend", + "allauth.account.auth_backends.AuthenticationBackend", +] +# https://docs.djangoproject.com/en/dev/ref/settings/#auth-user-model +AUTH_USER_MODEL = "users.User" +# https://docs.djangoproject.com/en/dev/ref/settings/#login-redirect-url +LOGIN_REDIRECT_URL = "users:redirect" +# https://docs.djangoproject.com/en/dev/ref/settings/#login-url +LOGIN_URL = "account_login" + +# PASSWORDS +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#password-hashers +PASSWORD_HASHERS = [ + # https://docs.djangoproject.com/en/dev/topics/auth/passwords/#using-argon2-with-django + "django.contrib.auth.hashers.Argon2PasswordHasher", + "django.contrib.auth.hashers.PBKDF2PasswordHasher", + "django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher", + "django.contrib.auth.hashers.BCryptSHA256PasswordHasher", +] +# https://docs.djangoproject.com/en/dev/ref/settings/#auth-password-validators +AUTH_PASSWORD_VALIDATORS = [ + { + "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator" + }, + {"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator"}, + {"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator"}, + {"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator"}, +] + +# MIDDLEWARE +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#middleware +MIDDLEWARE = [ + "django.middleware.security.SecurityMiddleware", + "whitenoise.middleware.WhiteNoiseMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.locale.LocaleMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.common.BrokenLinkEmailsMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", + "wagtail.contrib.redirects.middleware.RedirectMiddleware", + "allauth.account.middleware.AccountMiddleware", +] + +# STATIC +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#static-root +STATIC_ROOT = str(ROOT_DIR / "staticfiles") +# https://docs.djangoproject.com/en/dev/ref/settings/#static-url +STATIC_URL = "/static/" +# https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS +STATICFILES_DIRS = [str(APPS_DIR / "static")] +# https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#staticfiles-finders +STATICFILES_FINDERS = [ + "django.contrib.staticfiles.finders.FileSystemFinder", + "django.contrib.staticfiles.finders.AppDirectoriesFinder", +] + +# MEDIA +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#media-root +MEDIA_ROOT = str(APPS_DIR / "media/") +# https://docs.djangoproject.com/en/dev/ref/settings/#media-url +MEDIA_URL = "/media/" + +# TEMPLATES +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#templates +TEMPLATES = [ + { + # https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEMPLATES-BACKEND + "BACKEND": "django.template.backends.django.DjangoTemplates", + # https://docs.djangoproject.com/en/dev/ref/settings/#dirs + "DIRS": [str(APPS_DIR / "templates")], + # https://docs.djangoproject.com/en/dev/ref/settings/#app-dirs + "APP_DIRS": True, + "OPTIONS": { + # https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors + "context_processors": [ + "django.template.context_processors.debug", + "django.template.context_processors.request", + "django.contrib.auth.context_processors.auth", + "django.template.context_processors.i18n", + "django.template.context_processors.media", + "django.template.context_processors.static", + "django.template.context_processors.tz", + "django.contrib.messages.context_processors.messages", + "core.users.context_processors.allauth_settings", + "wagtail.contrib.settings.context_processors.settings", + "wagtailmenus.context_processors.wagtailmenus", + ], + }, + } +] + +# https://docs.djangoproject.com/en/dev/ref/settings/#form-renderer +FORM_RENDERER = "django.forms.renderers.TemplatesSetting" + +# http://django-crispy-forms.readthedocs.io/en/latest/install.html#template-packs +CRISPY_TEMPLATE_PACK = "bootstrap5" +CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5" + +# FIXTURES +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#fixture-dirs +FIXTURE_DIRS = (str(APPS_DIR / "fixtures"),) + +# SECURITY +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-httponly +SESSION_COOKIE_HTTPONLY = True +# https://docs.djangoproject.com/en/dev/ref/settings/#csrf-cookie-httponly +CSRF_COOKIE_HTTPONLY = True +# https://docs.djangoproject.com/en/dev/ref/settings/#secure-browser-xss-filter +SECURE_BROWSER_XSS_FILTER = True +# https://docs.djangoproject.com/en/dev/ref/settings/#x-frame-options +X_FRAME_OPTIONS = "DENY" + +# EMAIL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#email-backend +EMAIL_BACKEND = env( + "DJANGO_EMAIL_BACKEND", + default="django.core.mail.backends.smtp.EmailBackend", +) +# https://docs.djangoproject.com/en/dev/ref/settings/#email-timeout +EMAIL_TIMEOUT = 5 + +# ADMIN +# ------------------------------------------------------------------------------ +# Django Admin URL +DJANGO_ADMIN_URL = "django-admin/" +WAGTAIL_ADMIN_URL = "admin/" +# https://docs.djangoproject.com/en/dev/ref/settings/#admins +ADMINS = [ + ("""Rafael JP Damaceno""", "contato@pitangainnovare.com.br"), + ("""Jamil Atta Junior""", "atta.jamil@innolabs.com.br") +] +# https://docs.djangoproject.com/en/dev/ref/settings/#managers +MANAGERS = ADMINS + +# LOGGING +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#logging +# See https://docs.djangoproject.com/en/dev/topics/logging for +# more details on how to customize your logging configuration. +LOGGING = { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "verbose": { + "format": "%(levelname)s %(asctime)s %(module)s " + "%(process)d %(thread)d %(message)s" + } + }, + "handlers": { + "console": { + "level": "DEBUG", + "class": "logging.StreamHandler", + "formatter": "verbose", + } + }, + "root": {"level": "INFO", "handlers": ["console"]}, +} + +# Celery +# ------------------------------------------------------------------------------ +if USE_TZ: + # http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-timezone + CELERY_TIMEZONE = TIME_ZONE +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-broker_url +CELERY_BROKER_URL = env("CELERY_BROKER_URL") +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-result_backend +CELERY_RESULT_BACKEND = CELERY_BROKER_URL +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-accept_content +CELERY_ACCEPT_CONTENT = ["json"] +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-task_serializer +CELERY_TASK_SERIALIZER = "json" +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#std:setting-result_serializer +CELERY_RESULT_SERIALIZER = "json" +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-time-limit +# TODO: set to whatever value is adequate in your circumstances +CELERY_TASK_TIME_LIMIT = 5 * 60 +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-soft-time-limit +# TODO: set to whatever value is adequate in your circumstances +CELERY_TASK_SOFT_TIME_LIMIT = 36000 +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#beat-scheduler +CELERY_BEAT_SCHEDULER = "django_celery_beat.schedulers:DatabaseScheduler" +# http://docs.celeryproject.org/en/latest/userguide/configuration.html +DJANGO_CELERY_BEAT_TZ_AWARE = False + +# Celery Results +# ------------------------------------------------------------------------------ +# https: // django-celery-results.readthedocs.io/en/latest/getting_started.html +CELERY_RESULT_BACKEND = "django-db" +CELERY_CACHE_BACKEND = "django-cache" +CELERY_RESULT_EXTENDED = True + +# django-allauth +# ------------------------------------------------------------------------------ +ACCOUNT_ALLOW_REGISTRATION = env.bool("DJANGO_ACCOUNT_ALLOW_REGISTRATION", True) +# https://django-allauth.readthedocs.io/en/latest/configuration.html +ACCOUNT_AUTHENTICATION_METHOD = "username" +# https://django-allauth.readthedocs.io/en/latest/configuration.html +ACCOUNT_EMAIL_REQUIRED = True +# https://django-allauth.readthedocs.io/en/latest/configuration.html +ACCOUNT_EMAIL_VERIFICATION = "mandatory" +# https://django-allauth.readthedocs.io/en/latest/configuration.html +ACCOUNT_ADAPTER = "core.users.adapters.AccountAdapter" +# https://django-allauth.readthedocs.io/en/latest/forms.html +ACCOUNT_FORMS = {"signup": "core.users.forms.UserSignupForm"} +# https://django-allauth.readthedocs.io/en/latest/configuration.html +SOCIALACCOUNT_ADAPTER = "core.users.adapters.SocialAccountAdapter" +# https://django-allauth.readthedocs.io/en/latest/forms.html +SOCIALACCOUNT_FORMS = {"signup": "core.users.forms.UserSocialSignupForm"} +# django-compressor +# ------------------------------------------------------------------------------ +# https://django-compressor.readthedocs.io/en/latest/quickstart/#installation +INSTALLED_APPS += ["compressor"] +STATICFILES_FINDERS += ["compressor.finders.CompressorFinder"] + +# Your stuff... +WAGTAIL_SITE_NAME = "SciELO Usage Framework" + +LANGUAGES = [ + ("en", "English"), + ("es", "Spanish"), + ("pt-BR", "Portuguese"), +] + +WAGTAIL_I18N_ENABLED = True + +WAGTAIL_CONTENT_LANGUAGES = [ + ("en", "English"), + ("es", "Spanish"), + ("pt-BR", "Portuguese"), +] + +NOCAPTCHA = True + +RECAPTCHA_PUBLIC_KEY = env.str("RECAPTCHA_PUBLIC_KEY", default="") +RECAPTCHA_PRIVATE_KEY = env.str("RECAPTCHA_PRIVATE_KEY", default="") + +# django rest-framework +# ------------------------------------------------------------------------------ +REST_FRAMEWORK = { + "DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination", + "PAGE_SIZE": env.int("DRF_PAGE_SIZE", default=10), + "DEFAULT_AUTHENTICATION_CLASSES": ( + "rest_framework_simplejwt.authentication.JWTAuthentication", + ), +} + +# JWT +# ------------------------------------------------------------------------------ +SIMPLE_JWT = { + "AUTH_HEADER_TYPES": ("Bearer",), + "ACCESS_TOKEN_LIFETIME": timedelta(minutes=60), + "REFRESH_TOKEN_LIFETIME": timedelta(days=1), +} + +# django haystack +# ------------------------------------------------------------------------------ +HAYSTACK_CONNECTIONS = { + "default": { + "ENGINE": "haystack.backends.solr_backend.SolrEngine", + "URL": "%s%s" % (env("SOLR_URL", default="http://solr:8983/solr/"), "usage"), + "ADMIN_URL": "http://solr:8983/solr/admin/cores", + "SILENTLY_FAIL": False, + "SOLR_TIMEOUT": 10, + }, +} + +HAYSTACK_ROUTERS = [ + "core.routers.UpdateEverythingRouter", +] + +USE_SOLR = env.bool("USE_SOLR", default=False) + +if USE_SOLR: + HAYSTACK_SIGNAL_PROCESSOR = "haystack.signals.RealtimeSignalProcessor" + +SEARCH_PAGINATION_ITEMS_PER_PAGE = 10 + +SEARCH_FACET_ITEMS_PER_MORE = 5 + +SEARCH_FACET_LIST = [ + "server_time", + "action_name", + "browser_name", +] diff --git a/config/settings/local.py b/config/settings/local.py new file mode 100644 index 0000000..9934638 --- /dev/null +++ b/config/settings/local.py @@ -0,0 +1,73 @@ +from .base import * # noqa +from .base import env + +# GENERAL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#debug +DEBUG = True +# https://docs.djangoproject.com/en/dev/ref/settings/#secret-key +SECRET_KEY = env( + "DJANGO_SECRET_KEY", + default="FMiraeekXCSl3zHfg7D4oHx7ufT46HRnwnsawKgTCC53BYajVkVzb8HhOvBOHakR", +) +# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts +ALLOWED_HOSTS = ["localhost", "0.0.0.0", "127.0.0.1", "dev-core.scielo.br"] + +# CACHES +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#caches +CACHES = { + "default": { + "BACKEND": "django.core.cache.backends.locmem.LocMemCache", + "LOCATION": "", + } +} + +# EMAIL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#email-host +EMAIL_HOST = env("EMAIL_HOST", default="mailhog") +# https://docs.djangoproject.com/en/dev/ref/settings/#email-port +EMAIL_PORT = 1025 + +# ADMIN +# ------------------------------------------------------------------------------ +# https://docs.wagtail.org/en/stable/reference/settings.html#wagtailadmin-base-url +WAGTAILADMIN_BASE_URL = 'https://usage.scielo.org' + +# WhiteNoise +# ------------------------------------------------------------------------------ +# http://whitenoise.evans.io/en/latest/django.html#using-whitenoise-in-development +INSTALLED_APPS = ["whitenoise.runserver_nostatic"] + INSTALLED_APPS # noqa F405 + + +# django-debug-toolbar +# ------------------------------------------------------------------------------ +# https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#prerequisites +INSTALLED_APPS += ["debug_toolbar"] # noqa F405 +# https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#middleware +MIDDLEWARE += ["debug_toolbar.middleware.DebugToolbarMiddleware"] # noqa F405 +# https://django-debug-toolbar.readthedocs.io/en/latest/configuration.html#debug-toolbar-config +DEBUG_TOOLBAR_CONFIG = { + "DISABLE_PANELS": ["debug_toolbar.panels.redirects.RedirectsPanel"], + "SHOW_TEMPLATE_CONTEXT": True, +} +# https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#internal-ips +INTERNAL_IPS = ["127.0.0.1", "10.0.2.2"] +if env("USE_DOCKER") == "yes": + import socket + + hostname, _, ips = socket.gethostbyname_ex(socket.gethostname()) + INTERNAL_IPS += [".".join(ip.split(".")[:-1] + ["1"]) for ip in ips] + +# django-extensions +# ------------------------------------------------------------------------------ +# https://django-extensions.readthedocs.io/en/latest/installation_instructions.html#configuration +INSTALLED_APPS += ["django_extensions"] # noqa F405 +# Celery +# ------------------------------------------------------------------------------ + +# http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-eager-propagates +CELERY_TASK_EAGER_PROPAGATES = True +# Your stuff... +# ------------------------------------------------------------------------------ diff --git a/config/settings/production.py b/config/settings/production.py new file mode 100644 index 0000000..1bf5a98 --- /dev/null +++ b/config/settings/production.py @@ -0,0 +1,203 @@ +import logging + +import sentry_sdk +from sentry_sdk.integrations.celery import CeleryIntegration +from sentry_sdk.integrations.django import DjangoIntegration +from sentry_sdk.integrations.logging import LoggingIntegration +from sentry_sdk.integrations.redis import RedisIntegration + +from .base import * # noqa +from .base import env + +# GENERAL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#secret-key +SECRET_KEY = env("DJANGO_SECRET_KEY") +# https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts +ALLOWED_HOSTS = env.list("DJANGO_ALLOWED_HOSTS", default=["example.com"]) + +# DATABASES +# ------------------------------------------------------------------------------ +DATABASES["default"] = env.db("DATABASE_URL") # noqa F405 +DATABASES["default"]["ATOMIC_REQUESTS"] = True # noqa F405 +DATABASES["default"]["CONN_MAX_AGE"] = env.int("CONN_MAX_AGE", default=60) # noqa F405 + +# CACHES +# ------------------------------------------------------------------------------ +CACHES = { + "default": { + "BACKEND": "django_redis.cache.RedisCache", + "LOCATION": env("REDIS_URL"), + "OPTIONS": { + "CLIENT_CLASS": "django_redis.client.DefaultClient", + # Mimicing memcache behavior. + # https://github.com/jazzband/django-redis#memcached-exceptions-behavior + "IGNORE_EXCEPTIONS": True, + }, + } +} + +# SECURITY +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#secure-proxy-ssl-header +SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") +# https://docs.djangoproject.com/en/dev/ref/settings/#secure-ssl-redirect +SECURE_SSL_REDIRECT = env.bool("DJANGO_SECURE_SSL_REDIRECT", default=True) +# https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-secure +SESSION_COOKIE_SECURE = True +# https://docs.djangoproject.com/en/dev/ref/settings/#csrf-cookie-secure +CSRF_COOKIE_SECURE = True +# https://docs.djangoproject.com/en/dev/topics/security/#ssl-https +# https://docs.djangoproject.com/en/dev/ref/settings/#secure-hsts-seconds +# TODO: set this to 60 seconds first and then to 518400 once you prove the former works +SECURE_HSTS_SECONDS = 60 +# https://docs.djangoproject.com/en/dev/ref/settings/#secure-hsts-include-subdomains +SECURE_HSTS_INCLUDE_SUBDOMAINS = env.bool( + "DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS", default=True +) +# https://docs.djangoproject.com/en/dev/ref/settings/#secure-hsts-preload +SECURE_HSTS_PRELOAD = env.bool("DJANGO_SECURE_HSTS_PRELOAD", default=True) +# https://docs.djangoproject.com/en/dev/ref/middleware/#x-content-type-options-nosniff +SECURE_CONTENT_TYPE_NOSNIFF = env.bool( + "DJANGO_SECURE_CONTENT_TYPE_NOSNIFF", default=True +) + +# STATIC +# ------------------------ +STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage" +# MEDIA +# ------------------------------------------------------------------------------ + +# EMAIL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#default-from-email +DEFAULT_FROM_EMAIL = env( + "DJANGO_DEFAULT_FROM_EMAIL", + default="SciELO Content Manager ", +) + +# https://docs.djangoproject.com/en/dev/ref/settings/#server-email +SERVER_EMAIL = env("DJANGO_SERVER_EMAIL", default=DEFAULT_FROM_EMAIL) + +# https://docs.djangoproject.com/en/dev/ref/settings/#std-setting-EMAIL_HOST +EMAIL_HOST = env.str("DJANGO_EMAIL_HOST", default="mailrelay.scielo.org") + +# https://docs.djangoproject.com/en/dev/ref/settings/#email-port +EMAIL_PORT = env.int("DJANGO_EMAIL_PORT", default=25) + +# https://docs.djangoproject.com/en/dev/ref/settings/#email-host-user +EMAIL_HOST_USER = env.str("DJANGO_EMAIL_HOST_USER", default="suporte.aplicacao@scielo.org") + +# https://docs.djangoproject.com/en/dev/ref/settings/#std-setting-EMAIL_HOST_PASSWORD +EMAIL_HOST_PASSWORD = env.str("DJANGO_EMAIL_HOST_PASSWORD", default="") + +# https://docs.djangoproject.com/en/dev/ref/settings/#email-use-tls +EMAIL_USE_TLS = env.bool("DJANGO_EMAIL_USE_TLS", default=False) + +# https://docs.djangoproject.com/en/dev/ref/settings/#email-use-ssl +EMAIL_USE_SSL = env.bool("DJANGO_EMAIL_USE_SSL", default=False) +# https://docs.djangoproject.com/en/dev/ref/settings/#email-subject-prefix +EMAIL_SUBJECT_PREFIX = env( + "DJANGO_EMAIL_SUBJECT_PREFIX", + default="[SciELO Content Manager ]", +) + +# ADMIN +# ------------------------------------------------------------------------------ +# Admin URL regex. +DJANGO_ADMIN_URL = env("DJANGO_ADMIN_URL") +# https://docs.wagtail.org/en/stable/reference/settings.html#wagtailadmin-base-url +WAGTAILADMIN_BASE_URL = env("WAGTAIL_ADMIN_URL") + +# Anymail +# ------------------------------------------------------------------------------ +# https://anymail.readthedocs.io/en/stable/installation/#installing-anymail +INSTALLED_APPS += ["anymail"] # noqa F405 +# https://docs.djangoproject.com/en/dev/ref/settings/#email-backend +# https://anymail.readthedocs.io/en/stable/installation/#anymail-settings-reference +# https://anymail.readthedocs.io/en/stable/esps +EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" +ANYMAIL = {} + +# django-compressor +# ------------------------------------------------------------------------------ +# https://django-compressor.readthedocs.io/en/latest/settings/#django.conf.settings.COMPRESS_ENABLED +COMPRESS_ENABLED = env.bool("COMPRESS_ENABLED", default=True) +# https://django-compressor.readthedocs.io/en/latest/settings/#django.conf.settings.COMPRESS_STORAGE +COMPRESS_STORAGE = "compressor.storage.GzipCompressorFileStorage" +# https://django-compressor.readthedocs.io/en/latest/settings/#django.conf.settings.COMPRESS_URL +COMPRESS_URL = STATIC_URL # noqa F405 +# https://django-compressor.readthedocs.io/en/latest/settings/#django.conf.settings.COMPRESS_OFFLINE +COMPRESS_OFFLINE = True # Offline compression is required when using Whitenoise +# https://django-compressor.readthedocs.io/en/latest/settings/#django.conf.settings.COMPRESS_FILTERS +COMPRESS_FILTERS = { + "css": [ + "compressor.filters.css_default.CssAbsoluteFilter", + "compressor.filters.cssmin.rCSSMinFilter", + ], + "js": ["compressor.filters.jsmin.JSMinFilter"], +} + +# LOGGING +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#logging +# See https://docs.djangoproject.com/en/dev/topics/logging for +# more details on how to customize your logging configuration. + +LOGGING = { + "version": 1, + "disable_existing_loggers": True, + "formatters": { + "verbose": { + "format": "%(levelname)s %(asctime)s %(module)s " + "%(process)d %(thread)d %(message)s" + } + }, + "handlers": { + "console": { + "level": "DEBUG", + "class": "logging.StreamHandler", + "formatter": "verbose", + } + }, + "root": {"level": "INFO", "handlers": ["console"]}, + "loggers": { + "django.db.backends": { + "level": "ERROR", + "handlers": ["console"], + "propagate": False, + }, + # Errors logged by the SDK itself + "sentry_sdk": {"level": "ERROR", "handlers": ["console"], "propagate": False}, + "django.security.DisallowedHost": { + "level": "ERROR", + "handlers": ["console"], + "propagate": False, + }, + }, +} + +# Sentry +# ------------------------------------------------------------------------------ +SENTRY_DSN = env("SENTRY_DSN") +SENTRY_LOG_LEVEL = env.int("DJANGO_SENTRY_LOG_LEVEL", logging.INFO) + +sentry_logging = LoggingIntegration( + level=SENTRY_LOG_LEVEL, # Capture info and above as breadcrumbs + event_level=logging.ERROR, # Send errors as events +) +integrations = [ + sentry_logging, + DjangoIntegration(), + CeleryIntegration(), + RedisIntegration(), +] +sentry_sdk.init( + dsn=SENTRY_DSN, + integrations=integrations, + environment=env("SENTRY_ENVIRONMENT", default="production"), + traces_sample_rate=env.float("SENTRY_TRACES_SAMPLE_RATE", default=0.0), +) + +# Your stuff... +# ------------------------------------------------------------------------------ diff --git a/config/settings/test.py b/config/settings/test.py new file mode 100644 index 0000000..9d9cf4e --- /dev/null +++ b/config/settings/test.py @@ -0,0 +1,30 @@ +""" +With these settings, tests run faster. +""" + +from .base import * # noqa +from .base import env + +# GENERAL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#secret-key +SECRET_KEY = env( + "DJANGO_SECRET_KEY", + default="JCdu8AJoOrqwEDMSrlEzblnEsTCLLPtETlZOrRBMbZXWsjEh2rGmcMIQ5K4BA9wg", +) + +# https://docs.djangoproject.com/en/dev/ref/settings/#test-runner +TEST_RUNNER = "django.test.runner.DiscoverRunner" + +# PASSWORDS +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#password-hashers +PASSWORD_HASHERS = ["django.contrib.auth.hashers.MD5PasswordHasher"] + +# EMAIL +# ------------------------------------------------------------------------------ +# https://docs.djangoproject.com/en/dev/ref/settings/#email-backend +EMAIL_BACKEND = "django.core.mail.backends.locmem.EmailBackend" + +# Your stuff... +# ------------------------------------------------------------------------------ diff --git a/config/urls.py b/config/urls.py new file mode 100644 index 0000000..642745f --- /dev/null +++ b/config/urls.py @@ -0,0 +1,62 @@ +from django.conf import settings +from django.conf.urls.i18n import i18n_patterns +from django.conf.urls.static import static +from django.contrib import admin +from django.urls import include, path, re_path +from django.views import defaults as default_views +from wagtail import urls as wagtail_urls +from wagtail.admin import urls as wagtailadmin_urls +from wagtail.documents import urls as wagtaildocs_urls +from wagtailautocomplete.urls.admin import urlpatterns as autocomplete_admin_urls + +from core.api.wagtail.api import api_router + + +urlpatterns = [ + path("admin/autocomplete/", include(autocomplete_admin_urls)), + path(settings.DJANGO_ADMIN_URL, admin.site.urls), + # Wagtail Admin + path(settings.WAGTAIL_ADMIN_URL, include(wagtailadmin_urls)), + re_path(r"^documents/", include(wagtaildocs_urls)), +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + +# Translatable URLs +# These will be available under a language code prefix. For example /en/search/ +urlpatterns += i18n_patterns( + # User management + path("users/", include("core.users.urls", namespace="users")), + path("i18n/", include("django.conf.urls.i18n")), + path("", include("allauth.urls")), + path("", include(wagtail_urls)), +) + +if settings.DEBUG: + # Wagtail settings: Serve static and media files from development server + from django.contrib.staticfiles.urls import staticfiles_urlpatterns + + urlpatterns += staticfiles_urlpatterns() + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + # This allows the error pages to be debugged during development, just visit + # these url in browser to see how these error pages look like. + urlpatterns += [ + path( + "400/", + default_views.bad_request, + kwargs={"exception": Exception("Bad Request!")}, + ), + path( + "403/", + default_views.permission_denied, + kwargs={"exception": Exception("Permission Denied")}, + ), + path( + "404/", + default_views.page_not_found, + kwargs={"exception": Exception("Page not Found")}, + ), + path("500/", default_views.server_error), + ] + if "debug_toolbar" in settings.INSTALLED_APPS: + import debug_toolbar + + urlpatterns = [path("__debug__/", include(debug_toolbar.urls))] + urlpatterns diff --git a/config/wsgi.py b/config/wsgi.py new file mode 100644 index 0000000..d5d36cf --- /dev/null +++ b/config/wsgi.py @@ -0,0 +1,38 @@ +""" +WSGI config for SciELO Content Manager project. + +This module contains the WSGI application used by Django's development server +and any production WSGI deployments. It should expose a module-level variable +named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover +this application via the ``WSGI_APPLICATION`` setting. + +Usually you will have the standard Django WSGI application here, but it also +might make sense to replace the whole Django WSGI application with a custom one +that later delegates to the Django one. For example, you could introduce WSGI +middleware here, or combine a Django application with an application of another +framework. + +""" +import os +import sys +from pathlib import Path + +from django.core.wsgi import get_wsgi_application + +# This allows easy placement of apps within the interior +# core directory. +ROOT_DIR = Path(__file__).resolve(strict=True).parent.parent +sys.path.append(str(ROOT_DIR / "core")) +# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks +# if running multiple sites in the same mod_wsgi process. To fix this, use +# mod_wsgi daemon mode with each site in its own daemon process, or use +# os.environ["DJANGO_SETTINGS_MODULE"] = "config.settings.production" +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.production") + +# This application object is used by any WSGI server configured to use this +# file. This includes Django's development server, if the WSGI_APPLICATION +# setting points here. +application = get_wsgi_application() +# Apply WSGI middleware here. +# from helloworld.wsgi import HelloWorldApplication +# application = HelloWorldApplication(application) diff --git a/core/__init__.py b/core/__init__.py new file mode 100644 index 0000000..e1d8615 --- /dev/null +++ b/core/__init__.py @@ -0,0 +1,7 @@ +__version__ = "0.1.0" +__version_info__ = tuple( + [ + int(num) if num.isdigit() else num + for num in __version__.replace("-", ".", 1).split(".") + ] +) diff --git a/core/api/__init__.py b/core/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/api/v1/__init__.py b/core/api/v1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/api/v1/serializers.py b/core/api/v1/serializers.py new file mode 100644 index 0000000..ccb2f26 --- /dev/null +++ b/core/api/v1/serializers.py @@ -0,0 +1,24 @@ +from rest_framework import serializers + +from core.models import Language, License + + +class LanguageSerializer(serializers.ModelSerializer): + class Meta: + model = Language + fields = [ + "code2", + ] + datatables_always_serialize = ("id",) + + +class LicenseSerializer(serializers.ModelSerializer): + language = LanguageSerializer(many=False, read_only=True) + + class Meta: + model = License + fields = [ + "url", + "license_p", + "language", + ] diff --git a/core/api/wagtail/api.py b/core/api/wagtail/api.py new file mode 100644 index 0000000..4e1ecfa --- /dev/null +++ b/core/api/wagtail/api.py @@ -0,0 +1,15 @@ +from wagtail.api.v2.router import WagtailAPIRouter +from wagtail.api.v2.views import PagesAPIViewSet +from wagtail.documents.api.v2.views import DocumentsAPIViewSet +from wagtail.images.api.v2.views import ImagesAPIViewSet + +# Create the router. "wagtailapi" is the URL namespace +api_router = WagtailAPIRouter("wagtailapi") + +# Add the three endpoints using the "register_endpoint" method. +# The first parameter is the name of the endpoint (eg. pages, images). This +# is used in the URL of the endpoint +# The second parameter is the endpoint class that handles the requests +api_router.register_endpoint("pages", PagesAPIViewSet) +api_router.register_endpoint("images", ImagesAPIViewSet) +api_router.register_endpoint("documents", DocumentsAPIViewSet) diff --git a/core/choices.py b/core/choices.py new file mode 100644 index 0000000..d09d4fb --- /dev/null +++ b/core/choices.py @@ -0,0 +1,222 @@ +from django.utils.translation import gettext_lazy as _ + +LANGUAGE = [ + ("aa", "Afar"), + ("af", "Afrikaans"), + ("ak", "Akan"), + ("sq", "Albanian"), + ("am", "Amharic"), + ("ar", "Arabic"), + ("an", "Aragonese"), + ("hy", "Armenian"), + ("as", "Assamese"), + ("av", "Avaric"), + ("ae", "Avestan"), + ("ay", "Aymara"), + ("az", "Azerbaijani"), + ("bm", "Bambara"), + ("ba", "Bashkir"), + ("eu", "Basque"), + ("be", "Belarusian"), + ("bn", "Bengali"), + ("bi", "Bislama"), + ("bs", "Bosnian"), + ("br", "Breton"), + ("bg", "Bulgarian"), + ("my", "Burmese"), + ("ca", "Catalan, Valencian"), + ("ch", "Chamorro"), + ("ce", "Chechen"), + ("ny", "Chichewa, Chewa, Nyanja"), + ("zh", "Chinese"), + ( + "cu", + "Church Slavic, Old Slavonic, Church Slavonic, Old Bulgarian, Old Church Slavonic", + ), + ("cv", "Chuvash"), + ("kw", "Cornish"), + ("co", "Corsican"), + ("cr", "Cree"), + ("hr", "Croatian"), + ("cs", "Czech"), + ("da", "Danish"), + ("dv", "Divehi, Dhivehi, Maldivian"), + ("nl", "Dutch, Flemish"), + ("dz", "Dzongkha"), + ("en", "English"), + ("eo", "Esperanto"), + ("et", "Estonian"), + ("ee", "Ewe"), + ("fo", "Faroese"), + ("fj", "Fijian"), + ("fi", "Finnish"), + ("fr", "French"), + ("fy", "Western Frisian"), + ("ff", "Fulah"), + ("gd", "Gaelic, Scottish Gaelic"), + ("gl", "Galician"), + ("lg", "Ganda"), + ("ka", "Georgian"), + ("de", "German"), + ("el", "Greek, Modern (1453–)"), + ("kl", "Kalaallisut, Greenlandic"), + ("gn", "Guarani"), + ("gu", "Gujarati"), + ("ht", "Haitian, Haitian Creole"), + ("ha", "Hausa"), + ("he", "Hebrew"), + ("hz", "Herero"), + ("hi", "Hindi"), + ("ho", "Hiri Motu"), + ("hu", "Hungarian"), + ("is", "Icelandic"), + ("io", "Ido"), + ("ig", "Igbo"), + ("id", "Indonesian"), + ("ia", "Interlingua (International Auxiliary Language Association)"), + ("ie", "Interlingue, Occidental"), + ("iu", "Inuktitut"), + ("ik", "Inupiaq"), + ("ga", "Irish"), + ("it", "Italian"), + ("ja", "Japanese"), + ("jv", "Javanese"), + ("kn", "Kannada"), + ("kr", "Kanuri"), + ("ks", "Kashmiri"), + ("kk", "Kazakh"), + ("km", "Central Khmer"), + ("ki", "Kikuyu, Gikuyu"), + ("rw", "Kinyarwanda"), + ("ky", "Kirghiz, Kyrgyz"), + ("kv", "Komi"), + ("kg", "Kongo"), + ("ko", "Korean"), + ("kj", "Kuanyama, Kwanyama"), + ("ku", "Kurdish"), + ("lo", "Lao"), + ("la", "Latin"), + ("lv", "Latvian"), + ("li", "Limburgan, Limburger, Limburgish"), + ("ln", "Lingala"), + ("lt", "Lithuanian"), + ("lu", "Luba-Katanga"), + ("lb", "Luxembourgish, Letzeburgesch"), + ("mk", "Macedonian"), + ("mg", "Malagasy"), + ("ms", "Malay"), + ("ml", "Malayalam"), + ("mt", "Maltese"), + ("gv", "Manx"), + ("mi", "Maori"), + ("mr", "Marathi"), + ("mh", "Marshallese"), + ("mn", "Mongolian"), + ("na", "Nauru"), + ("nv", "Navajo, Navaho"), + ("nd", "North Ndebele"), + ("nr", "South Ndebele"), + ("ng", "Ndonga"), + ("ne", "Nepali"), + ("no", "Norwegian"), + ("nb", "Norwegian Bokmål"), + ("nn", "Norwegian Nynorsk"), + ("ii", "Sichuan Yi, Nuosu"), + ("oc", "Occitan"), + ("oj", "Ojibwa"), + ("or", "Oriya"), + ("om", "Oromo"), + ("os", "Ossetian, Ossetic"), + ("pi", "Pali"), + ("ps", "Pashto, Pushto"), + ("fa", "Persian"), + ("pl", "Polish"), + ("pt", "Português"), + ("pa", "Punjabi, Panjabi"), + ("qu", "Quechua"), + ("ro", "Romanian, Moldavian, Moldovan"), + ("rm", "Romansh"), + ("rn", "Rundi"), + ("ru", "Russian"), + ("se", "Northern Sami"), + ("sm", "Samoan"), + ("sg", "Sango"), + ("sa", "Sanskrit"), + ("sc", "Sardinian"), + ("sr", "Serbian"), + ("sn", "Shona"), + ("sd", "Sindhi"), + ("si", "Sinhala, Sinhalese"), + ("sk", "Slovak"), + ("sl", "Slovenian"), + ("so", "Somali"), + ("st", "Southern Sotho"), + ("es", "Español"), + ("su", "Sundanese"), + ("sw", "Swahili"), + ("ss", "Swati"), + ("sv", "Swedish"), + ("tl", "Tagalog"), + ("ty", "Tahitian"), + ("tg", "Tajik"), + ("ta", "Tamil"), + ("tt", "Tatar"), + ("te", "Telugu"), + ("th", "Thai"), + ("bo", "Tibetan"), + ("ti", "Tigrinya"), + ("to", "Tonga (Tonga Islands)"), + ("ts", "Tsonga"), + ("tn", "Tswana"), + ("tr", "Turkish"), + ("tk", "Turkmen"), + ("tw", "Twi"), + ("ug", "Uighur, Uyghur"), + ("uk", "Ukrainian"), + ("ur", "Urdu"), + ("uz", "Uzbek"), + ("ve", "Venda"), + ("vi", "Vietnamese"), + ("vo", "Volapük"), + ("wa", "Walloon"), + ("cy", "Welsh"), + ("wo", "Wolof"), + ("xh", "Xhosa"), + ("yi", "Yiddish"), + ("yo", "Yoruba"), + ("za", "Zhuang, Chuang"), + ("zu", "Zulu"), +] + +ROLE = [ + ("Editor-Chefe", _("Editor-Chefe")), + ("Editor(es) Executivo", _("Editor(es) Executivo")), + ("Editor(es) Associados ou de Seção", _("Editor(es) Associados ou de Seção")), + ("Equipe Técnica", _("Equipe Técnica")), +] + +MONTHS = [ + ("01", _("January")), + ("02", _("February")), + ("03", _("March")), + ("04", _("April")), + ("05", _("May")), + ("06", _("June")), + ("07", _("July")), + ("08", _("August")), + ("09", _("September")), + ("10", _("October")), + ("11", _("November")), + ("12", _("December")), +] + +# https://creativecommons.org/share-your-work/cclicenses/ +# There are six different license types, listed from most to least permissive here: +LICENSE_TYPES = [ + ("by", _("by")), + ("by-sa", _("by-sa")), + ("by-nc", _("by-nc")), + ("by-nc-sa", _("by-nc-sa")), + ("by-nd", _("by-nd")), + ("by-nc-nd", _("by-nc-nd")), +] diff --git a/core/conftest.py b/core/conftest.py new file mode 100644 index 0000000..659762a --- /dev/null +++ b/core/conftest.py @@ -0,0 +1,14 @@ +import pytest + +from core.users.models import User +from core.users.tests.factories import UserFactory + + +@pytest.fixture(autouse=True) +def media_storage(settings, tmpdir): + settings.MEDIA_ROOT = tmpdir.strpath + + +@pytest.fixture +def user() -> User: + return UserFactory() diff --git a/core/contrib/__init__.py b/core/contrib/__init__.py new file mode 100644 index 0000000..1c7ecc8 --- /dev/null +++ b/core/contrib/__init__.py @@ -0,0 +1,5 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" diff --git a/core/contrib/sites/__init__.py b/core/contrib/sites/__init__.py new file mode 100644 index 0000000..1c7ecc8 --- /dev/null +++ b/core/contrib/sites/__init__.py @@ -0,0 +1,5 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" diff --git a/core/contrib/sites/migrations/0001_initial.py b/core/contrib/sites/migrations/0001_initial.py new file mode 100644 index 0000000..59647c8 --- /dev/null +++ b/core/contrib/sites/migrations/0001_initial.py @@ -0,0 +1,41 @@ +import django.contrib.sites.models +from django.contrib.sites.models import _simple_domain_name_validator +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [] + + operations = [ + migrations.CreateModel( + name="Site", + fields=[ + ( + "id", + models.AutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "domain", + models.CharField( + max_length=100, + verbose_name="domain name", + validators=[_simple_domain_name_validator], + ), + ), + ("name", models.CharField(max_length=50, verbose_name="display name")), + ], + options={ + "ordering": ("domain",), + "db_table": "django_site", + "verbose_name": "site", + "verbose_name_plural": "sites", + }, + bases=(models.Model,), + managers=[("objects", django.contrib.sites.models.SiteManager())], + ) + ] diff --git a/core/contrib/sites/migrations/0002_alter_domain_unique.py b/core/contrib/sites/migrations/0002_alter_domain_unique.py new file mode 100644 index 0000000..4359049 --- /dev/null +++ b/core/contrib/sites/migrations/0002_alter_domain_unique.py @@ -0,0 +1,19 @@ +import django.contrib.sites.models +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [("sites", "0001_initial")] + + operations = [ + migrations.AlterField( + model_name="site", + name="domain", + field=models.CharField( + max_length=100, + unique=True, + validators=[django.contrib.sites.models._simple_domain_name_validator], + verbose_name="domain name", + ), + ) + ] diff --git a/core/contrib/sites/migrations/0003_set_site_domain_and_name.py b/core/contrib/sites/migrations/0003_set_site_domain_and_name.py new file mode 100644 index 0000000..4e8cf87 --- /dev/null +++ b/core/contrib/sites/migrations/0003_set_site_domain_and_name.py @@ -0,0 +1,62 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" +from django.conf import settings +from django.db import migrations + + +def _update_or_create_site_with_sequence(site_model, connection, domain, name): + """Update or create the site with default ID and keep the DB sequence in sync.""" + site, created = site_model.objects.update_or_create( + id=settings.SITE_ID, + defaults={ + "domain": domain, + "name": name, + }, + ) + if created: + # We provided the ID explicitly when creating the Site entry, therefore the DB + # sequence to auto-generate them wasn't used and is now out of sync. If we + # don't do anything, we'll get a unique constraint violation the next time a + # site is created. + # To avoid this, we need to manually update DB sequence and make sure it's + # greater than the maximum value. + max_id = site_model.objects.order_by("-id").first().id + with connection.cursor() as cursor: + cursor.execute("SELECT last_value from django_site_id_seq") + (current_id,) = cursor.fetchone() + if current_id <= max_id: + cursor.execute( + "alter sequence django_site_id_seq restart with %s", + [max_id + 1], + ) + + +def update_site_forward(apps, schema_editor): + """Set site domain and name.""" + Site = apps.get_model("sites", "Site") + _update_or_create_site_with_sequence( + Site, + schema_editor.connection, + "example.com", + "SciELO Content Manager ", + ) + + +def update_site_backward(apps, schema_editor): + """Revert site domain and name to default.""" + Site = apps.get_model("sites", "Site") + _update_or_create_site_with_sequence( + Site, + schema_editor.connection, + "example.com", + "example.com", + ) + + +class Migration(migrations.Migration): + dependencies = [("sites", "0002_alter_domain_unique")] + + operations = [migrations.RunPython(update_site_forward, update_site_backward)] diff --git a/core/contrib/sites/migrations/0004_alter_options_ordering_domain.py b/core/contrib/sites/migrations/0004_alter_options_ordering_domain.py new file mode 100644 index 0000000..095ca00 --- /dev/null +++ b/core/contrib/sites/migrations/0004_alter_options_ordering_domain.py @@ -0,0 +1,20 @@ +# Generated by Django 3.1.7 on 2021-02-04 14:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("sites", "0003_set_site_domain_and_name"), + ] + + operations = [ + migrations.AlterModelOptions( + name="site", + options={ + "ordering": ["domain"], + "verbose_name": "site", + "verbose_name_plural": "sites", + }, + ), + ] diff --git a/core/contrib/sites/migrations/__init__.py b/core/contrib/sites/migrations/__init__.py new file mode 100644 index 0000000..1c7ecc8 --- /dev/null +++ b/core/contrib/sites/migrations/__init__.py @@ -0,0 +1,5 @@ +""" +To understand why this file is here, please read: + +http://cookiecutter-django.readthedocs.io/en/latest/faq.html#why-is-there-a-django-contrib-sites-directory-in-cookiecutter-django +""" diff --git a/core/forms.py b/core/forms.py new file mode 100644 index 0000000..6f3cf64 --- /dev/null +++ b/core/forms.py @@ -0,0 +1,15 @@ +from wagtail.admin.forms import WagtailAdminModelForm + + +class CoreAdminModelForm(WagtailAdminModelForm): + def save_all(self, user): + model_with_creator = super().save(commit=False) + + if self.instance.pk is not None: + model_with_creator.updated_by = user + else: + model_with_creator.creator = user + + self.save() + + return model_with_creator diff --git a/core/home/__init__.py b/core/home/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/home/migrations/0001_initial.py b/core/home/migrations/0001_initial.py new file mode 100644 index 0000000..a1256f2 --- /dev/null +++ b/core/home/migrations/0001_initial.py @@ -0,0 +1,194 @@ +# Generated by Django 4.2.7 on 2024-04-12 19:20 + +from django.db import migrations, models +import django.db.models.deletion +import modelcluster.fields +import wagtail.contrib.forms.models +import wagtail.fields + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + ("wagtailcore", "0089_log_entry_data_json_null_to_object"), + ] + + operations = [ + migrations.CreateModel( + name="FormPage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ( + "to_address", + models.CharField( + blank=True, + help_text="Optional - form submissions will be emailed to these addresses. Separate multiple addresses by comma.", + max_length=255, + validators=[wagtail.contrib.forms.models.validate_to_address], + verbose_name="to address", + ), + ), + ( + "from_address", + models.EmailField( + blank=True, max_length=255, verbose_name="from address" + ), + ), + ( + "subject", + models.CharField( + blank=True, max_length=255, verbose_name="subject" + ), + ), + ( + "intro", + wagtail.fields.RichTextField( + blank=True, help_text="Texto de introdução ao formulário." + ), + ), + ( + "thank_you_text", + wagtail.fields.RichTextField( + blank=True, + help_text="Adicione a mensagem que será exibido após o envio do formulário.", + ), + ), + ], + options={ + "verbose_name": "Página com formulário.", + "verbose_name_plural": "Páginas com formulários.", + }, + bases=( + wagtail.contrib.forms.models.FormMixin, + "wagtailcore.page", + models.Model, + ), + ), + migrations.CreateModel( + name="HomePage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="wagtailcore.page", + ), + ), + ], + options={ + "abstract": False, + }, + bases=("wagtailcore.page",), + ), + migrations.CreateModel( + name="FormField", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "sort_order", + models.IntegerField(blank=True, editable=False, null=True), + ), + ( + "clean_name", + models.CharField( + blank=True, + default="", + help_text="Safe name of the form field, the label converted to ascii_snake_case", + max_length=255, + verbose_name="name", + ), + ), + ( + "label", + models.CharField( + help_text="The label of the form field", + max_length=255, + verbose_name="label", + ), + ), + ( + "field_type", + models.CharField( + choices=[ + ("singleline", "Single line text"), + ("multiline", "Multi-line text"), + ("email", "Email"), + ("number", "Number"), + ("url", "URL"), + ("checkbox", "Checkbox"), + ("checkboxes", "Checkboxes"), + ("dropdown", "Drop down"), + ("multiselect", "Multiple select"), + ("radio", "Radio buttons"), + ("date", "Date"), + ("datetime", "Date/time"), + ("hidden", "Hidden field"), + ], + max_length=16, + verbose_name="field type", + ), + ), + ( + "required", + models.BooleanField(default=True, verbose_name="required"), + ), + ( + "choices", + models.TextField( + blank=True, + help_text="Comma or new line separated list of choices. Only applicable in checkboxes, radio and dropdown.", + verbose_name="choices", + ), + ), + ( + "default_value", + models.TextField( + blank=True, + help_text="Default value. Comma or new line separated values supported for checkboxes.", + verbose_name="default value", + ), + ), + ( + "help_text", + models.CharField( + blank=True, max_length=255, verbose_name="help text" + ), + ), + ( + "page", + modelcluster.fields.ParentalKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="form_fields", + to="home.formpage", + ), + ), + ], + options={ + "ordering": ["sort_order"], + "abstract": False, + }, + ), + ] diff --git a/core/home/migrations/__init__.py b/core/home/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/home/models.py b/core/home/models.py new file mode 100644 index 0000000..1734b90 --- /dev/null +++ b/core/home/models.py @@ -0,0 +1,86 @@ +from django.db import models +from django.http import JsonResponse +from django.template.response import TemplateResponse +from modelcluster.fields import ParentalKey +from wagtail.admin.panels import FieldPanel, FieldRowPanel, InlinePanel, MultiFieldPanel +from wagtail.contrib.forms.models import AbstractFormField +from wagtail.contrib.forms.panels import FormSubmissionsPanel +from wagtail.fields import RichTextField +from wagtail.models import Page +from wagtailcaptcha.models import WagtailCaptchaEmailForm + + +class HomePage(Page): + pass + +class FormField(AbstractFormField): + page = ParentalKey("FormPage", on_delete=models.CASCADE, related_name="form_fields") + + +class FormPage(WagtailCaptchaEmailForm): + intro = RichTextField(blank=True, help_text="Texto de introdução ao formulário.") + thank_you_text = RichTextField( + blank=True, + help_text="Adicione a mensagem que será exibido após o envio do formulário.", + ) + + def serve(self, request, *args, **kwargs): + if request.method == "POST": + form = self.get_form( + request.POST, request.FILES, page=self, user=request.user + ) + + if request.is_ajax(): + if form.is_valid(): + self.process_form_submission(form) + return JsonResponse( + { + "alert": "success", + "message": self.thank_you_text + if self.thank_you_text + else "Formulário enviado com sucesso!", + } + ) + else: + return JsonResponse( + { + "alert": "error", + "message": "Erro ao tentar enviar a formulário! Verifique os campos obrigatórios. Errors: %s" + % form.errors, + } + ) + else: + if form.is_valid(): + form_submission = self.process_form_submission(form) + return self.render_landing_page( + request, form_submission, *args, **kwargs + ) + else: + form = self.get_form(page=self, user=request.user) + + context = self.get_context(request) + context["form"] = form + return TemplateResponse(request, self.get_template(request), context) + + class Meta: + verbose_name = "Página com formulário." + verbose_name_plural = "Páginas com formulários." + + content_panels = WagtailCaptchaEmailForm.content_panels + [ + FormSubmissionsPanel(), + FieldPanel("intro", classname="full"), + InlinePanel("form_fields", label="Form fields"), + FieldPanel("thank_you_text", classname="full"), + MultiFieldPanel( + [ + FieldRowPanel( + [ + FieldPanel("from_address", classname="col6"), + FieldPanel("to_address", classname="col6"), + ] + ), + FieldPanel("subject"), + ], + "Email", + ), + ] diff --git a/core/home/static/css/welcome_page.css b/core/home/static/css/welcome_page.css new file mode 100644 index 0000000..fe49aac --- /dev/null +++ b/core/home/static/css/welcome_page.css @@ -0,0 +1,198 @@ +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +body { + max-width: 960px; + min-height: 100vh; + margin: 0 auto; + padding: 0 15px; + color: #231f20; + font-family: 'Helvetica Neue', 'Segoe UI', Arial, sans-serif; + line-height: 1.25; +} + +a { + background-color: transparent; + text-decoration: underline; +} + +h1, +h2, +h3, +h4, +h5, +p, +ul { + padding: 0; + margin: 0; + font-weight: 400; +} + +main { + display: block; /* For IE11 support */ +} + +svg:not(:root) { + overflow: hidden; +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + padding-top: 20px; + padding-bottom: 10px; + border-bottom: 1px solid #e6e6e6; +} + +.logo { + width: 150px; + margin-right: 20px; +} + +.logo a { + display: block; +} + +.figure-logo { + max-width: 150px; + max-height: 55.1px; +} + +.release-notes { + font-size: 14px; +} + +.main { + padding: 40px 0; + margin: 0 auto; + text-align: center; +} + +.figure-space { + max-width: 265px; +} + +@-webkit-keyframes pos { + 0%, 100% { + -webkit-transform: rotate(-6deg); + transform: rotate(-6deg); + } + 50% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } +} + +@keyframes pos { + 0%, 100% { + -webkit-transform: rotate(-6deg); + transform: rotate(-6deg); + } + 50% { + -webkit-transform: rotate(6deg); + transform: rotate(6deg); + } +} + +.egg { + -webkit-animation: pos 3s ease infinite; + animation: pos 3s ease infinite; + -webkit-transform: translateY(50px); + transform: translateY(50px); + -webkit-transform-origin: 50% 80%; + transform-origin: 50% 80%; +} + +.main-text { + max-width: 400px; + margin: 5px auto; +} + +.main-text h1 { + font-size: 22px; +} + +.main-text p { + margin: 15px auto 0; +} + +.footer { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + border-top: 1px solid #e6e6e6; + padding: 10px; +} + +.option { + display: block; + padding: 10px 10px 10px 34px; + position: relative; + text-decoration: none; +} + +.option svg { + width: 24px; + height: 24px; + fill: gray; + border: 1px solid #d9d9d9; + padding: 5px; + border-radius: 100%; + top: 10px; + left: 0; + position: absolute; +} + +.option h4 { + font-size: 19px; + text-decoration: underline; +} + +.option p { + padding-top: 3px; + color: #231f20; + font-size: 15px; + font-weight: 300; +} + +@media (max-width: 996px) { + body { + max-width: 780px; + } +} + +@media (max-width: 767px) { + .option { + flex: 0 0 50%; + } +} + +@media (max-width: 599px) { + .main { + padding: 20px 0; + } + + .figure-space { + max-width: 200px; + } + + .footer { + display: block; + width: 300px; + margin: 0 auto; + } +} + +@media (max-width: 360px) { + .header-link { + max-width: 100px; + } +} diff --git a/core/libs/chkcsv.py b/core/libs/chkcsv.py new file mode 100644 index 0000000..15b6231 --- /dev/null +++ b/core/libs/chkcsv.py @@ -0,0 +1,749 @@ +#! /usr/bin/python +# chkcsv.py +# +# PURPOSE: +# Check the contents of a CSV file, specifically that columns match a +# specified format. +# +# NOTES: +# 1. Column format specifications are stored in a configuration file +# with an INI-file format, where bracketed sections correspond to +# columns and each section contains key-value pairs of format specifications. +# 2. Recognized column specifications are: +# column_required=1|Yes|True|On|0|No|False|Off +# data_required=1|Yes|True|On|0|No|False|Off +# minlen= +# maxlen= +# type=integer|float|string|date|datetime|bool +# pattern= +# 3. Global options in the format specification file are not yet implemented, +# though a section name for them is reserved. +# +# COPYRIGHT: +# Copyright (c) 2011,2018 R.Dreas Nielsen (RDN) +# +# LICENSE: +# GPL v.3 +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as published +# by the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. This program is distributed in the +# hope that it will be useful, but WITHOUT ANY WARRANTY; without even +# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. The GNU +# General Public License is available at http://www.gnu.org/licenses/. +# +# HISTORY: +# Date Remarks +# ---------- -------------------------------------------------------------- +# 2011-09-25 First version. Version 0.8.0.0. RDN. +# 2018-10-27 Converted to run under both Python 2 and 3. Version 1.0.0. RDN. +# 2019-01-02 Corrected handling of next() for csv library. Version 1.0.1. RDN. +# 2018-01-04 Added check for data rows with more columns than column headers. +# Version 1.1.0. RDN. +# ============================================================================ + +_version = "1.1.0" +_vdate = "2019-01-04" + +import sys +from optparse import OptionParser + +try: + # Py2 + from ConfigParser import SafeConfigParser as ConfigParser +except: + # Py3 + from configparser import ConfigParser + +import codecs +import csv +import datetime +import os.path +import re +import traceback +import types + +FORMATSPECS = """Format specification options: + column_required=1|Yes|True|On|0|No|False|Off + type=integer|float|string|date|datetime|bool + data_required=1|Yes|True|On|0|No|False|Off + minlen= + maxlen= + pattern= +""" + + +class ChkCsvError(Exception): + """Base class for chkcsv errors.""" + + def __init__(self, errmsg, infile=None, line=None, column=None): + self.errmsg = errmsg + self.infile = infile + self.line = line + self.column = column + + +class CsvChecker: + """Create an object to check a specific column of a defined type. + + :param fmt_spec: A ConfigParser object. + :param colname: The name of the data column. + :param column_required_default: A Boolean indicating whether the column is required by default. + :param data_required_default: A Boolean indicating whether data values are required (non-null) by default. + + After initialization, the 'check()' + method will return a boolean indicating whether a data value is acceptable. + """ + + get_fn = { + "column_required": ConfigParser.getboolean, + "data_required": ConfigParser.getboolean, + "type": ConfigParser.get, + "minlen": ConfigParser.getint, + "maxlen": ConfigParser.getint, + "pattern": ConfigParser.get, + } + datetime_fmts = ( + "%x", + "%c", + "%x %X", + "%m/%d/%Y", + "%m/%d/%y", + "%m/%d/%Y %H%M", + "%m/%d/%Y %I:%M %p", + "%m/%d/%y %H%M", + "%m/%d/%y %I:%M %p", + "%Y-%m-%d %H%M", + "%Y-%m-%d %I:%M %p", + "%Y-%m-%d", + "%Y/%m/%d %H%M", + "%Y/%m/%d %I:%M %p", + "%Y/%m/%d %X", + "%Y/%m/%d", + "%b %d, %Y", + "%b %d, %Y %X", + "%b %d, %Y %I:%M %p", + "%b %d %Y", + "%b %d %Y %X", + "%b %d %Y %I:%M %p", + "%d %b, %Y", + "%d %b, %Y %X", + "%d %b, %Y %I:%M %p", + "%d %b %Y", + "%d %b %Y %X", + "%d %b %Y %I:%M %p", + "%b. %d, %Y", + "%b. %d, %Y %X", + "%b. %d, %Y %I:%M %p", + "%b. %d %Y", + "%b. %d %Y %X", + "%b. %d %Y %I:%M %p", + "%d %b., %Y", + "%d %b., %Y %X", + "%d %b., %Y %I:%M %p", + "%d %b. %Y", + "%d %b. %Y %X", + "%d %b. %Y %I:%M %p", + "%Y", + "%b %Y", + "%b, %Y", + "%b. %Y", + "%b., %Y", + "%b-%Y", + "%b.-%Y", + "%B %d, %Y", + "%B %d, %Y %X", + "%B %d, %Y %I:%M %p", + "%B %d %Y", + "%B %d %Y %X", + "%B %d %Y %I:%M %p", + "%d %B, %Y", + "%d %B, %Y %X", + "%d %B, %Y %I:%M %p", + "%d %B %Y", + "%d %B %Y %X", + "%d %B %Y %I:%M %p", + "%B %Y", + "%B, %Y", + "%B-%Y", + ) + date_fmts = ( + "%x", + "%c", + "%x %X", + "%m/%d/%Y", + "%m/%d/%y", + "%Y-%m-%d", + "%Y/%m/%d", + "%b %d, %Y", + "%b %d %Y", + "%d %b, %Y", + "%d %b %Y", + "%b. %d, %Y", + "%b. %d %Y", + "%d %b., %Y", + "%d %b. %Y", + "%Y", + "%b %Y", + "%b, %Y", + "%b. %Y", + "%b., %Y", + "%b-%Y", + "%b.-%Y", + "%B %d, %Y", + "%B %d %Y", + "%d %B, %Y", + "%d %B %Y", + "%B %Y", + "%B, %Y", + "%B-%Y", + ) + + # Basic format checking functions. These return None if the data are acceptable, + # a textual description of the problem otherwise. + def chk_req(self, data): + return "Dado faltando" if len(data) == 0 else None + + def chk_min(self, data): + return ( + None + if (not self.data_required and len(data) == 0) or len(data) >= self.minlen + else "data too short" + ) + + def chk_max(self, data): + return None if len(data) <= self.maxlen else "data too long" + + def chk_pat(self, data): + return None if len(data) == 0 or self.rx.match(data) else "Padrão incompatível" + + def chk_int(self, data): + if len(data) == 0: + return None + try: + x = int(data) + return None + except ValueError: + return "Não é um inteiro" + + def chk_float(self, data): + if len(data) == 0: + return None + try: + x = float(data) + return None + except ValueError: + return "Não é um número com separado de casa decimal" + + def chk_bool(self, data): + if len(data) == 0: + return None + return ( + None + if data + in ( + "True", + "true", + "TRUE", + "T", + "t", + "Yes", + "yes", + "YES", + "Y", + "y", + "False", + "false", + "FALSE", + "F", + "f", + "No", + "no", + "NO", + "N", + "n", + True, + False, + ) + else "Padrão incompatível, tente ['yes', 'no', 'true', 'false', 'y', 'n']" + ) + + def chk_datetime(self, data): + if len(data) == 0: + return None + if type(data) == type(datetime.datetime.now()): + return None + if type(data) == type(datetime.date.today()): + return None + if type(data) != type(""): + if data == None: + return "missing date/time" + try: + data = str(data) + except ValueError: + return "can't convert data to string for date/time test" + for f in self.datetime_fmts: + try: + dt = datetime.datetime.strptime(data, f) + except: + continue + break + else: + return "invalid date/time" + return None + + def chk_date(self, data): + if len(data) == 0: + return None + if type(data) == type(datetime.date.today()): + return None + if type(data) != type(""): + if data == None: + return "missing date" + try: + data = str(data) + except ValueError: + return "can't convert data to string for date test" + for f in self.date_fmts: + try: + dt = datetime.datetime.strptime(data, f) + except: + continue + break + else: + return "invalid date" + return None + + def dispatch(self, check_funcs, data): + errlist = [f(data) for f in check_funcs] + return [e for e in errlist if e] + + def __init__( + self, fmt_spec, colname, column_required_default, data_required_default + ): + self.name = colname + self.data_required = data_required_default + # By default, all columns are required unless there is a specification indicating that it is not. + self.column_required = column_required_default + specs = fmt_spec.options(colname) + # Get the value for each option, using an appropriate function for each expected value type. + for spec in specs: + try: + specval = self.get_fn[spec](fmt_spec, colname, spec) + except KeyError: + raise ChkCsvError( + "Unrecognized format specification (%s)" % spec, column=colname + ) + setattr(self, spec, specval) + # Convert any pattern attribute to an rx attribute + if hasattr(self, "pattern"): + try: + self.rx = re.compile(self.pattern) + except: + raise ChkCsvError( + "Invalid regular expression pattern: %s" % self.pattern, + column=colname, + ) + # Create the check method + errfuncs = [] + if self.data_required: + errfuncs.append(self.chk_req) + if hasattr(self, "type"): + if self.type == "string": + if hasattr(self, "minlen"): + errfuncs.append(self.chk_min) + if hasattr(self, "maxlen"): + errfuncs.append(self.chk_max) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + elif self.type == "integer": + errfuncs.append(self.chk_int) + elif self.type == "float": + errfuncs.append(self.chk_float) + elif self.type == "date": + errfuncs.append(self.chk_date) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + elif self.type == "datetime": + errfuncs.append(self.chk_datetime) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + else: + if hasattr(self, "minlen"): + errfuncs.append(self.chk_min) + if hasattr(self, "maxlen"): + errfuncs.append(self.chk_max) + if hasattr(self, "pattern"): + errfuncs.append(self.chk_pat) + self.check = lambda data: self.dispatch(errfuncs, data) + + +def clparser(): + usage_msg = """Usage: %prog [options] +Arguments: + CSV file name The name of a comma-separated-values file to check.""" + vers_msg = "%prog " + "%s %s" % (_version, _vdate) + desc_msg = "Checks the content and format of a CSV file." + parser = OptionParser(usage=usage_msg, version=vers_msg, description=desc_msg) + parser.add_option( + "-s", + "--showspecs", + action="store_true", + dest="showspecs", + default=False, + help="Show the format specifications allowed in the configuration file, and exit.", + ) + parser.add_option( + "-f", + "--formatspec", + action="store", + dest="formatspec", + type="string", + help="Name of the file with the format specification. The default is the name of the CSV file with an extension of fmt.", + ) + parser.add_option( + "-r", + "--required", + action="store_true", + dest="data_required", + default=False, + help="A data value is required in data columns for which the format specification does not include an explicit specification of whether data is required for a column. The default is false (i.e., data are not required).", + ) + parser.add_option( + "-q", + "--columnsnotrequired", + action="store_false", + dest="column_required", + default=True, + help="Columns listed in the format configuration file are not required to be present unless the column_required specification is explicitly set in the configuration file. The default is true (i.e., all columns in the configuration file are required in the CSV file).", + ) + parser.add_option( + "-c", + "--columnexit", + action="store_true", + dest="columnexit", + default=False, + help="Exit immediately if there are more columns in the CSV file header than are specified in the format configuration file.", + ) + parser.add_option( + "-l", + "--linelength", + action="store_false", + dest="linelength", + default=True, + help="Allow rows of the CSV file to have fewer columns than in the column headers. The default is to report an error for short data rows. If short data rows are allowed, any row without enough columns to match the format specification will still be reported as an error.", + ) + parser.add_option( + "-i", + "--case-insensitive", + action="store_true", + dest="caseinsensitive", + default=False, + help="Case-insensitive matching of column names in the format configuration file and the CSV file. The default is case-sensitive (i.e., column names must match exactly).", + ) + parser.add_option( + "-e", + "--encoding", + action="store", + type="string", + dest="encoding", + default=None, + help="Character encoding of the CSV file. It should be one of the strings listed at http://docs.python.org/library/codecs.html#standard-encodings.", + ) + parser.add_option( + "-o", + "--optsection", + action="store", + dest="optsection", + type="string", + help="An alternate name for the chkcsv options section in the format specification configuration file.", + ) + parser.add_option( + "-x", + "--exitonerror", + action="store_true", + dest="haltonerror", + default=False, + help="Exit when the first error is found.", + ) + return parser + + +class UTF8Recoder: + """Iterator that reads an encoded stream and reencodes the input to UTF-8.""" + + def __init__(self, f, encoding): + self.reader = codecs.getreader(encoding)(f) + + def __iter__(self): + return self + + def __next__(self): + if sys.version_info < (3,): + return next(self.reader).encode("utf-8") + else: + return next(self.reader) + + def next(self): + return self.__next__() + + +class UnicodeReader: + """A CSV reader which will iterate over lines in the CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + uf = UTF8Recoder(f, encoding) + self.reader = csv.reader(uf, dialect=dialect, **kwds) + + def __iter__(self): + return self + + def next(self): + if sys.version_info < (3,): + row = self.reader.next() + else: + row = next(self.reader) + return [type("")(s, "utf-8") for s in row] + + def __next__(self): + if sys.version_info < (3,): + row = self.reader.next() + else: + row = next(self.reader) + return [type("")(s, "utf-8") for s in row] + + +def show_errors(errlist): + """Write a list of error messages to stderr. + + :param errlist: A tuple of a narrative message, the name of the file + in which the error occurred, the line number of the file, and the column + name of the file. All but the first may be null. + """ + for err in errlist: + sys.stderr.write( + "%s.\n" + % " ".join( + [ + "%s %s" % em + for em in [ + e + for e in zip(("Error:", "in file", "on line", "in column"), err) + if e[1] + ] + ] + ) + ) + + +def read_format_specs( + fmt_file, column_required, data_required, chkopts="chkcsvoptions" +): + """Read format specifications from a file. + + :param fmt_file: The name of the file containing format specifications. + :param column_required: Whether or not the column must be in the CSV file to be checked. + :param data_required: Whether or not a data value is required on every row of the CSV file. + :param chkopts: The name of a section in the format specification file containing additional options. + """ + fmtspecs = ConfigParser() + try: + files_read = fmtspecs.read([fmt_file]) + except configparser.Error: + raise ChkCsvError("Error reading format specification file.", fmt_file) + if len(files_read) == 0: + raise ChkCsvError("Error reading format specification file.", fmt_file) + # Convert ConfigParser object into a list of CsvChecker objects + speccols = [sect for sect in fmtspecs.sections() if sect != chkopts] + cols = {} + for col in speccols: + cols[col] = CsvChecker(fmtspecs, col, column_required, data_required) + return cols + + +def check_csv_file( + csv_fname, cols, halt_on_err, columnexit, linelength, caseinsensitive, encoding=None +): + """Check that all of the required columns and data are present in the CSV file, and that + the data conform to the appropriate type and other specifications. + + :param csv_fname: The name of the CSV file to check. + :param cols: A dictionary of specifications (CsvChecker objects) indexed by column name. + :param halt_on_err: Whether to exit on the first error. + :param columnexit: Whether to exit if the CSV file doesn't have exactly the same columns in the format specifications. + :param linelength: Whether to report an error if any data row has a different number of items than indicated by the column headers. + :param casesensitive: Whether column names in the specifications and CSV file should be compared case-insensitively. + :param encoding: The character encoding of the CSV file. + """ + errorlist = [] + dialect = csv.Sniffer().sniff(open(csv_fname, "rt").readline()) + encoding = "utf-8" if not encoding else encoding + if sys.version_info < (3,): + inf = UnicodeReader(open(csv_fname, "rt"), dialect, encoding) + else: + inf = csv.reader(open(csv_fname, mode="rt", encoding=encoding), dialect=dialect) + colnames = next(inf) + req_cols = [c for c in cols if cols[c].column_required] + # Exit if all required columns are not present + if caseinsensitive: + colnames_l = [c.lower() for c in colnames] + req_missing = [col for col in req_cols if not (col.lower() in colnames_l)] + else: + req_missing = [col for col in req_cols if not (col in colnames)] + if len(req_missing) > 0: + errorlist.append( + ( + "The following columns are required, but are not present in the CSV file: %s." + % ", ".join(req_missing), + csv_fname, + 1, + ) + ) + return errorlist + # Exit if there are extra columns and the option to exit is set. + if columnexit: + if caseinsensitive: + speccols_l = [c.lower() for c in cols] + extra = [col for col in colnames if not (col.lower() in speccols_l)] + else: + extra = [col for col in colnames if not (col in cols)] + if len(extra) > 0: + errorlist.append( + ( + "The following columns have no format specifications but are in the CSV file: %s." + % ", ".join(extra), + csv_fname, + 1, + ) + ) + return errorlist + # Column names common to specifications and data file. These will be used + # to index the cols dictionary to get the appropriate check method + # and to index the CSV column name list (colnames) to get the column position. + if caseinsensitive: + chkcols = {} + for x in cols: + for y in colnames: + if x.lower() == y.lower(): + chkcols[x] = y + else: + datacols = [col for col in cols if col in colnames] + chkcols = dict(zip(datacols, datacols)) + # Get maximum required column number (index) to check data rows + dataindex = [colnames.index(chkcols[col]) for col in chkcols] + maxindex = max(dataindex) if len(dataindex) > 0 else 0 # 0 if format file is empty + colloc = dict(zip([chkcols[c] for c in chkcols], dataindex)) + # Read and check the CSV file until done (or until an error). + row_no = 1 # Header is row 1. + for datarow in inf: + row_no += 1 + if (len(datarow) > 0) and (len(datarow) < len(colnames)) and linelength: + errorlist.append( + ("fewer data values than column headers", csv_fname, row_no) + ) + if halt_on_err: + return errorlist + if len(datarow) > len(colnames): + errorlist.append( + ("more data values than column headers", csv_fname, row_no) + ) + if halt_on_err: + return errorlist + if len(datarow) < maxindex + 1: + if len(datarow) > 0: + errorlist.append( + ( + "fewer data values than columns in the format specification", + csv_fname, + row_no, + ) + ) + if halt_on_err: + return errorlist + else: + for col in chkcols: + col_errs = cols[col].check(datarow[colloc[chkcols[col]]]) + if len(col_errs) > 0: + errorlist.extend( + [(e, csv_fname, row_no, cols[col].name) for e in col_errs] + ) + if halt_on_err: + return errorlist + return errorlist + + +def main(): + parser = clparser() + (opts, args) = parser.parse_args() + if opts.showspecs: + print(FORMATSPECS) + return 0 + if len(args) == 0: + parser.print_help() + return 0 + if len(args) != 1: + raise ChkCsvError( + "A single argument, the name of the CSV file to check, must be provided." + ) + csv_file = args[0] + if not os.path.exists(csv_file): + raise ChkCsvError("The specified CSV file does not exist.", csv_file) + if opts.formatspec: + fmt_file = opts.formatspec + else: + (fn, ext) = os.path.splitext(csv_file) + fmt_file = "%s.fmt" % fn + if not os.path.exists(fmt_file): + raise ChkCsvError("The format file does not exist.", fmt_file) + # Get format specifications as a list of ChkCsv objects from the configuration file. + if opts.optsection: + chkopts = opts.optsection + else: + chkopts = "chkcsvoptions" + cols = read_format_specs( + fmt_file, opts.column_required, opts.data_required, chkopts + ) + # Check the file + errorlist = check_csv_file( + csv_file, + cols, + opts.haltonerror, + opts.columnexit, + opts.linelength, + opts.caseinsensitive, + opts.encoding, + ) + if len(errorlist) > 0: + show_errors(errorlist) + return 1 + else: + return 0 + + +if __name__ == "__main__": + try: + status = main() + except ChkCsvError as msg: + show_errors([(msg.errmsg, msg.infile, msg.line, msg.column)]) + exit(1) + except SystemExit as x: + sys.exit(x) + except Exception: + strace = traceback.extract_tb(sys.exc_info()[2])[-1:] + lno = strace[0][1] + src = strace[0][3] + sys.stderr.write( + "%s: Uncaught exception %s (%s) on line %s (%s)." + % ( + os.path.basename(sys.argv[0]), + str(sys.exc_info()[0]), + sys.exc_info()[1], + lno, + src, + ) + ) + sys.exit(1) + sys.exit(status) diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 0000000..6371e5a --- /dev/null +++ b/core/migrations/0001_initial.py @@ -0,0 +1,280 @@ +# Generated by Django 4.2.7 on 2024-04-12 19:20 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import wagtail.fields +import wagtail.search.index + + +class Migration(migrations.Migration): + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name="FlexibleDate", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "year", + models.IntegerField(blank=True, null=True, verbose_name="Year"), + ), + ( + "month", + models.IntegerField(blank=True, null=True, verbose_name="Month"), + ), + ("day", models.IntegerField(blank=True, null=True, verbose_name="Day")), + ], + ), + migrations.CreateModel( + name="Language", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "updated", + models.DateTimeField( + auto_now=True, verbose_name="Last update date" + ), + ), + ( + "name", + models.TextField( + blank=True, null=True, verbose_name="Language Name" + ), + ), + ( + "code2", + models.TextField( + blank=True, null=True, verbose_name="Language code 2" + ), + ), + ( + "creator", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_creator", + to=settings.AUTH_USER_MODEL, + verbose_name="Creator", + ), + ), + ( + "updated_by", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_last_mod_user", + to=settings.AUTH_USER_MODEL, + verbose_name="Updater", + ), + ), + ], + options={ + "verbose_name": "Idioma", + "verbose_name_plural": "Languages", + }, + ), + migrations.CreateModel( + name="License", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "updated", + models.DateTimeField( + auto_now=True, verbose_name="Last update date" + ), + ), + ( + "license_type", + models.CharField(blank=True, max_length=255, null=True), + ), + ( + "creator", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_creator", + to=settings.AUTH_USER_MODEL, + verbose_name="Creator", + ), + ), + ( + "updated_by", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_last_mod_user", + to=settings.AUTH_USER_MODEL, + verbose_name="Updater", + ), + ), + ], + options={ + "verbose_name": "License", + "verbose_name_plural": "Licenses", + }, + ), + migrations.CreateModel( + name="Gender", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "code", + models.CharField( + blank=True, max_length=5, null=True, verbose_name="Código" + ), + ), + ( + "gender", + models.CharField( + blank=True, max_length=50, null=True, verbose_name="Sex" + ), + ), + ], + options={ + "unique_together": {("code", "gender")}, + }, + bases=(wagtail.search.index.Indexed, models.Model), + ), + migrations.CreateModel( + name="LicenseStatement", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + models.DateTimeField( + auto_now_add=True, verbose_name="Creation date" + ), + ), + ( + "updated", + models.DateTimeField( + auto_now=True, verbose_name="Last update date" + ), + ), + ("url", models.CharField(blank=True, max_length=255, null=True)), + ("license_p", wagtail.fields.RichTextField(blank=True, null=True)), + ( + "creator", + models.ForeignKey( + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_creator", + to=settings.AUTH_USER_MODEL, + verbose_name="Creator", + ), + ), + ( + "language", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="core.language", + ), + ), + ( + "license", + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="core.license", + ), + ), + ( + "updated_by", + models.ForeignKey( + blank=True, + editable=False, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name="%(class)s_last_mod_user", + to=settings.AUTH_USER_MODEL, + verbose_name="Updater", + ), + ), + ], + options={ + "verbose_name": "License", + "verbose_name_plural": "Licenses", + "indexes": [ + models.Index(fields=["url"], name="core_licens_url_ec8078_idx") + ], + "unique_together": {("url", "license_p", "language")}, + }, + ), + migrations.AddIndex( + model_name="license", + index=models.Index( + fields=["license_type"], name="core_licens_license_5d1905_idx" + ), + ), + migrations.AlterUniqueTogether( + name="license", + unique_together={("license_type",)}, + ), + ] diff --git a/core/migrations/__init__.py b/core/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/models.py b/core/models.py new file mode 100644 index 0000000..1aeab73 --- /dev/null +++ b/core/models.py @@ -0,0 +1,539 @@ +import os + +from django.contrib.auth import get_user_model +from django.db import models, IntegrityError +from django.db.models import Case, When, Value, IntegerField +from django.utils.translation import gettext as _ +from wagtail.admin.panels import FieldPanel +from wagtail.fields import RichTextField +from wagtail.search import index +from wagtail.snippets.models import register_snippet +from wagtailautocomplete.edit_handlers import AutocompletePanel + +from . import choices +from .utils.utils import language_iso + +User = get_user_model() + + +@register_snippet +class Gender(index.Indexed, models.Model): + """ + Class of gender + + Fields: + sex: physical state of being either male, female, or intersex + """ + + code = models.CharField(_("Code"), max_length=5, null=True, blank=True) + + gender = models.CharField(_("Sex"), max_length=50, null=True, blank=True) + + autocomplete_search_filter = "code" + + def autocomplete_label(self): + return str(self) + + panels = [ + FieldPanel("code"), + FieldPanel("gender"), + ] + + search_fields = [ + index.SearchField("code", partial_match=True), + index.SearchField("gender", partial_match=True), + ] + + class Meta: + unique_together = [("code", "gender")] + + def __unicode__(self): + return self.gender or self.code + + def __str__(self): + return self.gender or self.code + + @classmethod + def _get(cls, code=None, gender=None): + try: + return cls.objects.get(code=code, gender=gender) + except cls.MultipleObjectsReturned: + return cls.objects.filter(code=code, gender=gender).first() + + @classmethod + def _create(cls, user, code=None, gender=None): + try: + obj = cls() + obj.gender = gender + obj.code = code + obj.creator = user + obj.save() + return obj + except IntegrityError: + return cls._get(code, gender) + + @classmethod + def create_or_update(cls, user, code, gender=None): + try: + return cls._get(code, gender) + except cls.DoesNotExist: + return cls._create(user, code, gender) + + +class CommonControlField(models.Model): + """ + Class with common control fields. + + Fields: + created: Date time when the record was created + updated: Date time with the last update date + creator: The creator of the record + updated_by: Store the last updator of the record + """ + + # Creation date + created = models.DateTimeField(verbose_name=_("Creation date"), auto_now_add=True) + + # Update date + updated = models.DateTimeField(verbose_name=_("Last update date"), auto_now=True) + + # Creator user + creator = models.ForeignKey( + User, + verbose_name=_("Creator"), + related_name="%(class)s_creator", + editable=False, + on_delete=models.SET_NULL, + null=True, + ) + + # Last modifier user + updated_by = models.ForeignKey( + User, + verbose_name=_("Updater"), + related_name="%(class)s_last_mod_user", + editable=False, + null=True, + blank=True, + on_delete=models.SET_NULL, + ) + + class Meta: + abstract = True + + +class Language(CommonControlField): + """ + Represent the list of states + + Fields: + name + code2 + """ + + name = models.TextField(_("Language Name"), blank=True, null=True) + code2 = models.TextField(_("Language code 2"), blank=True, null=True) + + autocomplete_search_field = "name" + + def autocomplete_label(self): + return str(self) + + class Meta: + verbose_name = _("Language") + verbose_name_plural = _("Languages") + + def __unicode__(self): + if self.name or self.code2: + return f"{self.name} | {self.code2}" + return "None" + + def __str__(self): + if self.name or self.code2: + return f"{self.name} | {self.code2}" + return "None" + + @classmethod + def load(cls, user): + if cls.objects.count() == 0: + for k, v in choices.LANGUAGE: + cls.get_or_create(name=v, code2=k, creator=user) + + @classmethod + def get_or_create(cls, name=None, code2=None, creator=None): + code2 = language_iso(code2) + if code2: + try: + return cls.objects.get(code2=code2) + except cls.DoesNotExist: + pass + + if name: + try: + return cls.objects.get(name=name) + except cls.DoesNotExist: + pass + + if name or code2: + obj = Language() + obj.name = name + obj.code2 = code2 or "" + obj.creator = creator + obj.save() + return obj + + +class TextWithLang(models.Model): + text = models.TextField(_("Text"), null=True, blank=True) + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [FieldPanel("text"), AutocompletePanel("language")] + + class Meta: + abstract = True + + +class TextLanguageMixin(models.Model): + rich_text = RichTextField(_("Rich Text"), null=True, blank=True) + plain_text = models.TextField(_("Plain Text"), null=True, blank=True) + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [ + AutocompletePanel("language"), + FieldPanel("rich_text"), + FieldPanel("plain_text"), + ] + + class Meta: + abstract = True + + +class LanguageFallbackManager(models.Manager): + def get_object_in_preferred_language(self, language): + mission = self.filter(language=language) + if mission: + return mission + + language_order = ['pt', 'es', 'en'] + langs = self.all().values_list("language", flat=True) + languages = Language.objects.filter(id__in=langs) + + # Define a ordem baseado na lista language_order + order = [When(code2=lang, then=Value(i)) for i, lang in enumerate(language_order)] + ordered_languages = languages.annotate( + language_order=Case(*order, default=Value(len(language_order)), output_field=IntegerField()) + ).order_by('language_order') + + + for lang in ordered_languages: + mission = self.filter(language=lang) + if mission: + return mission + return None + + +class RichTextWithLanguage(models.Model): + rich_text = RichTextField(_("Rich Text"), null=True, blank=True) + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [ + AutocompletePanel("language"), + FieldPanel("rich_text"), + ] + + objects = LanguageFallbackManager() + + class Meta: + abstract = True + + +class FlexibleDate(models.Model): + year = models.IntegerField(_("Year"), null=True, blank=True) + month = models.IntegerField(_("Month"), null=True, blank=True) + day = models.IntegerField(_("Day"), null=True, blank=True) + + def __unicode__(self): + return "%s/%s/%s" % (self.year, self.month, self.day) + + def __str__(self): + return "%s/%s/%s" % (self.year, self.month, self.day) + + @property + def data(self): + return dict( + date__year=self.year, + date__month=self.month, + date__day=self.day, + ) + + +class License(CommonControlField): + license_type = models.CharField(max_length=255, null=True, blank=True) + + autocomplete_search_field = "license_type" + + def autocomplete_label(self): + return str(self) + + panels = [ + FieldPanel("license_type"), + ] + + class Meta: + unique_together = [("license_type", )] + verbose_name = _("License") + verbose_name_plural = _("Licenses") + indexes = [ + models.Index( + fields=[ + "license_type", + ] + ), + ] + + def __unicode__(self): + return self.license_type or "" + + def __str__(self): + return self.license_type or "" + + @classmethod + def load(cls, user): + for license_type, v in choices.LICENSE_TYPES: + cls.create_or_update(user, license_type) + + @classmethod + def get( + cls, + license_type, + ): + if not license_type: + raise ValueError("License.get requires license_type parameters") + filters = dict( + license_type__iexact=license_type + ) + try: + return cls.objects.get(**filters) + except cls.MultipleObjectsReturned: + return cls.objects.filter(**filters).first() + + @classmethod + def create( + cls, + user, + license_type=None, + ): + try: + obj = cls() + obj.creator = user + obj.license_type = license_type or obj.license_type + obj.save() + return obj + except IntegrityError: + return cls.get(license_type=license_type) + + @classmethod + def create_or_update( + cls, + user, + license_type=None, + ): + try: + return cls.get(license_type=license_type) + except cls.DoesNotExist: + return cls.create(user, license_type) + + +class LicenseStatement(CommonControlField): + url = models.CharField(max_length=255, null=True, blank=True) + license_p = RichTextField(null=True, blank=True) + language = models.ForeignKey( + Language, on_delete=models.SET_NULL, null=True, blank=True + ) + license = models.ForeignKey( + License, on_delete=models.SET_NULL, null=True, blank=True) + + panels = [ + FieldPanel("url"), + FieldPanel("license_p"), + AutocompletePanel("language"), + AutocompletePanel("license"), + ] + + class Meta: + unique_together = [("url", "license_p", "language")] + verbose_name = _("License") + verbose_name_plural = _("Licenses") + indexes = [ + models.Index( + fields=[ + "url", + ] + ), + ] + + def __unicode__(self): + return self.url or "" + + def __str__(self): + return self.url or "" + + @classmethod + def get( + cls, + url=None, + license_p=None, + language=None, + ): + if not url and not license_p: + raise ValueError("LicenseStatement.get requires url or license_p") + try: + return cls.objects.get( + url__iexact=url, license_p__iexact=license_p, language=language) + except cls.MultipleObjectsReturned: + return cls.objects.filter( + url__iexact=url, license_p__iexact=license_p, language=language + ).first() + + @classmethod + def create( + cls, + user, + url=None, + license_p=None, + language=None, + license=None, + ): + if not url and not license_p: + raise ValueError("LicenseStatement.create requires url or license_p") + try: + obj = cls() + obj.creator = user + obj.url = url or obj.url + obj.license_p = license_p or obj.license_p + obj.language = language or obj.language + # instance of License + obj.license = license or obj.license + obj.save() + return obj + except IntegrityError: + return cls.get(url, license_p, language) + + @classmethod + def create_or_update( + cls, + user, + url=None, + license_p=None, + language=None, + license=None, + ): + try: + data = dict( + url=url, + license_p=license_p, + language=language and language.code2 + ) + try: + obj = cls.get(url, license_p, language) + obj.updated_by = user + obj.url = url or obj.url + obj.license_p = license_p or obj.license_p + obj.language = language or obj.language + # instance of License + obj.license = license or obj.license + obj.save() + return obj + except cls.DoesNotExist: + return cls.create(user, url, license_p, language, license) + except Exception as e: + raise ValueError(f"Unable to create or update LicenseStatement for {data}: {type(e)} {e}") + + @staticmethod + def parse_url(url): + license_type = None + license_version = None + license_language = None + + url = url.lower() + url_parts = url.split("/") + if not url_parts: + return {} + + license_types = dict(choices.LICENSE_TYPES) + for lic_type in license_types.keys(): + if lic_type in url_parts: + license_type = lic_type + + try: + version = url.split(f"/{license_type}/") + version = version[-1].split("/")[0] + isdigit = False + for c in version.split("."): + if c.isdigit(): + isdigit = True + continue + else: + isdigit = False + break + if isdigit: + license_version = version + except (AttributeError, TypeError, ValueError): + pass + break + + return dict( + license_type=license_type, + license_version=license_version, + license_language=license_language, + ) + + +class FileWithLang(models.Model): + file = models.ForeignKey( + "wagtaildocs.Document", + null=True, + blank=True, + on_delete=models.SET_NULL, + verbose_name=_("File"), + help_text='', + related_name="+", + ) + + language = models.ForeignKey( + Language, + on_delete=models.SET_NULL, + verbose_name=_("Language"), + null=True, + blank=True, + ) + + panels = [ + AutocompletePanel("language"), + FieldPanel("file"), + ] + + @property + def filename(self): + return os.path.basename(self.file.name) + + class Meta: + abstract = True diff --git a/core/routers.py b/core/routers.py new file mode 100644 index 0000000..40ba678 --- /dev/null +++ b/core/routers.py @@ -0,0 +1,6 @@ +from haystack import routers + + +class UpdateEverythingRouter(routers.BaseRouter): + def for_write(self, **hints): + return ("default", "oai") diff --git a/core/search_site/__init__.py b/core/search_site/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/search_site/views.py b/core/search_site/views.py new file mode 100644 index 0000000..2ea83f5 --- /dev/null +++ b/core/search_site/views.py @@ -0,0 +1,34 @@ +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.shortcuts import render +from wagtail.models import Page +from wagtail.search.models import Query + + +def search(request): + search_query = request.GET.get("query", None) + page = request.GET.get("page", 1) + + # Search + if search_query: + search_results = Page.objects.live().search(search_query) + query = Query.get(search_query) + + # Record hit + query.add_hit() + else: + search_results = Page.objects.none() + + # Pagination + paginator = Paginator(search_results, 10) + try: + search_results = paginator.page(page) + except PageNotAnInteger: + search_results = paginator.page(1) + except EmptyPage: + search_results = paginator.page(paginator.num_pages) + + return render( + request, + "search/search.html", + {"search_query": search_query, "search_results": search_results}, + ) diff --git a/core/static/admin/css/custom.css b/core/static/admin/css/custom.css new file mode 100644 index 0000000..b779ff7 --- /dev/null +++ b/core/static/admin/css/custom.css @@ -0,0 +1,23 @@ +:root { + --color-primary: #6789d3; + --color-primary-darker: #4c77d5; + --color-primary-dark: #4c77d5; +} + +.myReadonlyInput input[type="text"]{ + background-color: rgb(239 239 239); + color: rgb(99 99 99); + pointer-events:none; + cursor:text; +} + +/* Classe para ocultar elementos relacionados ao campo de escolher arquivo (models.FileField)*/ +.hide-file-section input[type="checkbox"][name="file-clear"], +.hide-file-section label[for="file-clear_id"], +.hide-file-section input[type="file"][name="file"] { + display: none; +} + +.hide-file-section .w-field__input a { + font-weight: bold; +} diff --git a/core/static/admin/js/custom.js b/core/static/admin/js/custom.js new file mode 100644 index 0000000..865c0d3 --- /dev/null +++ b/core/static/admin/js/custom.js @@ -0,0 +1,66 @@ +/* your custom js go here */ +document.addEventListener('DOMContentLoaded', function() { + const collectionSelect = document.querySelector('select[name="collection"]'); + const journalSelect = document.querySelector('select[name="journal"]'); + const currentJournalId = journalSelect.value; // Armazena o valor atual do journal + + function updateJournals() { + const selectedCollections = Array.from(collectionSelect.options) + .filter(option => option.selected) + .map(option => option.value); + fetch(`/filter_journals/?collections[]=${selectedCollections.join('&collections[]=')}`) + .then(response => response.json()) + .then(data => { + journalSelect.innerHTML = ''; + const defaultOption = new Option("Selecione um Journal", ""); + journalSelect.add(defaultOption); + + data.forEach(function(journal) { + const option = new Option(journal.name, journal.id); + if (journal.id.toString() === currentJournalId) { + option.selected = true; + } + journalSelect.add(option); + }); + if (!journalSelect.querySelector(`option[value="${currentJournalId}"]`)) { + journalSelect.value = ""; + } + }) + .catch(error => console.error('Error:', error)); + } + + if (collectionSelect && journalSelect) { + collectionSelect.addEventListener('change', updateJournals); + updateJournals(); + } +}); + +// document.addEventListener('DOMContentLoaded', function() { +// const collectionSelect = document.querySelector('select[name="collection"]'); +// const journalSelect = document.querySelector('select[name="journal"]'); + +// function updateJournals() { +// const selectedCollections = Array.from(collectionSelect.options) +// .filter(option => option.selected) +// .map(option => option.value); +// fetch(`/filter_journals/?collections[]=${selectedCollections.join('&collections[]=')}`) +// .then(response => response.json()) +// .then(data => { +// journalSelect.innerHTML = ''; +// // Adicione uma opção vazia ou com texto de 'nenhuma seleção' +// const defaultOption = new Option("Selecione um Journal", ""); +// journalSelect.add(defaultOption); +// data.forEach(function(journal) { +// const option = new Option(journal.name, journal.id); +// journalSelect.add(option); +// }); +// }) +// .catch(error => console.error('Error:', error)); +// } + + +// if (collectionSelect && journalSelect) { +// collectionSelect.addEventListener('change', updateJournals); +// updateJournals(); +// } +// }); \ No newline at end of file diff --git a/core/static/css/bootstrap-grid.css b/core/static/css/bootstrap-grid.css new file mode 100644 index 0000000..133de21 --- /dev/null +++ b/core/static/css/bootstrap-grid.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap Grid v5.0.0-beta1 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--scielo-gutter-x,.5rem);padding-left:var(--scielo-gutter-x,.5rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:100%}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--scielo-gutter-x:1rem;--scielo-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--scielo-gutter-y) * -1);margin-right:calc(var(--scielo-gutter-x)/ -2);margin-left:calc(var(--scielo-gutter-x)/ -2)}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--scielo-gutter-x)/ 2);padding-left:calc(var(--scielo-gutter-x)/ 2);margin-top:var(--scielo-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--scielo-gutter-x:0}.g-0,.gy-0{--scielo-gutter-y:0}.g-1,.gx-1{--scielo-gutter-x:0.25rem}.g-1,.gy-1{--scielo-gutter-y:0.25rem}.g-2,.gx-2{--scielo-gutter-x:0.5rem}.g-2,.gy-2{--scielo-gutter-y:0.5rem}.g-3,.gx-3{--scielo-gutter-x:1rem}.g-3,.gy-3{--scielo-gutter-y:1rem}.g-4,.gx-4{--scielo-gutter-x:1.5rem}.g-4,.gy-4{--scielo-gutter-y:1.5rem}.g-5,.gx-5{--scielo-gutter-x:3rem}.g-5,.gy-5{--scielo-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--scielo-gutter-x:0}.g-sm-0,.gy-sm-0{--scielo-gutter-y:0}.g-sm-1,.gx-sm-1{--scielo-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--scielo-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--scielo-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--scielo-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--scielo-gutter-x:1rem}.g-sm-3,.gy-sm-3{--scielo-gutter-y:1rem}.g-sm-4,.gx-sm-4{--scielo-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--scielo-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--scielo-gutter-x:3rem}.g-sm-5,.gy-sm-5{--scielo-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--scielo-gutter-x:0}.g-md-0,.gy-md-0{--scielo-gutter-y:0}.g-md-1,.gx-md-1{--scielo-gutter-x:0.25rem}.g-md-1,.gy-md-1{--scielo-gutter-y:0.25rem}.g-md-2,.gx-md-2{--scielo-gutter-x:0.5rem}.g-md-2,.gy-md-2{--scielo-gutter-y:0.5rem}.g-md-3,.gx-md-3{--scielo-gutter-x:1rem}.g-md-3,.gy-md-3{--scielo-gutter-y:1rem}.g-md-4,.gx-md-4{--scielo-gutter-x:1.5rem}.g-md-4,.gy-md-4{--scielo-gutter-y:1.5rem}.g-md-5,.gx-md-5{--scielo-gutter-x:3rem}.g-md-5,.gy-md-5{--scielo-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--scielo-gutter-x:0}.g-lg-0,.gy-lg-0{--scielo-gutter-y:0}.g-lg-1,.gx-lg-1{--scielo-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--scielo-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--scielo-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--scielo-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--scielo-gutter-x:1rem}.g-lg-3,.gy-lg-3{--scielo-gutter-y:1rem}.g-lg-4,.gx-lg-4{--scielo-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--scielo-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--scielo-gutter-x:3rem}.g-lg-5,.gy-lg-5{--scielo-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--scielo-gutter-x:0}.g-xl-0,.gy-xl-0{--scielo-gutter-y:0}.g-xl-1,.gx-xl-1{--scielo-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--scielo-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--scielo-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--scielo-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--scielo-gutter-x:1rem}.g-xl-3,.gy-xl-3{--scielo-gutter-y:1rem}.g-xl-4,.gx-xl-4{--scielo-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--scielo-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--scielo-gutter-x:3rem}.g-xl-5,.gy-xl-5{--scielo-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--scielo-gutter-x:0}.g-xxl-0,.gy-xxl-0{--scielo-gutter-y:0}.g-xxl-1,.gx-xxl-1{--scielo-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--scielo-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--scielo-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--scielo-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--scielo-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--scielo-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--scielo-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--scielo-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--scielo-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--scielo-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap-grid.css.map */ diff --git a/core/static/css/bootstrap-grid.css.map b/core/static/css/bootstrap-grid.css.map new file mode 100644 index 0000000..6bd4aaa --- /dev/null +++ b/core/static/css/bootstrap-grid.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-grid.scss","../../../node_modules/bootstrap/scss/_containers.scss","../../../node_modules/bootstrap/scss/mixins/_container.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../common/scss/_vars/_grid.scss","../../../node_modules/bootstrap/scss/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../../node_modules/bootstrap/scss/_utilities.scss","settings/_variables.scss","../../../node_modules/bootstrap/scss/utilities/_api.scss"],"names":[],"mappings":"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uKQ,YDzKZ,WAEI,UC8KI,eDhLR,aAEI,UC8KS,iBDhLb,mBAEI,UC8KgB,uBDhLpB,uBAEI,gBC0LK,qBD5LT,qBAEI,gBC2LG,mBD7LP,wBAEI,gBC4LM,iBD9LV,yBAEI,gBC6LO,wBD/LX,wBAEI,gBC8LM,uBDhMV,wBAEI,gBC+LM,uBDjMV,mBAEI,YCsMK,qBDxMT,iBAEI,YCuMG,mBDzMP,oBAEI,YCwMM,iBD1MV,sBAEI,YCyMQ,mBD3MZ,qBAEI,YC0MO,kBD5MX,qBAEI,cCiNK,qBDnNT,mBAEI,cCkNG,mBDpNP,sBAEI,cCmNM,iBDrNV,uBAEI,cCoNO,wBDtNX,sBAEI,cCqNM,uBDvNV,uBAEI,cCsNO,kBDxNX,iBAEI,WC6NI,eD/NR,kBAEI,WC8NK,qBDhOT,gBAEI,WC+NG,mBDjOP,mBAEI,WCgOM,iBDlOV,qBAEI,WCiOQ,mBDnOZ,oBAEI,WCkOO,kBDpOX,aAEI,MCyOM,aD3OV,SAEI,MC0OC,YD5OL,SAEI,MC2OC,YD7OL,SAEI,MC4OC,YD9OL,SAEI,MC6OC,YD/OL,SAEI,MC8OC,YDhPL,SAEI,MC+OC,YDjPL,YAEI,MCgPI,YDlPR,KAEI,OEyML,YF3MC,KAEI,OE0ML,iBF5MC,KAEI,OE2ML,gBF7MC,KAEI,OEuMD,eFzMH,KAEI,OE6ML,iBF/MC,KAEI,OE8ML,eFhNC,QAEI,OC0P+B,eD5PnC,MAEI,aEyML,YFzMK,YEyML,YF3MC,MAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,MAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,MAEI,aEuMD,eFvMC,YEuMD,eFzMH,MAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,MAEI,aE8ML,eF9MK,YE8ML,eFhNC,SAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,MAEI,WEyML,YFzMK,cEyML,YF3MC,MAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,MAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,MAEI,WEuMD,eFvMC,cEuMD,eFzMH,MAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,MAEI,WE8ML,eF9MK,cE8ML,eFhNC,SAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,MAEI,WEyML,YF3MC,MAEI,WE0ML,iBF5MC,MAEI,WE2ML,gBF7MC,MAEI,WEuMD,eFzMH,MAEI,WE6ML,iBF/MC,MAEI,WE8ML,eFhNC,SAEI,WC4Q+B,eD9QnC,MAEI,aEyML,YF3MC,MAEI,aE0ML,iBF5MC,MAEI,aE2ML,gBF7MC,MAEI,aEuMD,eFzMH,MAEI,aE6ML,iBF/MC,MAEI,aE8ML,eFhNC,SAEI,aCkR+B,eDpRnC,MAEI,cEyML,YF3MC,MAEI,cE0ML,iBF5MC,MAEI,cE2ML,gBF7MC,MAEI,cEuMD,eFzMH,MAEI,cE6ML,iBF/MC,MAEI,cE8ML,eFhNC,SAEI,cCwR+B,eD1RnC,MAEI,YEyML,YF3MC,MAEI,YE0ML,iBF5MC,MAEI,YE2ML,gBF7MC,MAEI,YEuMD,eFzMH,MAEI,YE6ML,iBF/MC,MAEI,YE8ML,eFhNC,SAEI,YC8R+B,eDhSnC,KAEI,QEyML,YF3MC,KAEI,QE0ML,iBF5MC,KAEI,QE2ML,gBF7MC,KAEI,QEuMD,eFzMH,KAEI,QE6ML,iBF/MC,KAEI,QE8ML,eFhNC,MAEI,cEyML,YFzMK,aEyML,YF3MC,MAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,MAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,MAEI,cEuMD,eFvMC,aEuMD,eFzMH,MAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,MAEI,cE8ML,eF9MK,aE8ML,eFhNC,MAEI,YEyML,YFzMK,eEyML,YF3MC,MAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,MAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,MAEI,YEuMD,eFvMC,eEuMD,eFzMH,MAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,MAEI,YE8ML,eF9MK,eE8ML,eFhNC,MAEI,YEyML,YF3MC,MAEI,YE0ML,iBF5MC,MAEI,YE2ML,gBF7MC,MAEI,YEuMD,eFzMH,MAEI,YE6ML,iBF/MC,MAEI,YE8ML,eFhNC,MAEI,cEyML,YF3MC,MAEI,cE0ML,iBF5MC,MAEI,cE2ML,gBF7MC,MAEI,cEuMD,eFzMH,MAEI,cE6ML,iBF/MC,MAEI,cE8ML,eFhNC,MAEI,eEyML,YF3MC,MAEI,eE0ML,iBF5MC,MAEI,eE2ML,gBF7MC,MAEI,eEuMD,eFzMH,MAEI,eE6ML,iBF/MC,MAEI,eE8ML,eFhNC,MAEI,aEyML,YF3MC,MAEI,aE0ML,iBF5MC,MAEI,aE2ML,gBF7MC,MAEI,aEuMD,eFzMH,MAEI,aE6ML,iBF/MC,MAEI,aE8ML,eNlMD,yBIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,yBIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,yBIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,0BIdE,aAEI,QCbI,iBDWR,mBAEI,QCbW,uBDWf,YAEI,QCbwB,gBDW5B,WAEI,QCb8B,eDWlC,YAEI,QCbmC,gBDWvC,gBAEI,QCbyC,oBDW7C,iBAEI,QCbmD,qBDWvD,WAEI,QCb8D,eDWlE,kBAEI,QCbmE,sBDWvE,WAEI,QCb+E,eDWnF,cAEI,KCgJW,EAAE,EAAE,eDlJnB,aAEI,eCsJI,cDxJR,gBAEI,eCsJQ,iBDxJZ,qBAEI,eCsJe,sBDxJnB,wBAEI,eCsJ2B,yBDxJ/B,gBAEI,UC6JM,YD/JV,gBAEI,UC8JM,YDhKV,kBAEI,YCsKQ,YDxKZ,kBAEI,YCuKQ,YDzKZ,cAEI,UC8KI,eDhLR,gBAEI,UC8KS,iBDhLb,sBAEI,UC8KgB,uBDhLpB,0BAEI,gBC0LK,qBD5LT,wBAEI,gBC2LG,mBD7LP,2BAEI,gBC4LM,iBD9LV,4BAEI,gBC6LO,wBD/LX,2BAEI,gBC8LM,uBDhMV,2BAEI,gBC+LM,uBDjMV,sBAEI,YCsMK,qBDxMT,oBAEI,YCuMG,mBDzMP,uBAEI,YCwMM,iBD1MV,yBAEI,YCyMQ,mBD3MZ,wBAEI,YC0MO,kBD5MX,wBAEI,cCiNK,qBDnNT,sBAEI,cCkNG,mBDpNP,yBAEI,cCmNM,iBDrNV,0BAEI,cCoNO,wBDtNX,yBAEI,cCqNM,uBDvNV,0BAEI,cCsNO,kBDxNX,oBAEI,WC6NI,eD/NR,qBAEI,WC8NK,qBDhOT,mBAEI,WC+NG,mBDjOP,sBAEI,WCgOM,iBDlOV,wBAEI,WCiOQ,mBDnOZ,uBAEI,WCkOO,kBDpOX,gBAEI,MCyOM,aD3OV,YAEI,MC0OC,YD5OL,YAEI,MC2OC,YD7OL,YAEI,MC4OC,YD9OL,YAEI,MC6OC,YD/OL,YAEI,MC8OC,YDhPL,YAEI,MC+OC,YDjPL,eAEI,MCgPI,YDlPR,QAEI,OEyML,YF3MC,QAEI,OE0ML,iBF5MC,QAEI,OE2ML,gBF7MC,QAEI,OEuMD,eFzMH,QAEI,OE6ML,iBF/MC,QAEI,OE8ML,eFhNC,WAEI,OC0P+B,eD5PnC,SAEI,aEyML,YFzMK,YEyML,YF3MC,SAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,SAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,SAEI,aEuMD,eFvMC,YEuMD,eFzMH,SAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,SAEI,aE8ML,eF9MK,YE8ML,eFhNC,YAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,SAEI,WEyML,YFzMK,cEyML,YF3MC,SAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,SAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,SAEI,WEuMD,eFvMC,cEuMD,eFzMH,SAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,SAEI,WE8ML,eF9MK,cE8ML,eFhNC,YAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,SAEI,WEyML,YF3MC,SAEI,WE0ML,iBF5MC,SAEI,WE2ML,gBF7MC,SAEI,WEuMD,eFzMH,SAEI,WE6ML,iBF/MC,SAEI,WE8ML,eFhNC,YAEI,WC4Q+B,eD9QnC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,eFhNC,YAEI,aCkR+B,eDpRnC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,YAEI,cCwR+B,eD1RnC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,YAEI,YC8R+B,eDhSnC,QAEI,QEyML,YF3MC,QAEI,QE0ML,iBF5MC,QAEI,QE2ML,gBF7MC,QAEI,QEuMD,eFzMH,QAEI,QE6ML,iBF/MC,QAEI,QE8ML,eFhNC,SAEI,cEyML,YFzMK,aEyML,YF3MC,SAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,SAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,SAEI,cEuMD,eFvMC,aEuMD,eFzMH,SAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,SAEI,cE8ML,eF9MK,aE8ML,eFhNC,SAEI,YEyML,YFzMK,eEyML,YF3MC,SAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,SAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,SAEI,YEuMD,eFvMC,eEuMD,eFzMH,SAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,SAEI,YE8ML,eF9MK,eE8ML,eFhNC,SAEI,YEyML,YF3MC,SAEI,YE0ML,iBF5MC,SAEI,YE2ML,gBF7MC,SAEI,YEuMD,eFzMH,SAEI,YE6ML,iBF/MC,SAEI,YE8ML,eFhNC,SAEI,cEyML,YF3MC,SAEI,cE0ML,iBF5MC,SAEI,cE2ML,gBF7MC,SAEI,cEuMD,eFzMH,SAEI,cE6ML,iBF/MC,SAEI,cE8ML,eFhNC,SAEI,eEyML,YF3MC,SAEI,eE0ML,iBF5MC,SAEI,eE2ML,gBF7MC,SAEI,eEuMD,eFzMH,SAEI,eE6ML,iBF/MC,SAEI,eE8ML,eFhNC,SAEI,aEyML,YF3MC,SAEI,aE0ML,iBF5MC,SAEI,aE2ML,gBF7MC,SAEI,aEuMD,eFzMH,SAEI,aE6ML,iBF/MC,SAEI,aE8ML,gBNlMD,0BIdE,cAEI,QCbI,iBDWR,oBAEI,QCbW,uBDWf,aAEI,QCbwB,gBDW5B,YAEI,QCb8B,eDWlC,aAEI,QCbmC,gBDWvC,iBAEI,QCbyC,oBDW7C,kBAEI,QCbmD,qBDWvD,YAEI,QCb8D,eDWlE,mBAEI,QCbmE,sBDWvE,YAEI,QCb+E,eDWnF,eAEI,KCgJW,EAAE,EAAE,eDlJnB,cAEI,eCsJI,cDxJR,iBAEI,eCsJQ,iBDxJZ,sBAEI,eCsJe,sBDxJnB,yBAEI,eCsJ2B,yBDxJ/B,iBAEI,UC6JM,YD/JV,iBAEI,UC8JM,YDhKV,mBAEI,YCsKQ,YDxKZ,mBAEI,YCuKQ,YDzKZ,eAEI,UC8KI,eDhLR,iBAEI,UC8KS,iBDhLb,uBAEI,UC8KgB,uBDhLpB,2BAEI,gBC0LK,qBD5LT,yBAEI,gBC2LG,mBD7LP,4BAEI,gBC4LM,iBD9LV,6BAEI,gBC6LO,wBD/LX,4BAEI,gBC8LM,uBDhMV,4BAEI,gBC+LM,uBDjMV,uBAEI,YCsMK,qBDxMT,qBAEI,YCuMG,mBDzMP,wBAEI,YCwMM,iBD1MV,0BAEI,YCyMQ,mBD3MZ,yBAEI,YC0MO,kBD5MX,yBAEI,cCiNK,qBDnNT,uBAEI,cCkNG,mBDpNP,0BAEI,cCmNM,iBDrNV,2BAEI,cCoNO,wBDtNX,0BAEI,cCqNM,uBDvNV,2BAEI,cCsNO,kBDxNX,qBAEI,WC6NI,eD/NR,sBAEI,WC8NK,qBDhOT,oBAEI,WC+NG,mBDjOP,uBAEI,WCgOM,iBDlOV,yBAEI,WCiOQ,mBDnOZ,wBAEI,WCkOO,kBDpOX,iBAEI,MCyOM,aD3OV,aAEI,MC0OC,YD5OL,aAEI,MC2OC,YD7OL,aAEI,MC4OC,YD9OL,aAEI,MC6OC,YD/OL,aAEI,MC8OC,YDhPL,aAEI,MC+OC,YDjPL,gBAEI,MCgPI,YDlPR,SAEI,OEyML,YF3MC,SAEI,OE0ML,iBF5MC,SAEI,OE2ML,gBF7MC,SAEI,OEuMD,eFzMH,SAEI,OE6ML,iBF/MC,SAEI,OE8ML,eFhNC,YAEI,OC0P+B,eD5PnC,UAEI,aEyML,YFzMK,YEyML,YF3MC,UAEI,aE0ML,iBF1MK,YE0ML,iBF5MC,UAEI,aE2ML,gBF3MK,YE2ML,gBF7MC,UAEI,aEuMD,eFvMC,YEuMD,eFzMH,UAEI,aE6ML,iBF7MK,YE6ML,iBF/MC,UAEI,aE8ML,eF9MK,YE8ML,eFhNC,aAEI,aCgQ+B,eDhQ/B,YCgQ+B,eDlQnC,UAEI,WEyML,YFzMK,cEyML,YF3MC,UAEI,WE0ML,iBF1MK,cE0ML,iBF5MC,UAEI,WE2ML,gBF3MK,cE2ML,gBF7MC,UAEI,WEuMD,eFvMC,cEuMD,eFzMH,UAEI,WE6ML,iBF7MK,cE6ML,iBF/MC,UAEI,WE8ML,eF9MK,cE8ML,eFhNC,aAEI,WCsQ+B,eDtQ/B,cCsQ+B,eDxQnC,UAEI,WEyML,YF3MC,UAEI,WE0ML,iBF5MC,UAEI,WE2ML,gBF7MC,UAEI,WEuMD,eFzMH,UAEI,WE6ML,iBF/MC,UAEI,WE8ML,eFhNC,aAEI,WC4Q+B,eD9QnC,UAEI,aEyML,YF3MC,UAEI,aE0ML,iBF5MC,UAEI,aE2ML,gBF7MC,UAEI,aEuMD,eFzMH,UAEI,aE6ML,iBF/MC,UAEI,aE8ML,eFhNC,aAEI,aCkR+B,eDpRnC,UAEI,cEyML,YF3MC,UAEI,cE0ML,iBF5MC,UAEI,cE2ML,gBF7MC,UAEI,cEuMD,eFzMH,UAEI,cE6ML,iBF/MC,UAEI,cE8ML,eFhNC,aAEI,cCwR+B,eD1RnC,UAEI,YEyML,YF3MC,UAEI,YE0ML,iBF5MC,UAEI,YE2ML,gBF7MC,UAEI,YEuMD,eFzMH,UAEI,YE6ML,iBF/MC,UAEI,YE8ML,eFhNC,aAEI,YC8R+B,eDhSnC,SAEI,QEyML,YF3MC,SAEI,QE0ML,iBF5MC,SAEI,QE2ML,gBF7MC,SAEI,QEuMD,eFzMH,SAEI,QE6ML,iBF/MC,SAEI,QE8ML,eFhNC,UAEI,cEyML,YFzMK,aEyML,YF3MC,UAEI,cE0ML,iBF1MK,aE0ML,iBF5MC,UAEI,cE2ML,gBF3MK,aE2ML,gBF7MC,UAEI,cEuMD,eFvMC,aEuMD,eFzMH,UAEI,cE6ML,iBF7MK,aE6ML,iBF/MC,UAEI,cE8ML,eF9MK,aE8ML,eFhNC,UAEI,YEyML,YFzMK,eEyML,YF3MC,UAEI,YE0ML,iBF1MK,eE0ML,iBF5MC,UAEI,YE2ML,gBF3MK,eE2ML,gBF7MC,UAEI,YEuMD,eFvMC,eEuMD,eFzMH,UAEI,YE6ML,iBF7MK,eE6ML,iBF/MC,UAEI,YE8ML,eF9MK,eE8ML,eFhNC,UAEI,YEyML,YF3MC,UAEI,YE0ML,iBF5MC,UAEI,YE2ML,gBF7MC,UAEI,YEuMD,eFzMH,UAEI,YE6ML,iBF/MC,UAEI,YE8ML,eFhNC,UAEI,cEyML,YF3MC,UAEI,cE0ML,iBF5MC,UAEI,cE2ML,gBF7MC,UAEI,cEuMD,eFzMH,UAEI,cE6ML,iBF/MC,UAEI,cE8ML,eFhNC,UAEI,eEyML,YF3MC,UAEI,eE0ML,iBF5MC,UAEI,eE2ML,gBF7MC,UAEI,eEuMD,eFzMH,UAEI,eE6ML,iBF/MC,UAEI,eE8ML,eFhNC,UAEI,aEyML,YF3MC,UAEI,aE0ML,iBF5MC,UAEI,aE2ML,gBF7MC,UAEI,aEuMD,eFzMH,UAEI,aE6ML,iBF/MC,UAEI,aE8ML,gBC3NL,aHWM,gBAEI,QCbI,iBDWR,sBAEI,QCbW,uBDWf,eAEI,QCbwB,gBDW5B,cAEI,QCb8B,eDWlC,eAEI,QCbmC,gBDWvC,mBAEI,QCbyC,oBDW7C,oBAEI,QCbmD,qBDWvD,cAEI,QCb8D,eDWlE,qBAEI,QCbmE,sBDWvE,cAEI,QCb+E","file":"bootstrap-grid.css","sourcesContent":["/*!\n * Bootstrap Grid v5.0.0-beta1 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n $include-column-box-sizing: true !default;\n\n @import \"scss/functions\";\n\n @import \"../../common/scss/itcssImports/vars\";\n @import \"../../common/scss/itcssImports/mixins\";\n @import \"./settings/variables\";\n \n @import \"scss/mixins/lists\";\n @import \"scss/mixins/breakpoints\";\n @import \"scss/mixins/container\";\n @import \"scss/mixins/grid\";\n @import \"scss/mixins/utilities\";\n \n @import \"scss/vendor/rfs\";\n \n @import \"scss/containers\";\n @import \"scss/grid\";\n \n @import \"scss/utilities\";\n // Only use the utilities we need\n // stylelint-disable-next-line scss/dollar-variable-default\n $utilities: map-get-multiple(\n $utilities,\n (\n \"display\",\n \"order\",\n \"flex\",\n \"flex-direction\",\n \"flex-grow\",\n \"flex-shrink\",\n \"flex-wrap\",\n \"justify-content\",\n \"align-items\",\n \"align-content\",\n \"align-self\",\n \"margin\",\n \"margin-x\",\n \"margin-y\",\n \"margin-top\",\n \"margin-end\",\n \"margin-bottom\",\n \"margin-start\",\n \"negative-margin\",\n \"negative-margin-x\",\n \"negative-margin-y\",\n \"negative-margin-top\",\n \"negative-margin-end\",\n \"negative-margin-bottom\",\n \"negative-margin-start\",\n \"padding\",\n \"padding-x\",\n \"padding-y\",\n \"padding-top\",\n \"padding-end\",\n \"padding-bottom\",\n \"padding-start\",\n )\n );\n \n @import \"scss/utilities/api\";\n ","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n width: 100%;\n padding-right: var(--#{$variable-prefix}gutter-x, #{$gutter});\n padding-left: var(--#{$variable-prefix}gutter-x, #{$gutter});\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","$__grid__columns: 12;\n\n$__grid__container--xsmall: ($__breakpoints--small - 1px);\n$__grid__container--small: 100%;\n$__grid__container--medium: 720px;\n$__grid__container--large: 960px;\n$__grid__container--xlarge: 1140px;\n$__grid__container--xxlarge: 1320px;\n\n$__module__xsmall: 16px;\n$__module__small: 20px;\n$__module__medium: 24px;\n$__module__large: 32px;\n$__module__xlarge: 40px;\n\n$__module__xsmall--half: $__module__xsmall / 2;\n$__module__small--half: $__module__small / 2;\n$__module__medium--half: $__module__medium / 2;\n$__module__large--half: $__module__large / 2;\n$__module__xlarge--half: $__module__xlarge / 2;\n\n$__module__xsmall--quarter: $__module__xsmall / 4;\n$__module__small--quarter: $__module__small / 4;\n$__module__medium--quarter: $__module__medium / 4;\n$__module__large--quarter: $__module__large / 4;\n$__module__xlarge--quarter: $__module__xlarge / 4;\n\n$__grid__gutter--xsmall: $__module__xsmall;\n$__grid__gutter--small: $__module__small;\n$__grid__gutter--medium: $__module__medium;\n$__grid__gutter--large: $__module__large;\n$__grid__gutter--xlarge: $__module__xlarge;\n\n$__module__space--small: 12;\n$__module__space--default: 24;\n$__module__space--large: 48;","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$variable-prefix}gutter-x: #{$gutter};\n --#{$variable-prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(var(--#{$variable-prefix}gutter-y) * -1); // stylelint-disable-line function-disallowed-list\n margin-right: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n margin-left: calc(var(--#{$variable-prefix}gutter-x) / -2); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready($gutter: $grid-gutter-width) {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$variable-prefix}gutter-x) / 2); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$variable-prefix}gutter-y);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n flex: 0 0 auto;\n width: percentage($size / $columns);\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: $size / $columns;\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// numberof columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: 100% / $count;\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$variable-prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (eg. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// stylelint-disable indentation\n\n// Utilities\n\n$utilities: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$utilities: map-merge(\n (\n // scss-docs-start utils-vertical-align\n \"align\": (\n property: vertical-align,\n class: align,\n values: baseline top middle bottom text-bottom text-top\n ),\n // scss-docs-end utils-vertical-align\n // scss-docs-start utils-float\n \"float\": (\n responsive: true,\n property: float,\n values: (\n start: left,\n end: right,\n none: none,\n )\n ),\n // scss-docs-end utils-float\n // scss-docs-start utils-overflow\n \"overflow\": (\n property: overflow,\n values: auto hidden visible scroll,\n ),\n // scss-docs-end utils-overflow\n // scss-docs-start utils-display\n \"display\": (\n responsive: true,\n print: true,\n property: display,\n class: d,\n values: inline inline-block block grid table table-row table-cell flex inline-flex none\n ),\n // scss-docs-end utils-display\n // scss-docs-start utils-shadow\n \"shadow\": (\n property: box-shadow,\n class: shadow,\n values: (\n null: $box-shadow,\n sm: $box-shadow-sm,\n lg: $box-shadow-lg,\n none: none,\n )\n ),\n // scss-docs-end utils-shadow\n // scss-docs-start utils-position\n \"position\": (\n property: position,\n values: static relative absolute fixed sticky\n ),\n \"top\": (\n property: top,\n values: $position-values\n ),\n \"bottom\": (\n property: bottom,\n values: $position-values\n ),\n \"start\": (\n property: left,\n class: start,\n values: $position-values\n ),\n \"end\": (\n property: right,\n class: end,\n values: $position-values\n ),\n \"translate-middle\": (\n property: transform,\n class: translate-middle,\n values: (\n null: translate(-50%, -50%),\n x: translateX(-50%),\n y: translateY(-50%),\n )\n ),\n // scss-docs-end utils-position\n // scss-docs-start utils-borders\n \"border\": (\n property: border,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-top\": (\n property: border-top,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-end\": (\n property: border-right,\n class: border-end,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-bottom\": (\n property: border-bottom,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-start\": (\n property: border-left,\n class: border-start,\n values: (\n null: $border-width solid $border-color,\n 0: 0,\n )\n ),\n \"border-color\": (\n property: border-color,\n class: border,\n values: map-merge($theme-colors, (\"white\": $white))\n ),\n \"border-width\": (\n property: border-width,\n class: border,\n values: $border-widths\n ),\n // scss-docs-end utils-borders\n // Sizing utilities\n // scss-docs-start utils-sizing\n \"width\": (\n property: width,\n class: w,\n values: (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n )\n ),\n \"max-width\": (\n property: max-width,\n class: mw,\n values: (100: 100%)\n ),\n \"viewport-width\": (\n property: width,\n class: vw,\n values: (100: 100vw)\n ),\n \"min-viewport-width\": (\n property: min-width,\n class: min-vw,\n values: (100: 100vw)\n ),\n \"height\": (\n property: height,\n class: h,\n values: (\n 25: 25%,\n 50: 50%,\n 75: 75%,\n 100: 100%,\n auto: auto\n )\n ),\n \"max-height\": (\n property: max-height,\n class: mh,\n values: (100: 100%)\n ),\n \"viewport-height\": (\n property: height,\n class: vh,\n values: (100: 100vh)\n ),\n \"min-viewport-height\": (\n property: min-height,\n class: min-vh,\n values: (100: 100vh)\n ),\n // scss-docs-end utils-sizing\n // Flex utilities\n // scss-docs-start utils-flex\n \"flex\": (\n responsive: true,\n property: flex,\n values: (fill: 1 1 auto)\n ),\n \"flex-direction\": (\n responsive: true,\n property: flex-direction,\n class: flex,\n values: row column row-reverse column-reverse\n ),\n \"flex-grow\": (\n responsive: true,\n property: flex-grow,\n class: flex,\n values: (\n grow-0: 0,\n grow-1: 1,\n )\n ),\n \"flex-shrink\": (\n responsive: true,\n property: flex-shrink,\n class: flex,\n values: (\n shrink-0: 0,\n shrink-1: 1,\n )\n ),\n \"flex-wrap\": (\n responsive: true,\n property: flex-wrap,\n class: flex,\n values: wrap nowrap wrap-reverse\n ),\n \"gap\": (\n responsive: true,\n property: gap,\n class: gap,\n values: $spacers\n ),\n \"justify-content\": (\n responsive: true,\n property: justify-content,\n values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n evenly: space-evenly,\n )\n ),\n \"align-items\": (\n responsive: true,\n property: align-items,\n values: (\n start: flex-start,\n end: flex-end,\n center: center,\n baseline: baseline,\n stretch: stretch,\n )\n ),\n \"align-content\": (\n responsive: true,\n property: align-content,\n values: (\n start: flex-start,\n end: flex-end,\n center: center,\n between: space-between,\n around: space-around,\n stretch: stretch,\n )\n ),\n \"align-self\": (\n responsive: true,\n property: align-self,\n values: (\n auto: auto,\n start: flex-start,\n end: flex-end,\n center: center,\n baseline: baseline,\n stretch: stretch,\n )\n ),\n \"order\": (\n responsive: true,\n property: order,\n values: (\n first: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n last: 6,\n ),\n ),\n // scss-docs-end utils-flex\n // Margin utilities\n // scss-docs-start utils-spacing\n \"margin\": (\n responsive: true,\n property: margin,\n class: m,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-x\": (\n responsive: true,\n property: margin-right margin-left,\n class: mx,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-y\": (\n responsive: true,\n property: margin-top margin-bottom,\n class: my,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-top\": (\n responsive: true,\n property: margin-top,\n class: mt,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-end\": (\n responsive: true,\n property: margin-right,\n class: me,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-bottom\": (\n responsive: true,\n property: margin-bottom,\n class: mb,\n values: map-merge($spacers, (auto: auto))\n ),\n \"margin-start\": (\n responsive: true,\n property: margin-left,\n class: ms,\n values: map-merge($spacers, (auto: auto))\n ),\n // Negative margin utilities\n \"negative-margin\": (\n responsive: true,\n property: margin,\n class: m,\n values: $negative-spacers\n ),\n \"negative-margin-x\": (\n responsive: true,\n property: margin-right margin-left,\n class: mx,\n values: $negative-spacers\n ),\n \"negative-margin-y\": (\n responsive: true,\n property: margin-top margin-bottom,\n class: my,\n values: $negative-spacers\n ),\n \"negative-margin-top\": (\n responsive: true,\n property: margin-top,\n class: mt,\n values: $negative-spacers\n ),\n \"negative-margin-end\": (\n responsive: true,\n property: margin-right,\n class: me,\n values: $negative-spacers\n ),\n \"negative-margin-bottom\": (\n responsive: true,\n property: margin-bottom,\n class: mb,\n values: $negative-spacers\n ),\n \"negative-margin-start\": (\n responsive: true,\n property: margin-left,\n class: ms,\n values: $negative-spacers\n ),\n // Padding utilities\n \"padding\": (\n responsive: true,\n property: padding,\n class: p,\n values: $spacers\n ),\n \"padding-x\": (\n responsive: true,\n property: padding-right padding-left,\n class: px,\n values: $spacers\n ),\n \"padding-y\": (\n responsive: true,\n property: padding-top padding-bottom,\n class: py,\n values: $spacers\n ),\n \"padding-top\": (\n responsive: true,\n property: padding-top,\n class: pt,\n values: $spacers\n ),\n \"padding-end\": (\n responsive: true,\n property: padding-right,\n class: pe,\n values: $spacers\n ),\n \"padding-bottom\": (\n responsive: true,\n property: padding-bottom,\n class: pb,\n values: $spacers\n ),\n \"padding-start\": (\n responsive: true,\n property: padding-left,\n class: ps,\n values: $spacers\n ),\n // scss-docs-end utils-spacing\n // Text\n // scss-docs-start utils-text\n \"font-family\": (\n property: font-family,\n class: font,\n values: (monospace: var(--#{$variable-prefix}font-monospace))\n ),\n \"font-size\": (\n rfs: true,\n property: font-size,\n class: fs,\n values: $font-sizes\n ),\n \"font-style\": (\n property: font-style,\n class: fst,\n values: italic normal\n ),\n \"font-weight\": (\n property: font-weight,\n class: fw,\n values: (\n light: $font-weight-light,\n lighter: $font-weight-lighter,\n normal: $font-weight-normal,\n bold: $font-weight-bold,\n bolder: $font-weight-bolder\n )\n ),\n \"line-height\": (\n property: line-height,\n class: lh,\n values: (\n 1: 1,\n sm: $line-height-sm,\n base: $line-height-base,\n lg: $line-height-lg,\n )\n ),\n \"text-align\": (\n responsive: true,\n property: text-align,\n class: text,\n values: (\n start: left,\n end: right,\n center: center,\n )\n ),\n \"text-decoration\": (\n property: text-decoration,\n values: none underline line-through\n ),\n \"text-transform\": (\n property: text-transform,\n class: text,\n values: lowercase uppercase capitalize\n ),\n \"white-space\": (\n property: white-space,\n class: text,\n values: (\n wrap: normal,\n nowrap: nowrap,\n )\n ),\n \"word-wrap\": (\n property: word-wrap word-break,\n class: text,\n values: (break: break-word),\n rtl: false\n ),\n // scss-docs-end utils-text\n // scss-docs-start utils-color\n \"color\": (\n property: color,\n class: text,\n values: map-merge(\n $theme-colors,\n (\n \"white\": $white,\n \"body\": $body-color,\n \"muted\": $text-muted,\n \"black-50\": rgba($black, .5),\n \"white-50\": rgba($white, .5),\n \"reset\": inherit,\n )\n )\n ),\n // scss-docs-end utils-color\n // scss-docs-start utils-bg-color\n \"background-color\": (\n property: background-color,\n class: bg,\n values: map-merge(\n $theme-colors,\n (\n \"body\": $body-bg,\n \"white\": $white,\n \"transparent\": transparent\n )\n )\n ),\n // scss-docs-end utils-bg-color\n \"gradient\": (\n property: background-image,\n class: bg,\n values: (gradient: var(--#{$variable-prefix}gradient))\n ),\n // scss-docs-start utils-interaction\n \"user-select\": (\n property: user-select,\n values: all auto none\n ),\n \"pointer-events\": (\n property: pointer-events,\n class: pe,\n values: none auto,\n ),\n // scss-docs-end utils-interaction\n // scss-docs-start utils-border-radius\n \"rounded\": (\n property: border-radius,\n class: rounded,\n values: (\n null: $border-radius,\n 0: 0,\n 1: $border-radius-sm,\n 2: $border-radius,\n 3: $border-radius-lg,\n circle: 50%,\n pill: $border-radius-pill\n )\n ),\n \"rounded-top\": (\n property: border-top-left-radius border-top-right-radius,\n class: rounded-top,\n values: (null: $border-radius)\n ),\n \"rounded-end\": (\n property: border-top-right-radius border-bottom-right-radius,\n class: rounded-end,\n values: (null: $border-radius)\n ),\n \"rounded-bottom\": (\n property: border-bottom-right-radius border-bottom-left-radius,\n class: rounded-bottom,\n values: (null: $border-radius)\n ),\n \"rounded-start\": (\n property: border-bottom-left-radius border-top-left-radius,\n class: rounded-start,\n values: (null: $border-radius)\n ),\n // scss-docs-end utils-border-radius\n // scss-docs-start utils-visibility\n \"visibility\": (\n property: visibility,\n class: null,\n values: (\n visible: visible,\n invisible: hidden,\n )\n )\n // scss-docs-end utils-visibility\n ),\n $utilities\n);\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: $__white !default;\n$gray-100: $__bg__gray--1 !default;\n$gray-200: $__bg__gray--2 !default;\n$gray-300: rgba($__black,.3) !default;\n$gray-400: rgba($__black,.4) !default;\n$gray-500: rgba($__black,.5) !default;\n$gray-600: rgba($__black,.6) !default;\n$gray-700: rgba($__black,.7) !default;\n$gray-800: $__bg__white--2 !default;\n$gray-900: $__bg__white--1 !default;\n$black: $__black !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: $__interaction--light !default;\n$indigo: $__support__purple--light !default;\n$purple: $__support__purple--dark !default;\n$pink: #C32AA3 !default;\n$red: $__negative--light !default;\n$orange: $__negative--dark !default;\n$yellow: $__warning--light !default;\n$green: $__positive--light !default;\n$teal: $__support__green--light !default;\n$cyan: $__info--light !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"white\": $white,\n \"gray\": $__text--light,\n \"gray-dark\": $__text__emphasis--light\n) !default;\n// scss-docs-end colors-map\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n//$secondary: $gray-600 !default;\n$secondary: $white !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n// fusv-enable\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n// Prefix for :root CSS variables\n\n$variable-prefix: #{$__classPrefix}- !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient` \n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing \n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer / 4,\n 2: $spacer / 2,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n\n$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-bg: $white !default;\n$body-color: $gray-900 !default;\n$body-text-align: null !default;\n\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: $__breakpoints--xsmall,\n sm: $__breakpoints--small,\n md: $__breakpoints--medium,\n lg: $__breakpoints--large,\n xl: $__breakpoints--xlarge,\n xxl: $__breakpoints--xxlarge\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: $__grid__container--small,\n md: $__grid__container--medium,\n lg: $__grid__container--large,\n xl: $__grid__container--xlarge,\n xxl: $__grid__container--xxlarge\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: $__grid__columns !default;\n$grid-gutter-width: 1rem !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width / 2 !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 0: 0,\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n\n$border-color: $gray-300 !default;\n\n$border-radius: .25rem !default;\n$border-radius-sm: .12.5rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba($black, .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba($black, .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba($black, .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba($black, .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n$transition-collapse: height .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: $__font__family !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$variable-prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$variable-prefix}font-monospace) !default;\n\n// $font-size-root effects the value of `rem`, which is used for as well font sizes, paddings and margins\n// $font-size-base effects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer / 2 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: $gray-600 !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n$hr-height: $border-width !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$mark-padding: .2em !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$nested-kbd-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-bg: #fcf8e3 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: $body-color !default;\n$table-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: $border-width !default;\n$table-border-color: $border-color !default;\n\n$table-striped-order: odd !default;\n\n$table-group-separator-color: currentColor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n\n\n $table-variants-scielo: (\n \"primary\": fade-out($__interaction--light, 0.3),\n \"secondary\": fade-out($secondary, 0.5),\n \"success\": fade-out($__positive--light, 0.3),\n \"info\": fade-out($__info--light, 0.3),\n \"warning\": fade-out($__warning--light, 0.3),\n \"danger\": fade-out($__negative--light, 0.3),\n \"light\": $light,\n \"dark\": $dark,\n ) !default;\n \n \n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 0 $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: $border-width !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: $link-color !default;\n$btn-link-hover-color: $link-hover-color !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: $white !default;\n$input-disabled-bg: $gray-200 !default;\n$input-disabled-border-color: null !default;\n\n$input-color: $body-color !default;\n$input-border-color: $gray-400 !default;\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: $gray-600 !default;\n$input-plaintext-color: $body-color !default;\n\n$input-height-border: $input-border-width * 2 !default;\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y / 2) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: background-color .15s ease-in-out, background-position .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default; \n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $body-bg !default;\n$form-check-input-border: 1px solid rgba(0, 0, 0, .25) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba(0, 0, 0, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: $gray-200 !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: $gray-600 !default;\n$form-select-disabled-bg: $gray-200 !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: add(1em * .75, (2 * $form-select-padding-y * .75) + $form-select-padding-x + $form-select-indicator-padding) !default;\n$form-select-feedback-icon-position: center right ($form-select-padding-x + $form-select-indicator-padding) !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: $gray-300 !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: $gray-500 !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: $input-group-addon-bg !default;\n$form-file-button-hover-bg: shade-color($form-file-button-bg, 5%) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": $form-feedback-valid-color,\n \"icon\": $form-feedback-icon-valid\n ),\n \"invalid\": (\n \"color\": $form-feedback-invalid-color,\n \"icon\": $form-feedback-icon-invalid\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas: 1040 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1060 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n// scss-docs-end zindex-stack\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: null !default;\n$nav-link-hover-color: null !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: $gray-600 !default;\n\n$nav-tabs-border-color: $gray-300 !default;\n$nav-tabs-border-width: $border-width !default;\n$nav-tabs-border-radius: $border-radius !default;\n$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: $gray-700 !default;\n$nav-tabs-link-active-bg: $body-bg !default;\n$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer / 2 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) / 2 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-theme-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n\n$navbar-light-color: rgba($black, .55) !default;\n$navbar-light-hover-color: rgba($black, .7) !default;\n$navbar-light-active-color: rgba($black, .9) !default;\n$navbar-light-disabled-color: rgba($black, .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba($black, .1) !default;\n\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-theme-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: $body-color !default;\n$dropdown-bg: $white !default;\n$dropdown-border-color: rgba($black, .15) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: $border-width !default;\n$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width) !default;\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer / 2 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: $gray-900 !default;\n$dropdown-link-hover-color: shade-color($gray-900, 10%) !default;\n$dropdown-link-hover-bg: $gray-100 !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-600 !default;\n\n$dropdown-item-padding-y: $spacer / 4 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding: $dropdown-padding-y $dropdown-item-padding-x !default;\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-color: $link-color !default;\n$pagination-bg: $white !default;\n$pagination-border-width: $border-width !default;\n$pagination-border-radius: $border-radius !default;\n$pagination-margin-start: -$pagination-border-width !default;\n$pagination-border-color: $gray-300 !default;\n\n$pagination-focus-color: $link-hover-color !default;\n$pagination-focus-bg: $gray-200 !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: $link-hover-color !default;\n$pagination-hover-bg: $gray-200 !default;\n$pagination-hover-border-color: $gray-300 !default;\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $pagination-active-bg !default;\n\n$pagination-disabled-color: $gray-600 !default;\n$pagination-disabled-bg: $white !default;\n$pagination-disabled-border-color: $gray-300 !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer / 2 !default;\n$card-border-width: $border-width !default;\n$card-border-radius: $border-radius !default;\n$card-border-color: rgba($black, .125) !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y / 2 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba($black, .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: $white !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width / 2 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: $body-color !default;\n$accordion-bg: transparent !default;\n$accordion-border-width: $border-width !default;\n$accordion-border-color: rgba($black, .125) !default;\n$accordion-border-radius: $border-radius !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: $accordion-color !default;\n$accordion-button-bg: $accordion-bg !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: tint-color($component-active-bg, 90%) !default;\n$accordion-button-active-color: shade-color($primary, 10%) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $accordion-color !default;\n$accordion-icon-active-color: $accordion-button-active-color !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: $white !default;\n$tooltip-bg: $black !default;\n$tooltip-border-radius: $border-radius !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer / 4 !default;\n$tooltip-padding-x: $spacer / 2 !default;\n$tooltip-margin: 0 !default;\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n$tooltip-arrow-color: $tooltip-bg !default;\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-start tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: $white !default;\n$popover-max-width: 276px !default;\n$popover-border-width: $border-width !default;\n$popover-border-color: rgba($black, .2) !default;\n$popover-border-radius: $border-radius-lg !default;\n$popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-bg: shade-color($popover-bg, 6%) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: $body-color !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n$popover-arrow-color: $popover-bg !default;\n\n$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;\n// scss-docs-end popover-variables\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba($white, .85) !default;\n$toast-border-width: 1px !default;\n$toast-border-color: rgba(0, 0, 0, .1) !default;\n$toast-border-radius: $border-radius !default;\n$toast-box-shadow: $box-shadow !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: $gray-600 !default;\n$toast-header-background-color: rgba($white, .85) !default;\n$toast-header-border-color: rgba(0, 0, 0, .05) !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: $white !default;\n$modal-content-border-color: rgba($black, .2) !default;\n$modal-content-border-width: $border-width !default;\n$modal-content-border-radius: $border-radius-lg !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n$modal-header-border-color: $border-color !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: $border-width !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: $gray-200 !default;\n$progress-border-radius: $border-radius !default;\n$progress-box-shadow: $box-shadow-inset !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: null !default;\n$list-group-bg: $white !default;\n$list-group-border-color: rgba($black, .125) !default;\n$list-group-border-width: $border-width !default;\n$list-group-border-radius: $border-radius !default;\n\n$list-group-item-padding-y: $spacer / 2 !default;\n$list-group-item-padding-x: $spacer !default;\n$list-group-item-bg-scale: -80% !default;\n$list-group-item-color-scale: 40% !default;\n\n$list-group-hover-bg: $gray-100 !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: $gray-600 !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: $gray-700 !default;\n$list-group-action-hover-color: $list-group-action-color !default;\n\n$list-group-action-active-color: $body-color !default;\n$list-group-action-active-bg: $gray-200 !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: $body-bg !default;\n$thumbnail-border-width: $border-width !default;\n$thumbnail-border-color: $gray-300 !default;\n$thumbnail-border-radius: $border-radius !default;\n$thumbnail-box-shadow: $box-shadow-sm !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: $gray-600 !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: $gray-600 !default;\n$breadcrumb-active-color: $gray-600 !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: $modal-content-bg !default;\n$offcanvas-color: $modal-content-color !default;\n$offcanvas-body-backdrop-color: rgba($modal-backdrop-bg, $modal-backdrop-opacity) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .2rem !default;\n$kbd-padding-x: .4rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: $white !default;\n$kbd-bg: $gray-900 !default;\n\n$pre-color: null !default;\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/core/static/css/bootstrap-reboot.css b/core/static/css/bootstrap-reboot.css new file mode 100644 index 0000000..263a563 --- /dev/null +++ b/core/static/css/bootstrap-reboot.css @@ -0,0 +1,8 @@ +/*! + * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) + */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:"Noto Sans",sans-serif;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#3867ce;text-decoration:underline}a:hover{color:#2d52a5}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#c32aa3;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#393939;border-radius:.12 .5rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(0,0,0,.6);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important} +/*# sourceMappingURL=bootstrap-reboot.css.map */ diff --git a/core/static/css/bootstrap-reboot.css.map b/core/static/css/bootstrap-reboot.css.map new file mode 100644 index 0000000..edd764a --- /dev/null +++ b/core/static/css/bootstrap-reboot.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap-reboot.scss","../../../node_modules/bootstrap/scss/_reboot.scss","../../common/scss/_vars/_font.scss","../../../node_modules/bootstrap/scss/vendor/_rfs.scss","settings/_variables.scss","../../common/scss/_vars/_colors.scss","../../../node_modules/bootstrap/scss/_functions.scss","../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","bootstrap-reboot.css"],"names":[],"mappings":"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","file":"bootstrap-reboot.css","sourcesContent":["/*!\n * Bootstrap Reboot v5.0.0-beta1 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n\n @import \"scss/functions\";\n\n @import \"../../common/scss/itcssImports/vars\";\n @import \"../../common/scss/itcssImports/mixins\";\n @import \"./settings/variables\";\n \n // Prevent the usage of custom properties since we don't add them to `:root` in reboot\n $font-family-base: $font-family-sans-serif; // stylelint-disable-line scss/dollar-variable-default\n $font-family-code: $font-family-monospace; // stylelint-disable-line scss/dollar-variable-default\n @import \"scss/mixins\";\n @import \"scss/reboot\";\n ","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n font-size: $font-size-root;\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: $body-text-align;\n background-color: $body-bg; // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`',closeClass:"toast-close-button",newestOnTop:!0,preventDuplicates:!1,progressBar:!1,progressClass:"toast-progress",rtl:!1}}function f(e){C&&C(e)}function g(t){function o(e){return null==e&&(e=""),e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function s(){c(),u(),d(),p(),g(),C(),l(),i()}function i(){var e="";switch(t.iconClass){case"toast-success":case"toast-info":e="polite";break;default:e="assertive"}I.attr("aria-live",e)}function a(){E.closeOnHover&&I.hover(H,D),!E.onclick&&E.tapToDismiss&&I.click(b),E.closeButton&&j&&j.click(function(e){e.stopPropagation?e.stopPropagation():void 0!==e.cancelBubble&&e.cancelBubble!==!0&&(e.cancelBubble=!0),E.onCloseClick&&E.onCloseClick(e),b(!0)}),E.onclick&&I.click(function(e){E.onclick(e),b()})}function r(){I.hide(),I[E.showMethod]({duration:E.showDuration,easing:E.showEasing,complete:E.onShown}),E.timeOut>0&&(k=setTimeout(b,E.timeOut),F.maxHideTime=parseFloat(E.timeOut),F.hideEta=(new Date).getTime()+F.maxHideTime,E.progressBar&&(F.intervalId=setInterval(x,10)))}function c(){t.iconClass&&I.addClass(E.toastClass).addClass(y)}function l(){E.newestOnTop?v.prepend(I):v.append(I)}function u(){if(t.title){var e=t.title;E.escapeHtml&&(e=o(t.title)),M.append(e).addClass(E.titleClass),I.append(M)}}function d(){if(t.message){var e=t.message;E.escapeHtml&&(e=o(t.message)),B.append(e).addClass(E.messageClass),I.append(B)}}function p(){E.closeButton&&(j.addClass(E.closeClass).attr("role","button"),I.prepend(j))}function g(){E.progressBar&&(q.addClass(E.progressClass),I.prepend(q))}function C(){E.rtl&&I.addClass("rtl")}function O(e,t){if(e.preventDuplicates){if(t.message===w)return!0;w=t.message}return!1}function b(t){var n=t&&E.closeMethod!==!1?E.closeMethod:E.hideMethod,o=t&&E.closeDuration!==!1?E.closeDuration:E.hideDuration,s=t&&E.closeEasing!==!1?E.closeEasing:E.hideEasing;if(!e(":focus",I).length||t)return clearTimeout(F.intervalId),I[n]({duration:o,easing:s,complete:function(){h(I),clearTimeout(k),E.onHidden&&"hidden"!==P.state&&E.onHidden(),P.state="hidden",P.endTime=new Date,f(P)}})}function D(){(E.timeOut>0||E.extendedTimeOut>0)&&(k=setTimeout(b,E.extendedTimeOut),F.maxHideTime=parseFloat(E.extendedTimeOut),F.hideEta=(new Date).getTime()+F.maxHideTime)}function H(){clearTimeout(k),F.hideEta=0,I.stop(!0,!0)[E.showMethod]({duration:E.showDuration,easing:E.showEasing})}function x(){var e=(F.hideEta-(new Date).getTime())/F.maxHideTime*100;q.width(e+"%")}var E=m(),y=t.iconClass||E.iconClass;if("undefined"!=typeof t.optionsOverride&&(E=e.extend(E,t.optionsOverride),y=t.optionsOverride.iconClass||y),!O(E,t)){T++,v=n(E,!0);var k=null,I=e("

"),M=e("
"),B=e("
"),q=e("
"),j=e(E.closeHtml),F={intervalId:null,hideEta:null,maxHideTime:null},P={toastId:T,state:"visible",startTime:new Date,options:E,map:t};return s(),r(),a(),f(P),E.debug&&console&&console.log(P),I}}function m(){return e.extend({},p(),b.options)}function h(e){v||(v=n()),e.is(":visible")||(e.remove(),e=null,0===v.children().length&&(v.remove(),w=void 0))}var v,C,w,T=0,O={error:"error",info:"info",success:"success",warning:"warning"},b={clear:r,remove:c,error:t,getContainer:n,info:o,options:{},subscribe:s,success:i,version:"2.1.3",warning:a};return b}()})}("function"==typeof define&&define.amd?define:function(e,t){"undefined"!=typeof module&&module.exports?module.exports=t(require("jquery")):window.toastr=t(window.jQuery)}); +//# sourceMappingURL=toastr.js.map \ No newline at end of file diff --git a/core/static/journal_about/css/article.css b/core/static/journal_about/css/article.css new file mode 100644 index 0000000..64643c4 --- /dev/null +++ b/core/static/journal_about/css/article.css @@ -0,0 +1,3 @@ +@charset "UTF-8";/*! + * Article + */@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(30px)}60%{-webkit-transform:translateY(15px)}}@-moz-keyframes bounce{0%,100%,20%,50%,80%{-moz-transform:translateY(0)}40%{-moz-transform:translateY(30px)}60%{-moz-transform:translateY(15px)}}@-ms-keyframes bounce{0%,100%,20%,50%,80%{-ms-transform:translateY(0)}40%{-ms-transform:translateY(30px)}60%{-ms-transform:translateY(15px)}}@-o-keyframes bounce{0%,100%,20%,50%,80%{-o-transform:translateY(0)}40%{-o-transform:translateY(30px)}60%{-o-transform:translateY(15px)}}@keyframes bounce{0%,100%,20%,50%,80%{transform:translateY(0)}40%{transform:translateY(30px)}60%{transform:translateY(15px)}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,30%,0);transform:translate3d(0,30%,0);visibility:visible;opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.scielo__shadow-1{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.scielo__shadow-2{box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.scielo__shadow-3{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}.scielo__shadow-4{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.scielo__shadow-5{box-shadow:0 19px 38px rgba(0,0,0,.3),0 15px 12px rgba(0,0,0,.22)}.article .zindexFix{z-index:98!important}.article a.goto{white-space:nowrap;text-decoration:none}.article a.goto .glyphBtn{margin-right:-5px}.article .levelMenu{padding:18px 0;margin:0;height:100px;background:#efeeec}.article .levelMenu a.selected:after{border-bottom-color:#fff;display:none}.article .levelMenu .downloadOptions li,.article .levelMenu .downloadOptions ul{display:inline;margin:0;padding:0}.article .levelMenu .downloadOptions li{list-style:none}.article .levelMenu .downloadOptions ul.dropdown-menu{display:none;min-width:inherit;width:100%;border-color:#dedddb;font-size:.9em;border-top-left-radius:0;border-top-right-radius:0;border-top:0}.article .levelMenu .downloadOptions .group:hover ul.dropdown-menu{display:block}.article .levelMenu .downloadOptions .group:hover a.btn{color:#fff}.article .levelMenu .downloadOptions .group:hover a.btn .glyphBtn.pdfDownload{background-position:center -2800px}.article .levelMenu .downloadOptions .group:hover a.btn .glyphBtn.xmlDownload{background-position:center -2845px}.article .levelMenu .downloadOptions .group:hover a.btn .glyphBtn.epubDownload{background-position:center -3700px}.article .levelMenu .downloadOptions .btn-group .group:not(:first-child):not(:last-child) .btn{border-radius:0}.article .levelMenu .downloadOptions .btn-group .group:first-child:not(:last-child) .btn{border-bottom-right-radius:0;border-top-right-radius:0}.article .levelMenu .downloadOptions .btn-group .group:first-child:not(:last-child) .btn{border-bottom-right-radius:0;border-top-right-radius:0}.article .levelMenu .downloadOptions .btn-group .group:last-child:not(:first-child) .btn{border-bottom-left-radius:0;border-top-left-radius:0}.article .levelMenu .downloadOptions .group{display:block;float:left;position:relative}.article .levelMenu .downloadOptions .group a.btn{width:100%}.article .levelMenu .downloadOptions .group+.group{margin-left:-1px}.article .levelMenu .downloadOptions .btn{text-align:left}.article .share{display:flex;justify-content:flex-end;align-items:center;height:36px}.article .share a{margin:0 3px}.article .share .sendViaMail{margin-left:4px}.article .journalMenu .language{top:10px}.article .alternativeHeader{top:0!important}.article .alternativeHeader .mainNav{height:55px}.article .mainNav{height:55px}.article .mainMenu{top:-7px}.article .xref{display:inline-block;font-weight:700;text-align:center;color:#3867ce;cursor:pointer}.article .xref.big{margin-top:0;vertical-align:middle;color:#b67f00}.article .xref a{text-decoration:none;color:#b67f00}.article sup.xref{padding:4px 0 3px}.article .ref{position:relative;display:inline}@media screen and (max-width:575px){.article .ref{position:static}}.article .ref .refCtt{-webkit-box-shadow:2px 2px 7px 0 rgba(0,0,0,.2);-moz-box-shadow:2px 2px 7px 0 rgba(0,0,0,.2);box-shadow:2px 2px 7px 0 rgba(0,0,0,.2)}.article .ref .closed{display:none}.article .ref .opened{margin-top:1.4em;padding:14px;position:absolute;width:350px;height:auto!important;overflow-y:inherit!important;overflow-x:hidden;text-overflow:ellipsis;border-radius:4px;z-index:99;background:#3867ce;color:#fff}@media screen and (max-width:575px){.article .ref .opened{width:90%}}.scielo__theme--dark .article .ref .opened{background:#86acff;color:#333;outline:2px solid red!important}.scielo__theme--light .article .ref .opened{background:#3867ce;color:#fff}.article .ref .opened:before{content:'';display:block;width:100%;position:absolute;height:.6em;margin-top:-1.6em;background:0 0;left:0}.article .ref .opened a{color:#fff!important}.article .ref .opened a:hover{text-decoration:underline}.article .ref .opened strong{display:block;margin:0 0 5px}.article .ref .opened .source{display:block;margin-top:5px}.article .ref .opened .refOverflow{overflow-x:hidden;text-overflow:ellipsis}.article .ref.footnote{letter-spacing:0}.article .ref.footnote .refCtt{padding:0}.article .ref.footnote .refCtt .refCttPadding{display:block;padding:14px}.article .ref.footnote .refCtt.opened{background:#fef5e8;border:1px solid #fce0b7;color:#333;padding:5px 10px}.article .ref.footnote .fn-title{display:block;text-transform:uppercase;color:#b67f00}.article .ref.footnote .footref{cursor:default}.article .ref.footnote .smallRef{font-size:1em;position:relative;display:block;padding:14px;width:100%;color:#fff;border:0;border-radius:0}.article .ref.footnote .smallRef .xref{position:absolute;top:12px;cursor:default}.article .ref.footnote .smallRef .xref:first-child{font-size:11px!important}.article .ref.footnote .smallRef .footrefCtt{display:block;padding-left:14px}.article .refList{margin:0;padding:0;width:100%}.article .refList *{line-height:130%}.article .refList [class*=" material-icons"],.article .refList [class^=material-icons]{line-height:1}.article .refList a{overflow-x:hidden;text-overflow:ellipsis}.article .refList.outer{padding-bottom:10px;overflow:hidden;-webkit-box-shadow:inset 0 -7px 7px -7px rgba(0,0,0,.2);box-shadow:inset 0 -7px 7px -7px rgba(0,0,0,.2)}.article .refList.full{position:absolute;height:auto!important;overflow:inherit!important;background:#fff;z-index:99;padding-bottom:0;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,.2);box-shadow:0 0 10px 0 rgba(0,0,0,.2)}.article .refList li{list-style:none;padding:16px 8px 16px 0;margin:0;width:100%;border-bottom:1px dotted #ccc}.scielo__theme--dark .article .refList li{border-bottom:1px dotted rgba(255,255,255,.3)}.scielo__theme--light .article .refList li{border-bottom:1px dotted #ccc}.article .refList li:last-child{background:0 0}.article .refList li:after{content:'';clear:both;display:block;height:1px;float:none;width:100%}.article .refList li.highlight{background-color:#f0f3fb}.article .refList li.highlight .closed{display:none}.article .refList li.highlight .opened{display:inline-block}.article .refList li strong{margin:0 0 10px}.article .refList sup{border-radius:30px}.article .refList .source{font-style:italic}.article .refList.footnote .xref.big{color:#b67f00}.article .ref-list .refList .xref{width:33px;padding:5px 10px;cursor:default;position:absolute;left:0;top:5px;margin-top:1%}.article .ref-list .refList .refCtt.opened{margin-top:1.4em}.article .ref-list .refList li{position:relative;padding-left:30px;text-overflow:ellipsis;z-index:1}.article .ref-list .refList div{display:block;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto}.article .ref-list .refList div strong{display:inline}.article .ref-list .refList.footnote li{padding:0 8px 8px 0}.article .ref-list .refList.footnote li .xref.big{position:static;width:auto}.articleCtt{background:#f7f6f4}.scielo__theme--dark .articleCtt{background:#393939}.scielo__theme--light .articleCtt{background:#f7f6f4}.articleCtt hr{border:0;background:url(../img/dashline.png) bottom left repeat-x;height:1px;margin:50px 0}.articleCtt .sci-ico-fileFigure:before,.articleCtt .sci-ico-fileFormula:before,.articleCtt .sci-ico-fileTable:before{margin-left:-2px;margin-right:-4px}.articleCtt .open-asset-modal{white-space:nowrap}.articleCtt .container{position:relative}.articleCtt .articleBlock h1{margin:0;font-size:1.9em}.articleCtt .articleBlock a:active,.articleCtt .articleBlock a:focus,.articleCtt .articleBlock a:visited{text-decoration:none}.articleCtt .articleMeta,.articleCtt .editionMeta{text-align:center;font-size:.85em}.articleCtt .articleMeta span,.articleCtt .editionMeta span{font-size:1em;margin:0;font-weight:400;color:#a7a49e}.articleCtt .articleMeta .atricleLink,.articleCtt .editionMeta .atricleLink{width:18px;background-position:center -2576px}.articleCtt .articleMeta{line-height:24px}.articleCtt .articleMeta .sci-ico-cr,.articleCtt .articleMeta .sci-ico-public-domain{font-size:21px}.articleCtt .articleMeta label{margin-left:8px;width:10%;border:1px solid #e0e0df;cursor:pointer}.articleCtt .articleMeta div{display:inline}.articleCtt .articleMeta div:first-child{margin-right:60px}.articleCtt .articleMeta .doi{color:#1b92e4}.articleCtt .license{letter-spacing:-16.28px;vertical-align:middle;line-height:44px;white-space:nowrap;display:inline-block;margin-bottom:5px;cursor:pointer}.articleCtt .license [class*=" sci-ico-"],.articleCtt .license [class^=sci-ico-]{cursor:pointer;font-size:44px}.articleCtt .license [class*=" sci-ico-"].sci-ico-cc,.articleCtt .license [class^=sci-ico-].sci-ico-cc{margin-right:4px}.articleCtt .contribGroup{color:#403d39;margin:15px 10%;font-size:1.1em;text-align:center}.articleCtt .contribGroup a.btn-fechar{display:inline-block;border-radius:100%;cursor:pointer;width:30px;height:30px;font-size:86%;padding:5px 0;text-align:center;margin-top:10px}.articleCtt .contribGroup a.btn-fechar:hover{color:#fff}.articleCtt .contribGroup .sci-ico-emailOutlined{font-size:20px;vertical-align:baseline}.articleCtt .contribGroup .dropdown{display:inline-block;padding:0 10px}.articleCtt .contribGroup .dropdown .dropdown-toggle{white-space:nowrap}.articleCtt .contribGroup .dropdown .dropdown-menu{padding:0 20px 10px 20px;color:#fff;text-align:left;box-shadow:none;border:none}.articleCtt .contribGroup .dropdown .dropdown-menu strong{display:block;margin:20px 0 8px 0;font-size:11px;color:#00314c;text-transform:uppercase}.articleCtt .contribGroup .dropdown a{cursor:pointer}.articleCtt .contribGroup .dropdown a span{display:inline-block;padding:5px 0}.articleCtt .contribGroup .dropdown.open a{color:#fff}.articleCtt .contribGroup.contribGroupAlignLeft{text-align:left;margin-left:0;margin-top:0}.articleCtt .contribGroup.contribGroupAlignLeft .dropdown:first-child{margin-left:-10px}.articleCtt .linkGroup{position:relative;font-size:.85em}.articleCtt .linkGroup a.selected{position:relative}.articleCtt .linkGroup a.selected:after{content:'';display:block;position:absolute;bottom:-16px;left:4px;width:16px;height:7px;background:url(../img/articleContent-arrow.png) bottom center no-repeat;z-index:999}.articleCtt .floatInformation{margin-top:9px;border:1px solid #ddd;padding:15px;position:absolute;display:none;z-index:99;width:100%;background:#f7f6f4}.scielo__theme--dark .articleCtt .floatInformation{background:#393939}.scielo__theme--light .articleCtt .floatInformation{background:#f7f6f4}.articleCtt .floatInformation .close{margin-top:-7px}.articleCtt .floatInformation ul{margin:0;padding:0}.articleCtt .floatInformation li{list-style:none;margin-bottom:7px;padding-left:20px}.articleCtt .floatInformation li .xref:first-child{margin-left:-22px}.articleCtt .floatInformation .rowBlock{padding:7px 15px;background:url(../img/dashline.png) bottom left repeat-x}.articleCtt .floatInformation .rowBlock:last-child{background:0 0}.articleCtt .floatInformation h3{margin:0 0 10px}.articleCtt .articleTxt{position:relative;padding:0 50px 100px;margin-bottom:60px;overflow-x:hidden;box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23);border-radius:4px;background:#fff}.scielo__theme--dark .articleCtt .articleTxt{background:#333}.scielo__theme--light .articleCtt .articleTxt{background:#fff}.articleCtt .articleTxt .article-title,.articleCtt .articleTxt .articleSectionTitle{margin:25px 0 12px}@media screen and (max-width:575px){.articleCtt .articleTxt .article-title,.articleCtt .articleTxt .articleSectionTitle{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink{font-size:.85em;margin:0;font-weight:400;padding:10px 0 0;text-align:center;min-height:35px;line-height:110%;color:#6c6b6b}.scielo__theme--dark .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink{color:#adadad}.scielo__theme--light .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink{color:#6c6b6b}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._articleBadge{font-weight:700;opacity:.88}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink .group-doi{white-space:nowrap;display:inline-block}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{color:#3867ce}@media screen and (max-width:575px){.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{display:table;white-space:pre-wrap;margin:12px 0}}.scielo__theme--dark .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{color:#86acff}.scielo__theme--light .articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink ._doi{color:#3867ce}.articleCtt .articleTxt .articleBadge-editionMeta-doi-copyLink .copyLink{white-space:nowrap;margin:0 0 8px 8px}.articleCtt .articleTxt .article-title{text-align:center}@media screen and (max-width:575px){.articleCtt .articleTxt .article-title{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}}.articleCtt .articleTxt .article-title .sci-ico-openAccess{margin-bottom:7px}.articleCtt .articleTxt .article-title .short-link{position:relative;visibility:hidden;cursor:pointer;text-decoration:none}.articleCtt .articleTxt .article-title .short-link [class^=sci-ico-]{vertical-align:baseline!important;margin-left:.5rem}.articleCtt .articleTxt .article-title .short-link:after{position:absolute;background:#34ad65;top:100%;left:0;right:0;bottom:0;z-index:2;text-align:center;font-family:scielo-glyphs!important;content:"\e924";color:#fff;font-size:20px;visibility:hidden;vertical-align:middle;display:flex;justify-content:center;align-items:center;border-radius:4px}.articleCtt .articleTxt .article-title .short-link.copyFeedback:after{top:0;visibility:visible}.articleCtt .articleTxt .article-title .ref .opened{margin-top:2.4em}.articleCtt .articleTxt .article-title .ref.footnote .xref:first-child{font-size:1.5rem}.articleCtt .articleTxt .article-title .ref.footnote .refCtt.opened{text-align:left;font-weight:400;font-size:18px;letter-spacing:inherit;background:#fef5e8;border:1px solid #fce0b7;color:#403d39}.articleCtt .articleTxt .article-title .ref.footnote .refCtt .refCttPadding{line-height:1.5rem}.articleCtt .articleTxt .article-title:hover .short-link{visibility:visible}.articleCtt .articleTxt h2.article-title{font-weight:400}.articleCtt .articleTxt .article-correction-title{margin:10px 15% 20px;border:2px solid #f5d431;padding:20px}.articleCtt .articleTxt .article-correction-title .panel-heading{font-size:13px;font-weight:700;text-align:left;padding:3px;padding:5px}.articleCtt .articleTxt .article-correction-title .panel-body{padding:0}.articleCtt .articleTxt .article-correction-title ul{margin:0;padding:0;text-align:left;font-size:14px}.articleCtt .articleTxt .article-correction-title li{list-style:none;padding-left:15px;position:relative}.articleCtt .articleTxt .article-correction-title li:before{content:'\00bb';font-weight:700;position:absolute;left:0}.articleCtt .articleTxt .article-correction-title a{font-weight:700}.articleCtt .articleTxt .article-correction-title a:hover{text-decoration:underline}.articleCtt .articleTxt .articleSection{padding:0 0 1px;background:url(../img/dashline.png) bottom left repeat-x}.articleCtt .articleTxt .articleSection .article-title{text-align:left}@media screen and (max-width:575px){.articleCtt .articleTxt .articleSection .article-title{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}}.articleCtt .articleTxt .articleSection:last-child{background:0 0}.articleCtt .articleTxt .articleSection .articleSignature{font-size:15px;font-style:italic}.articleCtt .articleTxt .articleSection .articleSignature small{display:block}.articleCtt .articleTxt .paragraph{position:relative;margin-bottom:25px;font-size:1em;line-height:1.7em}.articleCtt .articleTxt .btn.primary{background:#fff;font-size:1.1em;padding:10px 15px}.articleCtt .articleTxt .btn.primary:hover{color:#fff}.articleCtt .articleTxt span.formula{display:block;margin:20px 0;padding:7px;text-align:center;font-size:2em;border-radius:3px}.articleCtt .articleTxt span.formula img{max-width:95%}.articleCtt .articleTxt p{margin:0 0 15px;padding:0;overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto}.articleCtt .articleTxt .articleReferral{display:flex;align-items:center;position:relative;margin-bottom:20px;padding:15px 50px 15px 140px;border:1px solid #f3f2e4;vertical-align:middle;min-height:168px}.articleCtt .articleTxt .articleReferral .arText{padding-left:25px}.articleCtt .articleTxt .articleReferral .arText h2{margin-top:0}.articleCtt .articleTxt .articleReferral .arText p{margin-bottom:0}.articleCtt .articleTxt .articleReferral .arPicture{position:relative;width:98px;margin-left:-120px}.articleCtt .articleTxt .articleReferral .arPicture small{font-size:62%;white-space:nowrap}.articleCtt .articleTxt .articleReferral .arPicture small span{display:block}.articleCtt .articleTxt .articleReferral.noPicture{padding:15px 40px;min-height:100%}.articleCtt .articleTxt .articleReferral.noPicture .arText{padding-left:0}.articleCtt .articleTxt .articleReferral.biography .arPicture{margin-top:-40px}.articleCtt .articleMenu{position:absolute;margin:25px 0 90px 0;padding:0 15px 0 0;font-size:.85em}.articleCtt .articleMenu.fixed{position:fixed;top:50px}.articleCtt .articleMenu.fixedBottom{position:absolute;top:initial;bottom:50px}.articleCtt .articleMenu li{list-style:none;padding-left:17px}.articleCtt .articleMenu li:before{content:'\00bb';display:inline-block;width:12px;text-align:center;margin-left:-17px;vertical-align:middle;margin-bottom:5px;color:#6c6b6b}.scielo__theme--dark .articleCtt .articleMenu li:before{color:#adadad}.scielo__theme--light .articleCtt .articleMenu li:before{color:#6c6b6b}.articleCtt .articleMenu li.link-to-top{margin-top:20px}.articleCtt .articleMenu li.link-to-top:before{content:'';display:inline;width:auto}.articleCtt .articleMenu li.link-to-top a .circle{width:20px;height:20px;display:inline-block;color:#fff;border-radius:100px;padding:0 0 0 3px;font-size:125%}.articleCtt .articleMenu a{display:inline-block;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;margin-bottom:5px;text-decoration:none;color:#6c6b6b}.scielo__theme--dark .articleCtt .articleMenu a{color:#adadad}.scielo__theme--light .articleCtt .articleMenu a{color:#6c6b6b}.articleCtt .articleMenu ul{margin:0;padding:0}.articleCtt .articleMenu li li{padding-left:7px}.articleCtt .articleMenu li li:before{display:none}.articleCtt .articleMenu li.selected:before,.articleCtt .articleMenu li.selected>a{font-weight:700;color:#00314c}.scielo__theme--dark .articleCtt .articleMenu li.selected:before,.scielo__theme--dark .articleCtt .articleMenu li.selected>a{color:#eee}.scielo__theme--light .articleCtt .articleMenu li.selected:before,.scielo__theme--light .articleCtt .articleMenu li.selected>a{color:#00314c}.articleCtt .articleMenu li.selected li a,.articleCtt .articleMenu li.selected li:before{color:#00314c}.scielo__theme--dark .articleCtt .articleMenu li.selected li a,.scielo__theme--dark .articleCtt .articleMenu li.selected li:before{color:#eee}.scielo__theme--light .articleCtt .articleMenu li.selected li a,.scielo__theme--light .articleCtt .articleMenu li.selected li:before{color:#00314c}.articleCtt .articleMenu a:active,.articleCtt .articleMenu a:focus,.articleCtt .articleMenu a:visited{text-decoration:none}.articleCtt .articleFigure{position:absolute;border:4px solid #efeeec}.articleCtt .table-notes a{display:block;padding:5px 0}.articleCtt .nav-tabs li:first-child{margin-left:15px}.articleCtt .nav-tabs a{border:1px solid #ddd;background:#fff}.articleCtt .nav-tabs a:hover{background:#f7f6f4}.scielo__theme--dark .articleCtt .nav-tabs a:hover{background:#393939}.scielo__theme--light .articleCtt .nav-tabs a:hover{background:#f7f6f4}.articleCtt .articleTimeline{margin:0 0 25px;padding:0;font-size:.9em}.articleCtt .articleTimeline li{display:inline-block;width:33%;height:40px;padding-left:25px;list-style:none}.articleCtt .articleTimeline li:before{content:'\00bb';margin-left:-25px;display:inline-block;width:22px;text-align:center}.articleCtt .documentLicense{margin:20px 0}.articleCtt .documentLicense .container-license{font-size:.8em;padding:25px;width:100%;background:#efeeec}.scielo__theme--dark .articleCtt .documentLicense .container-license{background:#414141}.scielo__theme--light .articleCtt .documentLicense .container-license{background:#efeeec}.articleCtt .documentLicense .container-license .row div:first-child{text-align:center}.articleCtt .documentLicense .container-license .row div:last-child{padding-left:0}.articleCtt .documentLicense .container-license a{cursor:pointer;display:inline-block}.articleCtt .documentLicense img{margin:0 auto;width:100%}.articleCtt .journalLicense .row{padding-bottom:25px;font-size:.9em}.articleCtt .share{text-align:center;margin-top:-3px;background:url(../img/dashline.png) bottom left repeat-x;padding-bottom:5px}.articleCtt .collapseBlock{font-size:.9em}.articleCtt .collapseBlock .collapseTitle{position:relative;display:block;background:url(../img/dashline.png) bottom left repeat-x;padding:7px 2px}.articleCtt .collapseBlock .collapseTitle .collapseIcon{position:absolute;right:0}.articleCtt .collapseBlock .collapseTitle:active,.articleCtt .collapseBlock .collapseTitle:focus{text-decoration:none}.articleCtt .collapseContent{background:#f7f6f5;font-size:.9em;padding:15px}.articleCtt .collapseContent ul{margin:0;padding:0}.articleCtt .collapseContent li{list-style:none;padding-left:15px;margin-bottom:5px}.articleCtt .collapseContent li:before{content:'\00bb';display:inline-block;width:13px;text-align:center;margin-left:-15px}.articleCtt .collapseContent .logos:before{width:22px;height:12px;display:inline-block;content:'';background:url(../img/button.glyphs.png) no-repeat}.articleCtt .collapseContent .logos.scielo:before{background-position:center -4556px}.articleCtt .collapseContent .logos.fapesp:before{background-position:center -4506px}.articleCtt .collapseContent .logos.google:before{background-position:center -4531px}.articleCtt .functionsBlock{position:absolute;right:0;z-index:99}.articleCtt .articleBadge{text-align:center}.articleCtt .articleBadge span{display:inline-block;padding:5px 10px;margin:0 0 15px 0;border-radius:4px;position:relative;font-size:20px}.articleCtt .articleBadge span:after{content:'';position:absolute;left:0;right:0;bottom:0}.articleCtt .articleCttLeft .article-title,.articleCtt .articleCttLeft .articleBadge,.articleCtt .articleCttLeft .articleMeta,.articleCtt .articleCttLeft .editionMeta{text-align:left!important}.articleCtt .articleCttLeft .contribGroup{margin-left:0;margin-right:0;text-align:left}.articleCtt .articleCttLeft .contribGroup .dropdown:first-child{margin-left:-10px}#translateArticleModal .modal-body{font-size:.9em;background:#f7f6f4}.scielo__theme--dark #translateArticleModal .modal-body{background:#393939}.scielo__theme--light #translateArticleModal .modal-body{background:#f7f6f4}#translateArticleModal .modal-footer{margin-top:0}#translateArticleModal .dashline{padding-bottom:5px;background:url(../img/dashline.png) bottom left repeat-x}#translateArticleModal th{padding:12px;border:1px solid #ddd;border-radius:4px;background:#fdfcf9}#translateArticleModal table{width:100%}#translateArticleModal td{padding:8px 10px;border-bottom:1px solid #dee5f5;text-align:center}#translateArticleModal th{vertical-align:top}.ModalDefault .tab-pane,.articleCtt .tab-pane{font-size:.9em}.ModalDefault .tab-pane p,.articleCtt .tab-pane p{margin:10px 0}.ModalDefault .tab-pane .center,.articleCtt .tab-pane .center{text-align:center}.ModalDefault .tab-pane label,.articleCtt .tab-pane label{font-weight:400;color:#888}.ModalDefault .tab-pane .big,.articleCtt .tab-pane .big{font-size:2em;font-weight:400}.ModalDefault .tab-pane table td,.ModalDefault .tab-pane table th,.articleCtt .tab-pane table td,.articleCtt .tab-pane table th{padding:7px 10px}.ModalDefault .tab-pane table th,.articleCtt .tab-pane table th{font-weight:400;color:#b7b7b7}.ModalDefault .tab-pane a.midGlyph,.articleCtt .tab-pane a.midGlyph{display:block;text-align:center}.ModalDefault .fig,.ModalDefault .table,.articleCtt .fig,.articleCtt .table{margin-top:10px;margin-bottom:40px;position:relative;width:initial}.ModalDefault .fig .col-md-8,.ModalDefault .table .col-md-8,.articleCtt .fig .col-md-8,.articleCtt .table .col-md-8{padding-top:10px}.ModalDefault .fig strong,.ModalDefault .table strong,.articleCtt .fig strong,.articleCtt .table strong{padding:0}.ModalDefault .fig .thumb,.ModalDefault .fig .thumbOff,.ModalDefault .table .thumb,.ModalDefault .table .thumbOff,.articleCtt .fig .thumb,.articleCtt .fig .thumbOff,.articleCtt .table .thumb,.articleCtt .table .thumbOff{height:160px;background-size:100% auto;text-indent:-5000px;background-color:#e5e4e3;cursor:pointer;border-radius:3px;position:relative;border:4px solid #ccc}.scielo__theme--dark .ModalDefault .fig .thumb,.scielo__theme--dark .ModalDefault .fig .thumbOff,.scielo__theme--dark .ModalDefault .table .thumb,.scielo__theme--dark .ModalDefault .table .thumbOff,.scielo__theme--dark .articleCtt .fig .thumb,.scielo__theme--dark .articleCtt .fig .thumbOff,.scielo__theme--dark .articleCtt .table .thumb,.scielo__theme--dark .articleCtt .table .thumbOff{border:4px solid rgba(255,255,255,.3)}.scielo__theme--light .ModalDefault .fig .thumb,.scielo__theme--light .ModalDefault .fig .thumbOff,.scielo__theme--light .ModalDefault .table .thumb,.scielo__theme--light .ModalDefault .table .thumbOff,.scielo__theme--light .articleCtt .fig .thumb,.scielo__theme--light .articleCtt .fig .thumbOff,.scielo__theme--light .articleCtt .table .thumb,.scielo__theme--light .articleCtt .table .thumbOff{border:4px solid #ccc}.ModalDefault .fig .thumb img,.ModalDefault .fig .thumbOff img,.ModalDefault .table .thumb img,.ModalDefault .table .thumbOff img,.articleCtt .fig .thumb img,.articleCtt .fig .thumbOff img,.articleCtt .table .thumb img,.articleCtt .table .thumbOff img{width:100%}.ModalDefault .fig .thumb .zoom,.ModalDefault .fig .thumbOff .zoom,.ModalDefault .table .thumb .zoom,.ModalDefault .table .thumbOff .zoom,.articleCtt .fig .thumb .zoom,.articleCtt .fig .thumbOff .zoom,.articleCtt .table .thumb .zoom,.articleCtt .table .thumbOff .zoom{position:absolute;bottom:10px;right:10px;border-radius:4px;font-size:24px;text-align:center;width:30px;height:30px;line-height:30px;text-indent:0;background-color:#3867ce;color:#fff}.scielo__theme--dark .ModalDefault .fig .thumb .zoom,.scielo__theme--dark .ModalDefault .fig .thumbOff .zoom,.scielo__theme--dark .ModalDefault .table .thumb .zoom,.scielo__theme--dark .ModalDefault .table .thumbOff .zoom,.scielo__theme--dark .articleCtt .fig .thumb .zoom,.scielo__theme--dark .articleCtt .fig .thumbOff .zoom,.scielo__theme--dark .articleCtt .table .thumb .zoom,.scielo__theme--dark .articleCtt .table .thumbOff .zoom{background-color:#86acff;color:#333}.scielo__theme--light .ModalDefault .fig .thumb .zoom,.scielo__theme--light .ModalDefault .fig .thumbOff .zoom,.scielo__theme--light .ModalDefault .table .thumb .zoom,.scielo__theme--light .ModalDefault .table .thumbOff .zoom,.scielo__theme--light .articleCtt .fig .thumb .zoom,.scielo__theme--light .articleCtt .fig .thumbOff .zoom,.scielo__theme--light .articleCtt .table .thumb .zoom,.scielo__theme--light .articleCtt .table .thumbOff .zoom{background-color:#3867ce;color:#fff}.ModalDefault .fig .thumbOff,.ModalDefault .table .thumbOff,.articleCtt .fig .thumbOff,.articleCtt .table .thumbOff{font-family:'Material Icons Outlined'!important;text-align:center;line-height:140px;font-size:100px;color:#b7b4af;text-indent:0;overflow:hidden;background:#fff}.scielo__theme--dark .ModalDefault .fig .thumbOff,.scielo__theme--dark .ModalDefault .table .thumbOff,.scielo__theme--dark .articleCtt .fig .thumbOff,.scielo__theme--dark .articleCtt .table .thumbOff{background:#333}.scielo__theme--light .ModalDefault .fig .thumbOff,.scielo__theme--light .ModalDefault .table .thumbOff,.scielo__theme--light .articleCtt .fig .thumbOff,.scielo__theme--light .articleCtt .table .thumbOff{background:#fff}.ModalDefault .fig .thumbOff:before,.ModalDefault .table .thumbOff:before,.articleCtt .fig .thumbOff:before,.articleCtt .table .thumbOff:before{content:"table_chart"}.ModalDefault .fig .thumbImg,.ModalDefault .table .thumbImg,.articleCtt .fig .thumbImg,.articleCtt .table .thumbImg{position:relative;overflow:hidden;box-sizing:border-box;height:140px;border:4px solid #e5e4e3;border-radius:3px;background-color:#e5e4e3;cursor:pointer}.ModalDefault .fig .thumbImg img,.ModalDefault .table .thumbImg img,.articleCtt .fig .thumbImg img,.articleCtt .table .thumbImg img{width:100%;height:auto;min-height:131px;display:block}.ModalDefault .fig .thumbImg .zoom,.ModalDefault .table .thumbImg .zoom,.articleCtt .fig .thumbImg .zoom,.articleCtt .table .thumbImg .zoom{position:absolute;bottom:10px;right:10px;width:30px;height:30px;border-radius:4px;padding:5px;display:inline-block;font-size:24px;line-height:50%;background-color:#3867ce;color:#fff}.scielo__theme--dark .ModalDefault .fig .thumbImg .zoom,.scielo__theme--dark .ModalDefault .table .thumbImg .zoom,.scielo__theme--dark .articleCtt .fig .thumbImg .zoom,.scielo__theme--dark .articleCtt .table .thumbImg .zoom{background-color:#86acff;color:#333}.scielo__theme--light .ModalDefault .fig .thumbImg .zoom,.scielo__theme--light .ModalDefault .table .thumbImg .zoom,.scielo__theme--light .articleCtt .fig .thumbImg .zoom,.scielo__theme--light .articleCtt .table .thumbImg .zoom{background-color:#3867ce;color:#fff}.ModalDefault .fig .preview,.ModalDefault .table .preview,.articleCtt .fig .preview,.articleCtt .table .preview{position:absolute;border-radius:3px;border:4px solid #e5e4e3;background-color:#fff;top:0;right:0;z-index:99;padding:10px}.ModalDefault .fig .preview img,.ModalDefault .table .preview img,.articleCtt .fig .preview img,.articleCtt .table .preview img{width:100%}.ModalDefault .fig .figInfo,.ModalDefault .table .figInfo,.articleCtt .fig .figInfo,.articleCtt .table .figInfo{padding:10px 10px 10px 45px;line-height:1.4em;color:#8a8987;position:relative}.ModalDefault .fig .figInfo .glyphBtn,.ModalDefault .table .figInfo .glyphBtn,.articleCtt .fig .figInfo .glyphBtn,.articleCtt .table .figInfo .glyphBtn{position:absolute;top:10px;margin-left:-34px}.ModalDefault .formula,.articleCtt .formula{text-align:center;font-family:"Times New Roman",Times,serif;margin-bottom:15px}.ModalDefault .formula span,.articleCtt .formula span{font-family:Arial;font-weight:700;font-size:16px;display:block;width:100%}.ModalDefault .formula .formula-container,.articleCtt .formula .formula-container{width:100%;display:flex;align-content:center;align-items:center;position:relative;flex-direction:column}.ModalDefault .formula .formula-container .MathJax_Display,.ModalDefault .formula .formula-container .MathJax_SVG,.ModalDefault .formula .formula-container .MathJax_SVG_Display,.ModalDefault .formula .formula-container .formula-body,.articleCtt .formula .formula-container .MathJax_Display,.articleCtt .formula .formula-container .MathJax_SVG,.articleCtt .formula .formula-container .MathJax_SVG_Display,.articleCtt .formula .formula-container .formula-body{flex:99;font-size:1.4rem!important}.ModalDefault .formula .formula-container>span,.articleCtt .formula .formula-container>span{flex:1}.ModalDefault .formula .formula-container .label,.articleCtt .formula .formula-container .label{flex:1;color:#000;font-size:1.4rem;display:block;width:auto}.ModalDefault .formula .formula-container .label:first-child,.articleCtt .formula .formula-container .label:first-child{left:0}.ModalDefault .formula .formula-container .label:last-child,.articleCtt .formula .formula-container .label:last-child{right:0}.ModalDefault .formula svg,.articleCtt .formula svg{display:block;width:100%}.ModalDefault .modal-center{text-align:center}.ModalDefault .md-list{margin:0;padding:0;list-style:none}.ModalDefault .md-list li{margin-bottom:4px}.ModalDefault .md-list li:last-child{margin-bottom:0}.ModalDefault .md-list li.colspan3{margin-bottom:10px}.ModalDefault .md-list li.colspan3 a{display:flex;vertical-align:middle;justify-content:center;align-items:center;height:63px;white-space:normal;overflow:hidden}.ModalDefault .md-list.inline li{float:left;min-width:18%;margin-right:10px}.ModalDefault .md-tabs{margin:0;padding:0}.ModalDefault .md-tabs>li{display:flex;align-items:center;justify-content:center;text-align:center;padding:0}.ModalDefault .md-tabs>li a{padding:5px;display:inline-block;margin:0;border:none;color:#7f7a71}.ModalDefault .md-tabs>li a:focus,.ModalDefault .md-tabs>li a:hover{background:0 0}.ModalDefault .md-tabs>li.active a:focus,.ModalDefault .md-tabs>li.active a:hover{border:none;background:0 0}.ModalDefault .md-tabs>li.active .figureIconGray{background-position:center -4414px}.ModalDefault .md-tabs>li.active .tableIconGray{background-position:center -4368px}.ModalDefault .md-tabs>li .glyphBtn{width:40px;height:40px}.ModalDefault .fig,.ModalDefault .table{margin-top:20px;margin-bottom:20px}.ModalTutors .info{padding:28px 0;border-bottom:1px dotted #ccc}.scielo__theme--dark .ModalTutors .info{border-bottom:1px dotted rgba(255,255,255,.3)}.scielo__theme--light .ModalTutors .info{border-bottom:1px dotted #ccc}.ModalTutors .info:last-child{border-bottom:0}.ModalTutors .info:first-child{padding-top:0}.ModalTutors .info h3{margin:0 0 15px;font-size:1.429em;font-weight:400}.ModalTutors .info .tutors{margin-bottom:25px}.ModalTutors .info .tutors strong:first-child{font-size:1.071em}.ModalTutors .info .tutors:last-child{margin-bottom:0}.ModalTutors ul li{margin-top:10px;border-color:#e0e0df}.ModalTutors ul li.inline li{display:inline}#ModalDownloads strong{display:inline-block;padding:15px 0}#ModalDownloads .glyphBtn{width:40px;height:40px}#ModalDownloads [class^=sci-ico-file]{line-height:40px!important;font-size:40px}#ModalArticles .md-tabs,#ModalMetrics .md-tabs{margin:0 0 25px}#ModalArticles .md-tabs>li,#ModalMetrics .md-tabs>li{min-height:50px}#ModalMetrics .outlineFadeLink{margin:0 0 20px;padding:12px;font-size:15px;display:block;text-align:center}#ModalArticles #how2cite-export{margin:20px 0 2px;background:url(../img/dashline.png) top left repeat-x}#ModalArticles #how2cite-export .col-md-2.col-sm-2{width:20%}#ModalArticles .outlineFadeLink{margin-left:0}#ModalArticles .download{display:block}#ModalArticles #citation-ctt{position:absolute;top:-5000px}#ModalArticles #citationCut{position:absolute;top:-5000px}.ModalFigs .modal-title .sci-ico-fileFigure,.ModalFigs .modal-title .sci-ico-fileTable,.ModalTables .modal-title .sci-ico-fileFigure,.ModalTables .modal-title .sci-ico-fileTable{font-size:24px}.ModalFigs .link-newWindow,.ModalTables .link-newWindow{text-decoration:none}.ModalFigs .link-newWindow:hover,.ModalTables .link-newWindow:hover{opacity:1}.ModalFigs .modal-footer,.ModalTables .modal-footer{margin-top:0;text-align:left;background:#f7f6f4}.scielo__theme--dark .ModalFigs .modal-footer,.scielo__theme--dark .ModalTables .modal-footer{background:#393939}.scielo__theme--light .ModalFigs .modal-footer,.scielo__theme--light .ModalTables .modal-footer{background:#f7f6f4}.ModalFigs .modal-title{width:calc(100% - 70px)}.ModalFigs img{float:left}.ModalFigs .modal-body{padding:3px}.ModalTables .modal-body{overflow:auto}.ModalTables .modal-body:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;background:#fff url(../img/list.loading.gif) center center no-repeat}.scielo__theme--dark .ModalTables .modal-body:after{background:#333 url(../img/list.loading.gif) center center no-repeat}.scielo__theme--light .ModalTables .modal-body:after{background:#fff url(../img/list.loading.gif) center center no-repeat}.ModalTables .modal-body.cached:after{display:none}.ModalTables .table{margin-top:0;font-size:14px;position:relative;z-index:1}.ModalTables .table .autoWidth{width:auto}.ModalTables .table .striped{background-color:#f8f8f8}.ModalTables .table .inline-graphic{width:100%}.ModalTables .table-hover .table>tbody>tr:hover>td,.ModalTables .table-hover .table>tbody>tr:hover>th{background-color:#f0f3fb}.ModalTables .table-hover .table>tbody>tr:hover>td.striped,.ModalTables .table-hover .table>tbody>tr:hover>th.striped{background-color:#e8eaf2}.ModalTables .ref-list h2{font-size:14px}.ModalTables .ref-list .refList .xref.big{padding:5px 10px}.ModalTables .refList li{padding-bottom:0}.ModalTables .xref{cursor:text}#ModalRelatedArticles .inline li{min-width:48%}#ModalRelatedArticles .inline li:nth-child(2),#ModalRelatedArticles .inline li:nth-child(4){margin-right:0}#ModalVersionsTranslations .modal-body .md-body-dashVertical{display:inline-block;min-height:150px;background:url(../img/dashline.v.png) top center repeat-y}#ModalVersionsTranslations strong{display:inline-block;padding:15px 0}.ModalDefault .md-list li a.lattes,.ModalDefault .md-list li a.researcherid,.ModalDefault .md-list li a.scopus,.articleCtt .contribGroup .btnContribLinks.lattes,.articleCtt .contribGroup .btnContribLinks.researcherid,.articleCtt .contribGroup .btnContribLinks.scopus{padding-left:30px}.ModalDefault .md-list li a.scopus,.articleCtt .contribGroup .btnContribLinks.scopus{background:url(../img/authorIcon-scopus.png) 10px center no-repeat}.ModalDefault .md-list li a.lattes,.articleCtt .contribGroup .btnContribLinks.lattes{background:url(../img/authorIcon-lattes.png) 10px center no-repeat}.ModalDefault .md-list li a.researcherid,.articleCtt .contribGroup .btnContribLinks.researcherid{background:url(../img/authorIcon-researcherid.png) 10px center no-repeat}.ModalDefault .md-list li a.lattes-matteWhite,.articleCtt .contribGroup .btnContribLinks.lattes-matteWhite{background:url(../img/authorIcon-lattes-matteWhite.png) 10px center no-repeat}.articleCtt .article-title.page-header-title,.articleCtt .only-renditions-available p{text-align:center}.articleCtt .only-renditions-available .jumbotron{background-color:#f6f8fa;margin-top:35px}.levelMenu .btn{min-height:38px}.levelMenu .btn.group{width:auto;padding-left:16px!important;padding-right:16px!important}.levelMenu .btn:hover{color:#fff}.levelMenu .btn:hover [class^=sci-ico-]{color:#fff}.levelMenu .dropdown-menu a.current{position:relative;width:100%;font-weight:700}.levelMenu .dropdown-menu a.current:after{content:"✓";display:inline-block;position:absolute;right:5px}.levelMenu-xs .btn-group.btn-group-nav-mobile{width:100%;display:table}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn{display:table-cell;width:60%}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn:first-of-type{width:20%}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn:last-of-type{width:20%}.levelMenu-xs .btn-group.btn-group-nav-mobile>.btn .sci-ico-socialOther{display:inline-block;width:70%}.levelMenu-xs .btn-group.btn-group-nav-mobile-content{width:100%;display:table;padding:5px 2px}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown{display:table-cell;width:33%;padding-right:4px}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown:last-child{padding-right:0}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown:last-child .btn span{width:auto}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown:last-child .btn span:nth-child(2){width:55%}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn{width:100%;position:relative}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn span{width:90%;display:inline-block}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn span:last-child{width:auto}.levelMenu-xs .btn-group.btn-group-nav-mobile-content>.dropdown .btn span.caret{position:absolute;right:10px;top:17px}.ref .xref a{color:#b67f00;pointer-events:none}.scielo__theme--dark .ref .xref a{color:#b67f00}.scielo__theme--light .ref .xref a{color:#b67f00}.ref .xref.xrefblue a{color:#3867ce}.scielo__theme--dark .ref .xref.xrefblue a{color:#86acff}.scielo__theme--light .ref .xref.xrefblue a{color:#3867ce}@media screen and (max-width:575px){.ref{position:static}}.ref .opened{background:#3867ce;color:#fff}@media screen and (max-width:575px){.ref .opened{width:90%;margin-left:5%}}.scielo__theme--dark .ref .opened{background:#86acff;color:#333}.scielo__theme--light .ref .opened{background:#3867ce;color:#fff} diff --git a/core/static/journal_about/css/bootstrap.css b/core/static/journal_about/css/bootstrap.css new file mode 100644 index 0000000..e6f8e63 --- /dev/null +++ b/core/static/journal_about/css/bootstrap.css @@ -0,0 +1,10 @@ +@charset "UTF-8";/*! + * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/) + * Copyright 2011-2020 The Bootstrap Authors + * Copyright 2011-2020 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import url(https://fonts.googleapis.com/css2?family=Arapey&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap);@import url(https://fonts.googleapis.com/icon?family=Material+Icons&display=swap);@import url(https://fonts.googleapis.com/icon?family=Material+Icons+Outlined);@-webkit-keyframes bounce{0%,100%,20%,50%,80%{-webkit-transform:translateY(0)}40%{-webkit-transform:translateY(30px)}60%{-webkit-transform:translateY(15px)}}@-moz-keyframes bounce{0%,100%,20%,50%,80%{-moz-transform:translateY(0)}40%{-moz-transform:translateY(30px)}60%{-moz-transform:translateY(15px)}}@-ms-keyframes bounce{0%,100%,20%,50%,80%{-ms-transform:translateY(0)}40%{-ms-transform:translateY(30px)}60%{-ms-transform:translateY(15px)}}@-o-keyframes bounce{0%,100%,20%,50%,80%{-o-transform:translateY(0)}40%{-o-transform:translateY(30px)}60%{-o-transform:translateY(15px)}}@keyframes bounce{0%,100%,20%,50%,80%{transform:translateY(0)}40%{transform:translateY(30px)}60%{transform:translateY(15px)}}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,30%,0);transform:translate3d(0,30%,0);visibility:visible;opacity:0}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}.scielo__shadow-1{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.scielo__shadow-2{box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.scielo__shadow-3{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}.scielo__shadow-4{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.scielo__shadow-5{box-shadow:0 19px 38px rgba(0,0,0,.3),0 15px 12px rgba(0,0,0,.22)}:root{--scielo-blue:#3867CE;--scielo-indigo:#6628EE;--scielo-purple:#8D5DF8;--scielo-pink:#C32AA3;--scielo-red:#C63800;--scielo-orange:#FF7E4A;--scielo-yellow:#B67F00;--scielo-green:#2C9D45;--scielo-teal:#30A47F;--scielo-cyan:#2195A9;--scielo-white:#fff;--scielo-gray:#333;--scielo-gray-dark:#00314C;--scielo-primary:#3867CE;--scielo-secondary:#fff;--scielo-success:#2C9D45;--scielo-info:#2195A9;--scielo-warning:#B67F00;--scielo-danger:#C63800;--scielo-light:#F7F6F4;--scielo-dark:#393939;--scielo-font-sans-serif:"Noto Sans",sans-serif;--scielo-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--scielo-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--scielo-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#3867ce;text-decoration:underline}a:hover{color:#2d52a5}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--scielo-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#c32aa3;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#393939;border-radius:.12 .5rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(0,0,0,.6);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:rgba(0,0,0,.6)}.blockquote-footer::before{content:"\2014\00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.3);border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:rgba(0,0,0,.6)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{width:100%;padding-right:var(--scielo-gutter-x,.5rem);padding-left:var(--scielo-gutter-x,.5rem);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:100%}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--scielo-gutter-x:1rem;--scielo-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(var(--scielo-gutter-y) * -1);margin-right:calc(var(--scielo-gutter-x)/ -2);margin-left:calc(var(--scielo-gutter-x)/ -2)}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--scielo-gutter-x)/ 2);padding-left:calc(var(--scielo-gutter-x)/ 2);margin-top:var(--scielo-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.33333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.66667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333%}.col-2{flex:0 0 auto;width:16.66667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333%}.col-5{flex:0 0 auto;width:41.66667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333%}.col-8{flex:0 0 auto;width:66.66667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333%}.col-11{flex:0 0 auto;width:91.66667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--scielo-gutter-x:0}.g-0,.gy-0{--scielo-gutter-y:0}.g-1,.gx-1{--scielo-gutter-x:0.25rem}.g-1,.gy-1{--scielo-gutter-y:0.25rem}.g-2,.gx-2{--scielo-gutter-x:0.5rem}.g-2,.gy-2{--scielo-gutter-y:0.5rem}.g-3,.gx-3{--scielo-gutter-x:1rem}.g-3,.gy-3{--scielo-gutter-y:1rem}.g-4,.gx-4{--scielo-gutter-x:1.5rem}.g-4,.gy-4{--scielo-gutter-y:1.5rem}.g-5,.gx-5{--scielo-gutter-x:3rem}.g-5,.gy-5{--scielo-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.33333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333%}.col-sm-2{flex:0 0 auto;width:16.66667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333%}.col-sm-5{flex:0 0 auto;width:41.66667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333%}.col-sm-8{flex:0 0 auto;width:66.66667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333%}.col-sm-11{flex:0 0 auto;width:91.66667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--scielo-gutter-x:0}.g-sm-0,.gy-sm-0{--scielo-gutter-y:0}.g-sm-1,.gx-sm-1{--scielo-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--scielo-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--scielo-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--scielo-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--scielo-gutter-x:1rem}.g-sm-3,.gy-sm-3{--scielo-gutter-y:1rem}.g-sm-4,.gx-sm-4{--scielo-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--scielo-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--scielo-gutter-x:3rem}.g-sm-5,.gy-sm-5{--scielo-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.33333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333%}.col-md-2{flex:0 0 auto;width:16.66667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333%}.col-md-5{flex:0 0 auto;width:41.66667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333%}.col-md-8{flex:0 0 auto;width:66.66667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333%}.col-md-11{flex:0 0 auto;width:91.66667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--scielo-gutter-x:0}.g-md-0,.gy-md-0{--scielo-gutter-y:0}.g-md-1,.gx-md-1{--scielo-gutter-x:0.25rem}.g-md-1,.gy-md-1{--scielo-gutter-y:0.25rem}.g-md-2,.gx-md-2{--scielo-gutter-x:0.5rem}.g-md-2,.gy-md-2{--scielo-gutter-y:0.5rem}.g-md-3,.gx-md-3{--scielo-gutter-x:1rem}.g-md-3,.gy-md-3{--scielo-gutter-y:1rem}.g-md-4,.gx-md-4{--scielo-gutter-x:1.5rem}.g-md-4,.gy-md-4{--scielo-gutter-y:1.5rem}.g-md-5,.gx-md-5{--scielo-gutter-x:3rem}.g-md-5,.gy-md-5{--scielo-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.33333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333%}.col-lg-2{flex:0 0 auto;width:16.66667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333%}.col-lg-5{flex:0 0 auto;width:41.66667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333%}.col-lg-8{flex:0 0 auto;width:66.66667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333%}.col-lg-11{flex:0 0 auto;width:91.66667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--scielo-gutter-x:0}.g-lg-0,.gy-lg-0{--scielo-gutter-y:0}.g-lg-1,.gx-lg-1{--scielo-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--scielo-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--scielo-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--scielo-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--scielo-gutter-x:1rem}.g-lg-3,.gy-lg-3{--scielo-gutter-y:1rem}.g-lg-4,.gx-lg-4{--scielo-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--scielo-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--scielo-gutter-x:3rem}.g-lg-5,.gy-lg-5{--scielo-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333%}.col-xl-2{flex:0 0 auto;width:16.66667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333%}.col-xl-5{flex:0 0 auto;width:41.66667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333%}.col-xl-8{flex:0 0 auto;width:66.66667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333%}.col-xl-11{flex:0 0 auto;width:91.66667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--scielo-gutter-x:0}.g-xl-0,.gy-xl-0{--scielo-gutter-y:0}.g-xl-1,.gx-xl-1{--scielo-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--scielo-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--scielo-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--scielo-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--scielo-gutter-x:1rem}.g-xl-3,.gy-xl-3{--scielo-gutter-y:1rem}.g-xl-4,.gx-xl-4{--scielo-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--scielo-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--scielo-gutter-x:3rem}.g-xl-5,.gy-xl-5{--scielo-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.33333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.66667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333%}.col-xxl-2{flex:0 0 auto;width:16.66667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333%}.col-xxl-5{flex:0 0 auto;width:41.66667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333%}.col-xxl-8{flex:0 0 auto;width:66.66667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333%}.col-xxl-11{flex:0 0 auto;width:91.66667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--scielo-gutter-x:0}.g-xxl-0,.gy-xxl-0{--scielo-gutter-y:0}.g-xxl-1,.gx-xxl-1{--scielo-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--scielo-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--scielo-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--scielo-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--scielo-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--scielo-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--scielo-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--scielo-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--scielo-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--scielo-gutter-y:3rem}}.table{--scielo-table-bg:transparent;--scielo-table-striped-color:#393939;--scielo-table-striped-bg:rgba(0, 0, 0, 0.05);--scielo-table-active-color:#393939;--scielo-table-active-bg:rgba(0, 0, 0, 0.1);--scielo-table-hover-color:#393939;--scielo-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#393939;vertical-align:top;border-color:rgba(0,0,0,.3)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--scielo-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--scielo-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>:not(:last-child)>:last-child>*{border-bottom-color:currentColor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--scielo-table-accent-bg:var(--scielo-table-striped-bg);color:var(--scielo-table-striped-color)}.table-active{--scielo-table-accent-bg:var(--scielo-table-active-bg);color:var(--scielo-table-active-color)}.table-hover>tbody>tr:hover{--scielo-table-accent-bg:var(--scielo-table-hover-bg);color:var(--scielo-table-hover-color)}.table-primary{--scielo-table-bg:#d7e1f5;--scielo-table-striped-bg:#ccd6e9;--scielo-table-striped-color:#000;--scielo-table-active-bg:#c2cbdd;--scielo-table-active-color:#000;--scielo-table-hover-bg:#c7d0e3;--scielo-table-hover-color:#000;color:#000;border-color:#c2cbdd}.table-secondary{--scielo-table-bg:white;--scielo-table-striped-bg:#f2f2f2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#e6e6e6;--scielo-table-active-color:#000;--scielo-table-hover-bg:#ececec;--scielo-table-hover-color:#000;color:#000;border-color:#e6e6e6}.table-success{--scielo-table-bg:#d5ebda;--scielo-table-striped-bg:#cadfcf;--scielo-table-striped-color:#000;--scielo-table-active-bg:#c0d4c4;--scielo-table-active-color:#000;--scielo-table-hover-bg:#c5d9ca;--scielo-table-hover-color:#000;color:#000;border-color:#c0d4c4}.table-info{--scielo-table-bg:#d3eaee;--scielo-table-striped-bg:#c8dee2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#bed3d6;--scielo-table-active-color:#000;--scielo-table-hover-bg:#c3d8dc;--scielo-table-hover-color:#000;color:#000;border-color:#bed3d6}.table-warning{--scielo-table-bg:#f0e5cc;--scielo-table-striped-bg:#e4dac2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#d8ceb8;--scielo-table-active-color:#000;--scielo-table-hover-bg:#ded4bd;--scielo-table-hover-color:#000;color:#000;border-color:#d8ceb8}.table-danger{--scielo-table-bg:#f4d7cc;--scielo-table-striped-bg:#e8ccc2;--scielo-table-striped-color:#000;--scielo-table-active-bg:#dcc2b8;--scielo-table-active-color:#000;--scielo-table-hover-bg:#e2c7bd;--scielo-table-hover-color:#000;color:#000;border-color:#dcc2b8}.table-light{--scielo-table-bg:#F7F6F4;--scielo-table-striped-bg:#ebeae8;--scielo-table-striped-color:#000;--scielo-table-active-bg:#dedddc;--scielo-table-active-color:#000;--scielo-table-hover-bg:#e4e4e2;--scielo-table-hover-color:#000;color:#000;border-color:#dedddc}.table-dark{--scielo-table-bg:#393939;--scielo-table-striped-bg:#434343;--scielo-table-striped-color:#fff;--scielo-table-active-bg:#4d4d4d;--scielo-table-active-color:#fff;--scielo-table-hover-bg:#484848;--scielo-table-hover-color:#fff;color:#fff;border-color:#4d4d4d}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:rgba(0,0,0,.6)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.4);appearance:none;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#393939;background-color:#fff;border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:rgba(0,0,0,.6);opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#efeeec;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e3e2e0}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#e3e2e0}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#393939;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 1rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid rgba(0,0,0,.4);border-radius:.25rem;appearance:none}.form-select:focus{border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{color:rgba(0,0,0,.6);background-color:#efeeec}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #393939}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);appearance:none;color-adjust:exact;transition:background-color .15s ease-in-out,background-position .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-check-input{transition:none}}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#3867ce;border-color:#3867ce;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%239cb3e7'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#3867ce;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#c3d1f0}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:rgba(0,0,0,.3);border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#3867ce;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#c3d1f0}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:rgba(0,0,0,.3);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(0,0,0,.5)}.form-range:disabled::-moz-range-thumb{background-color:rgba(0,0,0,.5)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-select{height:calc(3.5rem + 2px);padding:1rem .75rem}.form-floating>label{position:absolute;top:0;left:0;height:100%;padding:1rem .75rem;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#393939;text-align:center;white-space:nowrap;background-color:#efeeec;border:1px solid rgba(0,0,0,.4);border-radius:.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:1.75rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#2c9d45}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#000;background-color:rgba(44,157,69,.9);border-radius:.25rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#2c9d45;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232C9D45' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#2c9d45;box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#2c9d45;padding-right:calc(.75em + 2.3125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232C9D45' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 1.75rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#2c9d45;box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#2c9d45}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#2c9d45}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#2c9d45}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#c63800}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(198,56,0,.9);border-radius:.25rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#c63800;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23C63800'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23C63800' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#c63800;box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#c63800;padding-right:calc(.75em + 2.3125rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23C63800'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23C63800' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 1.75rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#c63800;box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#c63800}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#c63800}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#c63800}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:3}.btn{display:inline-block;font-weight:400;line-height:1.5;color:#393939;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#393939}.btn-check:focus+.btn,.btn:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{pointer-events:none;opacity:.65}.btn-primary{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-primary:hover{color:#fff;background-color:#3058af;border-color:#2d52a5}.btn-check:focus+.btn-primary,.btn-primary:focus{color:#fff;background-color:#3058af;border-color:#2d52a5;box-shadow:0 0 0 .25rem rgba(86,126,213,.5)}.btn-check:active+.btn-primary,.btn-check:checked+.btn-primary,.btn-primary.active,.btn-primary:active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2d52a5;border-color:#2a4d9b}.btn-check:active+.btn-primary:focus,.btn-check:checked+.btn-primary:focus,.btn-primary.active:focus,.btn-primary:active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(86,126,213,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-secondary{color:#000;background-color:#fff;border-color:#fff}.btn-secondary:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-secondary,.btn-secondary:focus{color:#000;background-color:#fff;border-color:#fff;box-shadow:0 0 0 .25rem rgba(217,217,217,.5)}.btn-check:active+.btn-secondary,.btn-check:checked+.btn-secondary,.btn-secondary.active,.btn-secondary:active,.show>.btn-secondary.dropdown-toggle{color:#000;background-color:#fff;border-color:#fff}.btn-check:active+.btn-secondary:focus,.btn-check:checked+.btn-secondary:focus,.btn-secondary.active:focus,.btn-secondary:active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(217,217,217,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#000;background-color:#fff;border-color:#fff}.btn-success{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-success:hover{color:#000;background-color:#4cac61;border-color:#41a758}.btn-check:focus+.btn-success,.btn-success:focus{color:#000;background-color:#4cac61;border-color:#41a758;box-shadow:0 0 0 .25rem rgba(37,133,59,.5)}.btn-check:active+.btn-success,.btn-check:checked+.btn-success,.btn-success.active,.btn-success:active,.show>.btn-success.dropdown-toggle{color:#000;background-color:#56b16a;border-color:#41a758}.btn-check:active+.btn-success:focus,.btn-check:checked+.btn-success:focus,.btn-success.active:focus,.btn-success:active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(37,133,59,.5)}.btn-success.disabled,.btn-success:disabled{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-info{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-info:hover{color:#000;background-color:#42a5b6;border-color:#37a0b2}.btn-check:focus+.btn-info,.btn-info:focus{color:#000;background-color:#42a5b6;border-color:#37a0b2;box-shadow:0 0 0 .25rem rgba(28,127,144,.5)}.btn-check:active+.btn-info,.btn-check:checked+.btn-info,.btn-info.active,.btn-info:active,.show>.btn-info.dropdown-toggle{color:#000;background-color:#4daaba;border-color:#37a0b2}.btn-check:active+.btn-info:focus,.btn-check:checked+.btn-info:focus,.btn-info.active:focus,.btn-info:active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(28,127,144,.5)}.btn-info.disabled,.btn-info:disabled{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-warning{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-warning:hover{color:#000;background-color:#c19226;border-color:#bd8c1a}.btn-check:focus+.btn-warning,.btn-warning:focus{color:#000;background-color:#c19226;border-color:#bd8c1a;box-shadow:0 0 0 .25rem rgba(155,108,0,.5)}.btn-check:active+.btn-warning,.btn-check:checked+.btn-warning,.btn-warning.active,.btn-warning:active,.show>.btn-warning.dropdown-toggle{color:#000;background-color:#c59933;border-color:#bd8c1a}.btn-check:active+.btn-warning:focus,.btn-check:checked+.btn-warning:focus,.btn-warning.active:focus,.btn-warning:active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(155,108,0,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-danger{color:#fff;background-color:#c63800;border-color:#c63800}.btn-danger:hover{color:#fff;background-color:#a83000;border-color:#9e2d00}.btn-check:focus+.btn-danger,.btn-danger:focus{color:#fff;background-color:#a83000;border-color:#9e2d00;box-shadow:0 0 0 .25rem rgba(207,86,38,.5)}.btn-check:active+.btn-danger,.btn-check:checked+.btn-danger,.btn-danger.active,.btn-danger:active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#9e2d00;border-color:#952a00}.btn-check:active+.btn-danger:focus,.btn-check:checked+.btn-danger:focus,.btn-danger.active:focus,.btn-danger:active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(207,86,38,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#c63800;border-color:#c63800}.btn-light{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-light:hover{color:#000;background-color:#f8f7f6;border-color:#f8f7f5}.btn-check:focus+.btn-light,.btn-light:focus{color:#000;background-color:#f8f7f6;border-color:#f8f7f5;box-shadow:0 0 0 .25rem rgba(210,209,207,.5)}.btn-check:active+.btn-light,.btn-check:checked+.btn-light,.btn-light.active,.btn-light:active,.show>.btn-light.dropdown-toggle{color:#000;background-color:#f9f8f6;border-color:#f8f7f5}.btn-check:active+.btn-light:focus,.btn-check:checked+.btn-light:focus,.btn-light.active:focus,.btn-light:active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(210,209,207,.5)}.btn-light.disabled,.btn-light:disabled{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-dark{color:#fff;background-color:#393939;border-color:#393939}.btn-dark:hover{color:#fff;background-color:#303030;border-color:#2e2e2e}.btn-check:focus+.btn-dark,.btn-dark:focus{color:#fff;background-color:#303030;border-color:#2e2e2e;box-shadow:0 0 0 .25rem rgba(87,87,87,.5)}.btn-check:active+.btn-dark,.btn-check:checked+.btn-dark,.btn-dark.active,.btn-dark:active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#2e2e2e;border-color:#2b2b2b}.btn-check:active+.btn-dark:focus,.btn-check:checked+.btn-dark:focus,.btn-dark.active:focus,.btn-dark:active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .25rem rgba(87,87,87,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#393939;border-color:#393939}.btn-outline-primary{color:#3867ce;border-color:#3867ce}.btn-outline-primary:hover{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-check:focus+.btn-outline-primary,.btn-outline-primary:focus{box-shadow:0 0 0 .25rem rgba(56,103,206,.5)}.btn-check:active+.btn-outline-primary,.btn-check:checked+.btn-outline-primary,.btn-outline-primary.active,.btn-outline-primary.dropdown-toggle.show,.btn-outline-primary:active{color:#fff;background-color:#3867ce;border-color:#3867ce}.btn-check:active+.btn-outline-primary:focus,.btn-check:checked+.btn-outline-primary:focus,.btn-outline-primary.active:focus,.btn-outline-primary.dropdown-toggle.show:focus,.btn-outline-primary:active:focus{box-shadow:0 0 0 .25rem rgba(56,103,206,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#3867ce;background-color:transparent}.btn-outline-secondary{color:#fff;border-color:#fff}.btn-outline-secondary:hover{color:#000;background-color:#fff;border-color:#fff}.btn-check:focus+.btn-outline-secondary,.btn-outline-secondary:focus{box-shadow:0 0 0 .25rem rgba(255,255,255,.5)}.btn-check:active+.btn-outline-secondary,.btn-check:checked+.btn-outline-secondary,.btn-outline-secondary.active,.btn-outline-secondary.dropdown-toggle.show,.btn-outline-secondary:active{color:#000;background-color:#fff;border-color:#fff}.btn-check:active+.btn-outline-secondary:focus,.btn-check:checked+.btn-outline-secondary:focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.dropdown-toggle.show:focus,.btn-outline-secondary:active:focus{box-shadow:0 0 0 .25rem rgba(255,255,255,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#fff;background-color:transparent}.btn-outline-success{color:#2c9d45;border-color:#2c9d45}.btn-outline-success:hover{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-check:focus+.btn-outline-success,.btn-outline-success:focus{box-shadow:0 0 0 .25rem rgba(44,157,69,.5)}.btn-check:active+.btn-outline-success,.btn-check:checked+.btn-outline-success,.btn-outline-success.active,.btn-outline-success.dropdown-toggle.show,.btn-outline-success:active{color:#000;background-color:#2c9d45;border-color:#2c9d45}.btn-check:active+.btn-outline-success:focus,.btn-check:checked+.btn-outline-success:focus,.btn-outline-success.active:focus,.btn-outline-success.dropdown-toggle.show:focus,.btn-outline-success:active:focus{box-shadow:0 0 0 .25rem rgba(44,157,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#2c9d45;background-color:transparent}.btn-outline-info{color:#2195a9;border-color:#2195a9}.btn-outline-info:hover{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-check:focus+.btn-outline-info,.btn-outline-info:focus{box-shadow:0 0 0 .25rem rgba(33,149,169,.5)}.btn-check:active+.btn-outline-info,.btn-check:checked+.btn-outline-info,.btn-outline-info.active,.btn-outline-info.dropdown-toggle.show,.btn-outline-info:active{color:#000;background-color:#2195a9;border-color:#2195a9}.btn-check:active+.btn-outline-info:focus,.btn-check:checked+.btn-outline-info:focus,.btn-outline-info.active:focus,.btn-outline-info.dropdown-toggle.show:focus,.btn-outline-info:active:focus{box-shadow:0 0 0 .25rem rgba(33,149,169,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#2195a9;background-color:transparent}.btn-outline-warning{color:#b67f00;border-color:#b67f00}.btn-outline-warning:hover{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-check:focus+.btn-outline-warning,.btn-outline-warning:focus{box-shadow:0 0 0 .25rem rgba(182,127,0,.5)}.btn-check:active+.btn-outline-warning,.btn-check:checked+.btn-outline-warning,.btn-outline-warning.active,.btn-outline-warning.dropdown-toggle.show,.btn-outline-warning:active{color:#000;background-color:#b67f00;border-color:#b67f00}.btn-check:active+.btn-outline-warning:focus,.btn-check:checked+.btn-outline-warning:focus,.btn-outline-warning.active:focus,.btn-outline-warning.dropdown-toggle.show:focus,.btn-outline-warning:active:focus{box-shadow:0 0 0 .25rem rgba(182,127,0,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#b67f00;background-color:transparent}.btn-outline-danger{color:#c63800;border-color:#c63800}.btn-outline-danger:hover{color:#fff;background-color:#c63800;border-color:#c63800}.btn-check:focus+.btn-outline-danger,.btn-outline-danger:focus{box-shadow:0 0 0 .25rem rgba(198,56,0,.5)}.btn-check:active+.btn-outline-danger,.btn-check:checked+.btn-outline-danger,.btn-outline-danger.active,.btn-outline-danger.dropdown-toggle.show,.btn-outline-danger:active{color:#fff;background-color:#c63800;border-color:#c63800}.btn-check:active+.btn-outline-danger:focus,.btn-check:checked+.btn-outline-danger:focus,.btn-outline-danger.active:focus,.btn-outline-danger.dropdown-toggle.show:focus,.btn-outline-danger:active:focus{box-shadow:0 0 0 .25rem rgba(198,56,0,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#c63800;background-color:transparent}.btn-outline-light{color:#f7f6f4;border-color:#f7f6f4}.btn-outline-light:hover{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-check:focus+.btn-outline-light,.btn-outline-light:focus{box-shadow:0 0 0 .25rem rgba(247,246,244,.5)}.btn-check:active+.btn-outline-light,.btn-check:checked+.btn-outline-light,.btn-outline-light.active,.btn-outline-light.dropdown-toggle.show,.btn-outline-light:active{color:#000;background-color:#f7f6f4;border-color:#f7f6f4}.btn-check:active+.btn-outline-light:focus,.btn-check:checked+.btn-outline-light:focus,.btn-outline-light.active:focus,.btn-outline-light.dropdown-toggle.show:focus,.btn-outline-light:active:focus{box-shadow:0 0 0 .25rem rgba(247,246,244,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f7f6f4;background-color:transparent}.btn-outline-dark{color:#393939;border-color:#393939}.btn-outline-dark:hover{color:#fff;background-color:#393939;border-color:#393939}.btn-check:focus+.btn-outline-dark,.btn-outline-dark:focus{box-shadow:0 0 0 .25rem rgba(57,57,57,.5)}.btn-check:active+.btn-outline-dark,.btn-check:checked+.btn-outline-dark,.btn-outline-dark.active,.btn-outline-dark.dropdown-toggle.show,.btn-outline-dark:active{color:#fff;background-color:#393939;border-color:#393939}.btn-check:active+.btn-outline-dark:focus,.btn-check:checked+.btn-outline-dark:focus,.btn-outline-dark.active:focus,.btn-outline-dark.dropdown-toggle.show:focus,.btn-outline-dark:active:focus{box-shadow:0 0 0 .25rem rgba(57,57,57,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#393939;background-color:transparent}.btn-link{font-weight:400;color:#3867ce;text-decoration:underline}.btn-link:hover{color:#2d52a5}.btn-link.disabled,.btn-link:disabled{color:rgba(0,0,0,.6)}.btn-group-lg>.btn,.btn-group.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.btn-group-sm>.btn,.btn-group.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropend,.dropstart,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;z-index:1000;display:none;min-width:10rem;padding:.5rem 0;margin:0;font-size:1rem;color:#393939;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu[data-bs-popper]{left:0;margin-top:.125rem}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu{top:0;right:auto;left:100%}.dropend .dropdown-menu[data-bs-popper]{margin-top:0;margin-left:.125rem}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu{top:0;right:100%;left:auto}.dropstart .dropdown-menu[data-bs-popper]{margin-top:0;margin-right:.125rem}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}.dropdown-item{display:block;width:100%;padding:.25rem 1rem;clear:both;font-weight:400;color:#393939;text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#333;background-color:#f7f6f4}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#3867ce}.dropdown-item.disabled,.dropdown-item:disabled{color:rgba(0,0,0,.6);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1rem;margin-bottom:0;font-size:.875rem;color:rgba(0,0,0,.6);white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1rem;color:#393939}.dropdown-menu-dark{color:rgba(0,0,0,.3);background-color:#414141;border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item{color:rgba(0,0,0,.3)}.dropdown-menu-dark .dropdown-item:focus,.dropdown-menu-dark .dropdown-item:hover{color:#fff;background-color:rgba(255,255,255,.15)}.dropdown-menu-dark .dropdown-item.active,.dropdown-menu-dark .dropdown-item:active{color:#fff;background-color:#3867ce}.dropdown-menu-dark .dropdown-item.disabled,.dropdown-menu-dark .dropdown-item:disabled{color:rgba(0,0,0,.5)}.dropdown-menu-dark .dropdown-divider{border-color:rgba(0,0,0,.15)}.dropdown-menu-dark .dropdown-item-text{color:rgba(0,0,0,.3)}.dropdown-menu-dark .dropdown-header{color:rgba(0,0,0,.5)}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link.disabled{color:rgba(0,0,0,.6);pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid rgba(0,0,0,.3)}.nav-tabs .nav-link{margin-bottom:-1px;background:0 0;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#efeeec #efeeec rgba(0,0,0,.3);isolation:isolate}.nav-tabs .nav-link.disabled{color:rgba(0,0,0,.6);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:rgba(0,0,0,.7);background-color:#fff;border-color:rgba(0,0,0,.3) rgba(0,0,0,.3) #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{background:0 0;border:0;border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#3867ce}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-top:.5rem;padding-bottom:.5rem}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;text-decoration:none;white-space:nowrap}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem;transition:box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 .25rem}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--scielo-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.55)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.55);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-light .navbar-text{color:rgba(0,0,0,.55)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.55)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.55);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.navbar-dark .navbar-text{color:rgba(255,255,255,.55)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.5rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#393939;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:#325db9;background-color:#ebf0fa;box-shadow:inset 0 -1px 0 rgba(0,0,0,.125)}.accordion-button:not(.collapsed)::after{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23325db9'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");transform:rotate(180deg)}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;content:"";background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23393939'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#9cb3e7;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.accordion-header{margin-bottom:0}.accordion-item{margin-bottom:-1px;background-color:transparent;border:1px solid rgba(0,0,0,.125)}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:last-of-type{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{display:flex;flex-wrap:wrap;padding:0 0;margin-bottom:1rem;list-style:none}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:.5rem;color:rgba(0,0,0,.6);content:var(--scielo-breadcrumb-divider, "/")}.breadcrumb-item.active{color:rgba(0,0,0,.6)}.pagination{display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;color:#3867ce;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.3);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:#2d52a5;background-color:#efeeec;border-color:rgba(0,0,0,.3)}.page-link:focus{z-index:3;color:#2d52a5;background-color:#efeeec;outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:#fff;background-color:#3867ce;border-color:#3867ce}.page-item.disabled .page-link{color:rgba(0,0,0,.6);pointer-events:none;background-color:#fff;border-color:rgba(0,0,0,.3)}.page-link{padding:.375rem .75rem}.page-item:first-child .page-link{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.12 .5rem;border-bottom-left-radius:.12 .5rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.12 .5rem;border-bottom-right-radius:.12 .5rem}.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{position:relative;padding:1rem 1rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{color:#223e7c;background-color:#d7e1f5;border-color:#c3d1f0}.alert-primary .alert-link{color:#1b3263}.alert-secondary{color:#666;background-color:#fff;border-color:#fff}.alert-secondary .alert-link{color:#525252}.alert-success{color:#1a5e29;background-color:#d5ebda;border-color:#c0e2c7}.alert-success .alert-link{color:#154b21}.alert-info{color:#145965;background-color:#d3eaee;border-color:#bcdfe5}.alert-info .alert-link{color:#104751}.alert-warning{color:#6d4c00;background-color:#f0e5cc;border-color:#e9d9b3}.alert-warning .alert-link{color:#573d00}.alert-danger{color:#720;background-color:#f4d7cc;border-color:#eec3b3}.alert-danger .alert-link{color:#5f1b00}.alert-light{color:#636262;background-color:#fdfdfd;border-color:#fdfcfc}.alert-light .alert-link{color:#4f4e4e}.alert-dark{color:#222;background-color:#d7d7d7;border-color:#c4c4c4}.alert-dark .alert-link{color:#1b1b1b}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#efeeec;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#3867ce;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:rgba(0,0,0,.7);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:rgba(0,0,0,.7);text-decoration:none;background-color:#f7f6f4}.list-group-item-action:active{color:#393939;background-color:#efeeec}.list-group-item{position:relative;display:block;padding:.5rem 1rem;text-decoration:none;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:rgba(0,0,0,.6);pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#3867ce;border-color:#3867ce}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#223e7c;background-color:#d7e1f5}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#223e7c;background-color:#c2cbdd}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#223e7c;border-color:#223e7c}.list-group-item-secondary{color:#666;background-color:#fff}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#666;background-color:#e6e6e6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}.list-group-item-success{color:#1a5e29;background-color:#d5ebda}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#1a5e29;background-color:#c0d4c4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#1a5e29;border-color:#1a5e29}.list-group-item-info{color:#145965;background-color:#d3eaee}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#145965;background-color:#bed3d6}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#145965;border-color:#145965}.list-group-item-warning{color:#6d4c00;background-color:#f0e5cc}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#6d4c00;background-color:#d8ceb8}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#6d4c00;border-color:#6d4c00}.list-group-item-danger{color:#720;background-color:#f4d7cc}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#720;background-color:#dcc2b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#720;border-color:#720}.list-group-item-light{color:#636262;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636262;background-color:#e4e4e4}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636262;border-color:#636262}.list-group-item-dark{color:#222;background-color:#d7d7d7}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#222;background-color:#c2c2c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#222;border-color:#222}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.25rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{width:350px;max-width:100%;font-size:.875rem;pointer-events:auto;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .5rem 1rem rgba(0,0,0,.15);border-radius:.25rem}.toast:not(.showing):not(.show){opacity:0}.toast.hide{display:none}.toast-container{width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:.5rem}.toast-header{display:flex;align-items:center;padding:.5rem .75rem;color:rgba(0,0,0,.6);background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-header .btn-close{margin-right:-.375rem;margin-left:.75rem}.toast-body{padding:.75rem;word-wrap:break-word}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid rgba(0,0,0,.3);border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.modal-header .btn-close{padding:.5rem .5rem;margin:-.5rem -.5rem -.5rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid rgba(0,0,0,.3);border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.tooltip{position:absolute;z-index:1080;display:block;margin:0;font-family:var(--scielo-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .tooltip-arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[data-popper-placement^=right],.bs-tooltip-end{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[data-popper-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[data-popper-placement^=left],.bs-tooltip-start{padding:0 .4rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1070;display:block;max-width:276px;font-family:var(--scielo-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.5rem}.popover .popover-arrow{position:absolute;display:block;width:1rem;height:.5rem}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f0f0f0}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:1rem 1rem;color:#393939}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.clearfix::after{display:block;clear:both;content:""}.link-primary{color:#3867ce}.link-primary:focus,.link-primary:hover{color:#2d52a5}.link-secondary{color:#fff}.link-secondary:focus,.link-secondary:hover{color:#fff}.link-success{color:#2c9d45}.link-success:focus,.link-success:hover{color:#56b16a}.link-info{color:#2195a9}.link-info:focus,.link-info:hover{color:#4daaba}.link-warning{color:#b67f00}.link-warning:focus,.link-warning:hover{color:#c59933}.link-danger{color:#c63800}.link-danger:focus,.link-danger:hover{color:#9e2d00}.link-light{color:#f7f6f4}.link-light:focus,.link-light:hover{color:#f9f8f6}.link-dark{color:#393939}.link-dark:focus,.link-dark:hover{color:#2e2e2e}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--scielo-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--scielo-aspect-ratio:100%}.ratio-4x3{--scielo-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--scielo-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--scielo-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:1px solid rgba(0,0,0,.3)!important}.border-0{border:0!important}.border-top{border-top:1px solid rgba(0,0,0,.3)!important}.border-top-0{border-top:0!important}.border-end{border-right:1px solid rgba(0,0,0,.3)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:1px solid rgba(0,0,0,.3)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:1px solid rgba(0,0,0,.3)!important}.border-start-0{border-left:0!important}.border-primary{border-color:#3867ce!important}.border-secondary{border-color:#fff!important}.border-success{border-color:#2c9d45!important}.border-info{border-color:#2195a9!important}.border-warning{border-color:#b67f00!important}.border-danger{border-color:#c63800!important}.border-light{border-color:#f7f6f4!important}.border-dark{border-color:#393939!important}.border-white{border-color:#fff!important}.border-0{border-width:0!important}.border-1{border-width:1px!important}.border-2{border-width:2px!important}.border-3{border-width:3px!important}.border-4{border-width:4px!important}.border-5{border-width:5px!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.font-monospace{font-family:var(--scielo-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:#3867ce!important}.text-secondary{color:#fff!important}.text-success{color:#2c9d45!important}.text-info{color:#2195a9!important}.text-warning{color:#b67f00!important}.text-danger{color:#c63800!important}.text-light{color:#f7f6f4!important}.text-dark{color:#393939!important}.text-white{color:#fff!important}.text-body{color:#393939!important}.text-muted{color:rgba(0,0,0,.6)!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.bg-primary{background-color:#3867ce!important}.bg-secondary{background-color:#fff!important}.bg-success{background-color:#2c9d45!important}.bg-info{background-color:#2195a9!important}.bg-warning{background-color:#b67f00!important}.bg-danger{background-color:#c63800!important}.bg-light{background-color:#f7f6f4!important}.bg-dark{background-color:#393939!important}.bg-body{background-color:#fff!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.bg-gradient{background-image:var(--scielo-gradient)!important}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:.25rem!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:.12 .5rem!important}.rounded-2{border-radius:.25rem!important}.rounded-3{border-radius:.5rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-end{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-start{border-bottom-left-radius:.25rem!important;border-top-left-radius:.25rem!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}.h1,.h2,.h3,.h4,.h5,.h6,body,h1,h2,h3,h4,h5,h6,input,p,textarea{text-rendering:optimizeLegibility}::-moz-selection{background:#f8f567}.scielo__theme--dark ::-moz-selection{background:#070a98}.scielo__theme--light ::-moz-selection{background:#f8f567}::selection{background:#f8f567}.scielo__theme--dark ::selection{background:#070a98}.scielo__theme--light ::selection{background:#f8f567}.scielo__theme--light{background:#fff;color:#333}.scielo__theme--dark{background:#333;color:#c4c4c4}.container{padding-left:16px;padding-right:16px}@media screen and (min-width:576px){.col,.container,[class*=col-]{padding-left:10px;padding-right:10px}.row{margin-left:-10px;margin-right:-10px}}@media screen and (min-width:768px){.col,.container,[class*=col-]{padding-left:12px;padding-right:12px}.row{margin-left:-12px;margin-right:-12px}}@media screen and (min-width:992px){.col,.container,[class*=col-]{padding-left:16px;padding-right:16px}.row{margin-left:-16px;margin-right:-16px}}@media screen and (min-width:1200px){.col,.container,[class*=col-]{padding-left:20px;padding-right:20px}.row{margin-left:-20px;margin-right:-20px}}a{color:#3867ce;text-decoration:none}a:hover{text-decoration:underline}a:hover{color:#254895}.scielo__theme--dark a{color:#86acff}.scielo__theme--dark a:hover{color:#d3e0ff}.scielo__theme--light a{color:#3867ce;text-decoration:none}.scielo__theme--light a:hover{text-decoration:underline}.scielo__theme--light a:hover{color:#254895}a .material-icons,a .material-icons-outlined{vertical-align:text-bottom}p{line-height:1.6;margin-bottom:1.5rem}p .material-icons,p .material-icons-outlined{vertical-align:text-bottom}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:#00314c;margin-bottom:1.5rem}.h1 .material-icons,.h1 .material-icons-outlined,.h2 .material-icons,.h2 .material-icons-outlined,.h3 .material-icons,.h3 .material-icons-outlined,.h4 .material-icons,.h4 .material-icons-outlined,.h5 .material-icons,.h5 .material-icons-outlined,.h6 .material-icons,.h6 .material-icons-outlined,h1 .material-icons,h1 .material-icons-outlined,h2 .material-icons,h2 .material-icons-outlined,h3 .material-icons,h3 .material-icons-outlined,h4 .material-icons,h4 .material-icons-outlined,h5 .material-icons,h5 .material-icons-outlined,h6 .material-icons,h6 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{color:#333;font-weight:inherit}.scielo__theme--dark .h1,.scielo__theme--dark .h2,.scielo__theme--dark .h3,.scielo__theme--dark .h4,.scielo__theme--dark .h5,.scielo__theme--dark .h6,.scielo__theme--dark h1,.scielo__theme--dark h2,.scielo__theme--dark h3,.scielo__theme--dark h4,.scielo__theme--dark h5,.scielo__theme--dark h6{color:#eee}.scielo__theme--dark .h1 .small,.scielo__theme--dark .h1 small,.scielo__theme--dark .h2 .small,.scielo__theme--dark .h2 small,.scielo__theme--dark .h3 .small,.scielo__theme--dark .h3 small,.scielo__theme--dark .h4 .small,.scielo__theme--dark .h4 small,.scielo__theme--dark .h5 .small,.scielo__theme--dark .h5 small,.scielo__theme--dark .h6 .small,.scielo__theme--dark .h6 small,.scielo__theme--dark h1 .small,.scielo__theme--dark h1 small,.scielo__theme--dark h2 .small,.scielo__theme--dark h2 small,.scielo__theme--dark h3 .small,.scielo__theme--dark h3 small,.scielo__theme--dark h4 .small,.scielo__theme--dark h4 small,.scielo__theme--dark h5 .small,.scielo__theme--dark h5 small,.scielo__theme--dark h6 .small,.scielo__theme--dark h6 small{color:#c4c4c4}.scielo__theme--light .h1,.scielo__theme--light .h2,.scielo__theme--light .h3,.scielo__theme--light .h4,.scielo__theme--light .h5,.scielo__theme--light .h6,.scielo__theme--light h1,.scielo__theme--light h2,.scielo__theme--light h3,.scielo__theme--light h4,.scielo__theme--light h5,.scielo__theme--light h6{color:#00314c}.scielo__theme--light .h1 .small,.scielo__theme--light .h1 small,.scielo__theme--light .h2 .small,.scielo__theme--light .h2 small,.scielo__theme--light .h3 .small,.scielo__theme--light .h3 small,.scielo__theme--light .h4 .small,.scielo__theme--light .h4 small,.scielo__theme--light .h5 .small,.scielo__theme--light .h5 small,.scielo__theme--light .h6 .small,.scielo__theme--light .h6 small,.scielo__theme--light h1 .small,.scielo__theme--light h1 small,.scielo__theme--light h2 .small,.scielo__theme--light h2 small,.scielo__theme--light h3 .small,.scielo__theme--light h3 small,.scielo__theme--light h4 .small,.scielo__theme--light h4 small,.scielo__theme--light h5 .small,.scielo__theme--light h5 small,.scielo__theme--light h6 .small,.scielo__theme--light h6 small{color:#333;font-weight:inherit}.h1,.scielo__text-title--1,h1{font-weight:700;font-size:2.5rem;line-height:1.2em;letter-spacing:-.2px}.h1 .material-icons,.h1 .material-icons-outlined,.scielo__text-title--1 .material-icons,.scielo__text-title--1 .material-icons-outlined,h1 .material-icons,h1 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h2,.scielo__text-title--2,h2{font-weight:700;font-size:2rem;line-height:1.2em;letter-spacing:-.16px}.h2 .material-icons,.h2 .material-icons-outlined,.scielo__text-title--2 .material-icons,.scielo__text-title--2 .material-icons-outlined,h2 .material-icons,h2 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h3,.scielo__text-title--3,h3{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}.h3 .material-icons,.h3 .material-icons-outlined,.scielo__text-title--3 .material-icons,.scielo__text-title--3 .material-icons-outlined,h3 .material-icons,h3 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h4,.scielo__text-title--4,h4{font-weight:700;font-size:1.5rem;line-height:1.2em;letter-spacing:-.12px}.h4 .material-icons,.h4 .material-icons-outlined,.scielo__text-title--4 .material-icons,.scielo__text-title--4 .material-icons-outlined,h4 .material-icons,h4 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h5,.scielo__text-subtitle,h5{font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0}.h5 .material-icons,.h5 .material-icons-outlined,.scielo__text-subtitle .material-icons,.scielo__text-subtitle .material-icons-outlined,h5 .material-icons,h5 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h6,.scielo__text-subtitle--small,h6{font-size:1.03125rem;letter-spacing:0}.h6 .material-icons,.h6 .material-icons-outlined,.scielo__text-subtitle--small .material-icons,.scielo__text-subtitle--small .material-icons-outlined,h6 .material-icons,h6 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.scielo__text-body{font-weight:400;font-size:1rem;line-height:1.6em;letter-spacing:.1px}.scielo__text-body--large{font-size:1.125rem}.scielo__text-body--small{font-size:.75rem;letter-spacing:.06}.scielo__text-body--micro{font-size:.75rem}.scielo__text-overline{font-weight:700;font-size:.75rem;line-height:1.2em;letter-spacing:.06px}.scielo__text-caption{font-weight:400;font-size:1rem;line-height:1.2em}.scielo__text-caption--large{font-weight:700;font-size:1;line-height:1.2em;letter-spacing:0}.scielo__text-button{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.scielo__text-button--large{font-size:1.25rem}.mark,mark{background:rgba(0,176,230,.2)}.scielo__theme--dark .mark,.scielo__theme--dark mark{color:#c4c4c4}.scielo__theme--light .mark,.scielo__theme--light mark{color:#333}code{font-size:1.125rem;color:#00314c;background:rgba(0,176,230,.2)}.scielo__theme--dark code{color:#eee}.scielo__theme--light code{color:#00314c}abbr[data-original-title],abbr[title]{text-decoration:none;border-bottom:1px dotted #333}.scielo__theme--dark abbr[data-original-title],.scielo__theme--dark abbr[title]{border-bottom-color:#c4c4c4}.scielo__theme--light abbr[data-original-title],.scielo__theme--light abbr[title]{border-bottom-color:#333}html{font-size:16px}.articleCtt{font-size:18px}.display-1,.display-2,.display-3,.display-4,.h1,.h2,.h3,.h4,.h5,.h6,.lead{color:#00314c}.display-1 .material-icons,.display-1 .material-icons-outlined,.display-2 .material-icons,.display-2 .material-icons-outlined,.display-3 .material-icons,.display-3 .material-icons-outlined,.display-4 .material-icons,.display-4 .material-icons-outlined,.h1 .material-icons,.h1 .material-icons-outlined,.h2 .material-icons,.h2 .material-icons-outlined,.h3 .material-icons,.h3 .material-icons-outlined,.h4 .material-icons,.h4 .material-icons-outlined,.h5 .material-icons,.h5 .material-icons-outlined,.h6 .material-icons,.h6 .material-icons-outlined,.lead .material-icons,.lead .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-1 .small,.display-1 small,.display-2 .small,.display-2 small,.display-3 .small,.display-3 small,.display-4 .small,.display-4 small,.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,.lead .small,.lead small{color:#333;font-weight:inherit}.scielo__theme--dark .display-1,.scielo__theme--dark .display-2,.scielo__theme--dark .display-3,.scielo__theme--dark .display-4,.scielo__theme--dark .h1,.scielo__theme--dark .h2,.scielo__theme--dark .h3,.scielo__theme--dark .h4,.scielo__theme--dark .h5,.scielo__theme--dark .h6,.scielo__theme--dark .lead{color:#eee}.scielo__theme--dark .display-1 .small,.scielo__theme--dark .display-1 small,.scielo__theme--dark .display-2 .small,.scielo__theme--dark .display-2 small,.scielo__theme--dark .display-3 .small,.scielo__theme--dark .display-3 small,.scielo__theme--dark .display-4 .small,.scielo__theme--dark .display-4 small,.scielo__theme--dark .h1 .small,.scielo__theme--dark .h1 small,.scielo__theme--dark .h2 .small,.scielo__theme--dark .h2 small,.scielo__theme--dark .h3 .small,.scielo__theme--dark .h3 small,.scielo__theme--dark .h4 .small,.scielo__theme--dark .h4 small,.scielo__theme--dark .h5 .small,.scielo__theme--dark .h5 small,.scielo__theme--dark .h6 .small,.scielo__theme--dark .h6 small,.scielo__theme--dark .lead .small,.scielo__theme--dark .lead small{color:#c4c4c4}.scielo__theme--light .display-1,.scielo__theme--light .display-2,.scielo__theme--light .display-3,.scielo__theme--light .display-4,.scielo__theme--light .h1,.scielo__theme--light .h2,.scielo__theme--light .h3,.scielo__theme--light .h4,.scielo__theme--light .h5,.scielo__theme--light .h6,.scielo__theme--light .lead{color:#00314c}.scielo__theme--light .display-1 .small,.scielo__theme--light .display-1 small,.scielo__theme--light .display-2 .small,.scielo__theme--light .display-2 small,.scielo__theme--light .display-3 .small,.scielo__theme--light .display-3 small,.scielo__theme--light .display-4 .small,.scielo__theme--light .display-4 small,.scielo__theme--light .h1 .small,.scielo__theme--light .h1 small,.scielo__theme--light .h2 .small,.scielo__theme--light .h2 small,.scielo__theme--light .h3 .small,.scielo__theme--light .h3 small,.scielo__theme--light .h4 .small,.scielo__theme--light .h4 small,.scielo__theme--light .h5 .small,.scielo__theme--light .h5 small,.scielo__theme--light .h6 .small,.scielo__theme--light .h6 small,.scielo__theme--light .lead .small,.scielo__theme--light .lead small{color:#333}.display-1,.h1{font-weight:700;font-size:2.5rem;line-height:1.2em;letter-spacing:-.2px}.display-1 .material-icons,.display-1 .material-icons-outlined,.h1 .material-icons,.h1 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-2,.h2{font-weight:700;font-size:2rem;line-height:1.2em;letter-spacing:-.16px}.display-2 .material-icons,.display-2 .material-icons-outlined,.h2 .material-icons,.h2 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-3,.h3{font-weight:700;font-size:1.75rem;line-height:1.2em;letter-spacing:-.14px}.display-3 .material-icons,.display-3 .material-icons-outlined,.h3 .material-icons,.h3 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.display-4,.h4{font-weight:700;font-size:1.5rem;line-height:1.2em;letter-spacing:-.12px}.display-4 .material-icons,.display-4 .material-icons-outlined,.h4 .material-icons,.h4 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h5,.lead{font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0}.h5 .material-icons,.h5 .material-icons-outlined,.lead .material-icons,.lead .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.h6{font-size:1.03125rem;letter-spacing:0}.h6 .material-icons,.h6 .material-icons-outlined{vertical-align:text-bottom;font-size:inherit;line-height:inherit;display:inline-block}.blockquote{margin:0 0 1rem;padding:.6rem 1.33333rem 0 1.26667rem;border-left:1px solid #efeeec;font-size:1rem}.scielo__theme--dark .blockquote{border-left-color:#414141}.scielo__theme--light .blockquote{border-left-color:#efeeec}cite{display:block;font-size:.86667rem}cite:before{content:"— "}.form-text,.text-muted{color:#6c6b6b!important}.scielo__theme--dark .form-text,.scielo__theme--dark .text-muted{color:#adadad!important}.scielo__theme--light .form-text,.scielo__theme--light .text-muted{color:#6c6b6b!important}.logo-open-access{height:2em;width:auto}.h1 .logo-open-access,.h2 .logo-open-access,.h3 .logo-open-access,.h4 .logo-open-access,.h5 .logo-open-access,.h6 .logo-open-access,h1 .logo-open-access,h2 .logo-open-access,h3 .logo-open-access,h4 .logo-open-access,h5 .logo-open-access,h6 .logo-open-access{height:.9em;width:auto}footer .logo-open-access{height:1.5em;width:auto}.scielo__logo-scielo{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:4rem;height:4rem}.scielo__theme--dark .scielo__logo-scielo{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--large{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:15.625rem;height:15.625rem}.scielo__theme--dark .scielo__logo-scielo--large{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo--large{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--medium{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:9.375rem;height:9.375rem}.scielo__theme--dark .scielo__logo-scielo--medium{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo--medium{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--medium.scielo__logo-scielo--caption{margin-bottom:2rem}.scielo__logo-scielo--medium.scielo__logo-scielo--caption .small,.scielo__logo-scielo--medium.scielo__logo-scielo--caption small{position:relative;font-size:1.875rem;font-family:Arapey,serif;color:#333;font-style:italic;padding-left:60px;border-bottom:1px solid #ccc;padding-bottom:12px;padding-right:5px;top:80px;left:110px}.scielo__theme--dark .scielo__logo-scielo--medium.scielo__logo-scielo--caption .small,.scielo__theme--dark .scielo__logo-scielo--medium.scielo__logo-scielo--caption small{color:#c4c4c4;border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__logo-scielo--medium.scielo__logo-scielo--caption .small,.scielo__theme--light .scielo__logo-scielo--medium.scielo__logo-scielo--caption small{color:#333;border-color:#ccc}.scielo__logo-scielo--medium.scielo__logo-scielo--caption span{position:relative;left:50%;transform:translateX(-7.1875rem);top:6.25rem;display:block;font-size:1.5rem;font-family:Arapey,serif;color:#333;white-space:nowrap;width:14.375rem}.scielo__theme--dark .scielo__logo-scielo--medium.scielo__logo-scielo--caption span{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo--medium.scielo__logo-scielo--caption span{color:#333}.scielo__logo-scielo--small{background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:4rem;height:4rem}.scielo__theme--dark .scielo__logo-scielo--small{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo--small{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo--small.scielo__logo-scielo--caption strong{position:relative;left:4.5rem;top:1.75rem;color:#333}.scielo__theme--dark .scielo__logo-scielo--small.scielo__logo-scielo--caption strong{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo--small.scielo__logo-scielo--caption strong{color:#333}.scielo__logo-scielo-caption{position:relative;width:16.875rem;height:6.25rem;background-image:url(../img/logo-scielo-no-label.svg);background-repeat:no-repeat;background-size:75px auto;background-position-x:calc(50% - 22px);display:inline-block}@media (min-width:576px){.scielo__logo-scielo-caption{width:21.875rem;height:11.375rem;background-size:150px auto;background-position-x:calc(50% - 55px)}}.scielo__theme--dark .scielo__logo-scielo-caption{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo-caption{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo-caption:after{content:"Scientific Electronic Library Online";position:absolute;top:4.375rem;display:block;font-size:1.2rem;font-family:Arapey,serif;color:#333;white-space:nowrap;width:100%;text-align:center}@media (min-width:576px){.scielo__logo-scielo-caption:after{top:9.375rem;font-size:1.5rem}}.scielo__theme--dark .scielo__logo-scielo-caption:after{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo-caption:after{color:#333}.scielo__logo-scielo-caption .small,.scielo__logo-scielo-caption small{position:absolute;font-size:1rem;font-family:Arapey,serif;color:#333;font-style:italic;border-bottom:1px solid #ccc;padding-bottom:2px;padding-left:24px;padding-right:0;top:40px;left:8.125rem}@media (min-width:576px){.scielo__logo-scielo-caption .small,.scielo__logo-scielo-caption small{font-size:1.875rem;padding-bottom:12px;padding-left:60px;padding-right:5px;top:80px;left:9.375rem}}.scielo__theme--dark .scielo__logo-scielo-caption .small,.scielo__theme--dark .scielo__logo-scielo-caption small{color:#c4c4c4;border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__logo-scielo-caption .small,.scielo__theme--light .scielo__logo-scielo-caption small{color:#333;border-color:#ccc}.scielo__logo-scielo-collection{position:relative;background-image:url(../img/logo-scielo-no-label.svg);background-size:contain;background-repeat:no-repeat;display:inline-block;width:4rem;height:4rem}.scielo__theme--dark .scielo__logo-scielo-collection{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__logo-scielo-collection{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__logo-scielo-collection .small,.scielo__logo-scielo-collection small{position:absolute;left:4.5rem;top:1.75rem;color:#333;font-weight:bolder}.scielo__theme--dark .scielo__logo-scielo-collection .small,.scielo__theme--dark .scielo__logo-scielo-collection small{color:#c4c4c4}.scielo__theme--light .scielo__logo-scielo-collection .small,.scielo__theme--light .scielo__logo-scielo-collection small{color:#333}footer .scielo__logo-scielo,header .scielo__logo-scielo{width:64px;height:64px}.btn{position:relative;display:inline-block;padding:.625rem 1rem;border-radius:.25rem;line-height:1.25rem;height:2.5rem;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-position:center;transition:all .8s;margin:0 0 1rem;background-color:#fff;border:1px solid #ccc;color:#333}.btn:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.btn:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.btn:focus{background-color:#fff;color:#333}.btn.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.btn.dropdown-toggle{background-color:#d9d9d9;color:#333}.btn:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.btn:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.btn:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.btn:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.btn:focus{border-color:#ccc}.scielo__theme--dark .btn{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .btn:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .btn.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .btn:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .btn:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .btn{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .btn:focus{background-color:#fff;color:#333}.scielo__theme--light .btn.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .btn:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .btn:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .btn:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn:focus{border-color:#ccc}.btn-light,.btn-primary{background-color:#3867ce;border:1px solid #3867ce;color:#fff}.btn-light:focus,.btn-primary:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn-light:focus:active,.btn-primary:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn-light:focus,.btn-primary:focus{background-color:#3867ce;color:#fff}.btn-light.active:not(:disabled):not(.disabled),.btn-primary.active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#3058af;color:#fff}.show>.btn-light.dropdown-toggle,.show>.btn-primary.dropdown-toggle{background-color:#3058af;color:#fff}.btn-light:hover:not(:disabled):not(.disabled),.btn-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.btn-light:active:not(:disabled):not(.disabled),.btn-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#060a15;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-light,.scielo__theme--dark .btn-primary{background-color:#86acff;border:1px solid #86acff;color:#333}.scielo__theme--dark .btn-light:focus,.scielo__theme--dark .btn-primary:focus{background-color:#86acff;color:#333}.scielo__theme--dark .btn-light.active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-primary.active:not(:disabled):not(.disabled){background-color:#7292d9;color:#333}.scielo__theme--dark .btn-light:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-primary:hover:not(:disabled):not(.disabled){border:1px solid #b6cdff;background:#b6cdff radial-gradient(circle,transparent 1%,#b6cdff 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-light:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-primary:active:not(:disabled):not(.disabled){border:1px solid #b6cdff;background-color:#f3f7ff;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-light,.scielo__theme--light .btn-primary{background-color:#3867ce;border-color:1px solid #3867ce;color:#fff}.scielo__theme--light .btn-light:focus,.scielo__theme--light .btn-primary:focus{background-color:#3867ce;color:#fff}.scielo__theme--light .btn-light.active:not(:disabled):not(.disabled),.scielo__theme--light .btn-primary.active:not(:disabled):not(.disabled){background-color:#567ed5;color:#fff}.scielo__theme--light .btn-light:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-light:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#060a15;background-size:100%;transition:background 0s;color:#fff}.btn-info{background-color:#2195a9;border:1px solid #2195a9;color:#fff}.btn-info:focus{box-shadow:0 0 0 .125rem rgba(33,149,169,.25);outline:0}.btn-info:focus:active{box-shadow:0 0 0 .25rem rgba(33,149,169,.25)}.btn-info:focus{background-color:#2195a9;color:#fff}.btn-info.active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#1c7f90;color:#fff}.show>.btn-info.dropdown-toggle{background-color:#1c7f90;color:#fff}.btn-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.btn-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#030f11;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-info{background-color:#2299ad;border:1px solid #2299ad;color:#333}.scielo__theme--dark .btn-info:focus{background-color:#2299ad;color:#333}.scielo__theme--dark .btn-info.active:not(:disabled):not(.disabled){background-color:#1d8293;color:#333}.scielo__theme--dark .btn-info:hover:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background:#7ac2ce radial-gradient(circle,transparent 1%,#7ac2ce 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-info:active:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background-color:#e9f5f7;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-info{background-color:#2195a9;border-color:1px solid #2195a9;color:#fff}.scielo__theme--light .btn-info:focus{background-color:#2195a9;color:#fff}.scielo__theme--light .btn-info.active:not(:disabled):not(.disabled){background-color:#42a5b6;color:#fff}.scielo__theme--light .btn-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#030f11;background-size:100%;transition:background 0s;color:#fff}.btn-dark{background-color:#fff;border:1px solid #ccc;color:#333}.btn-dark:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.btn-dark:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.btn-dark:focus{background-color:#fff;color:#333}.btn-dark.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.btn-dark.dropdown-toggle{background-color:#d9d9d9;color:#333}.btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.btn-dark:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.btn-dark:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.btn-dark:focus{border-color:#ccc}.scielo__theme--dark .btn-dark{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .btn-dark:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .btn-dark.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-dark:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .btn-dark:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-dark:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .btn-dark{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .btn-dark:focus{background-color:#fff;color:#333}.scielo__theme--light .btn-dark.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .btn-dark:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-dark:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .btn-dark:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-dark:focus{border-color:#ccc}.btn-success{background-color:#2c9d45;border:1px solid #2c9d45;color:#fff}.btn-success:focus{box-shadow:0 0 0 .125rem rgba(44,157,69,.25);outline:0}.btn-success:focus:active{box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.btn-success:focus{background-color:#2c9d45;color:#fff}.btn-success.active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#25853b;color:#fff}.show>.btn-success.dropdown-toggle{background-color:#25853b;color:#fff}.btn-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.btn-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#041007;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-success{background-color:#2c9d45;border:1px solid #2c9d45;color:#333}.scielo__theme--dark .btn-success:focus{background-color:#2c9d45;color:#333}.scielo__theme--dark .btn-success.active:not(:disabled):not(.disabled){background-color:#25853b;color:#333}.scielo__theme--dark .btn-success:hover:not(:disabled):not(.disabled){border:1px solid #80c48f;background:#80c48f radial-gradient(circle,transparent 1%,#80c48f 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-success:active:not(:disabled):not(.disabled){border:1px solid #80c48f;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-success{background-color:#2c9d45;border-color:1px solid #2c9d45;color:#fff}.scielo__theme--light .btn-success:focus{background-color:#2c9d45;color:#fff}.scielo__theme--light .btn-success.active:not(:disabled):not(.disabled){background-color:#4cac61;color:#fff}.scielo__theme--light .btn-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#041007;background-size:100%;transition:background 0s;color:#fff}.btn-danger{background-color:#c63800;border:1px solid #c63800;color:#fff}.btn-danger:focus{box-shadow:0 0 0 .125rem rgba(198,56,0,.25);outline:0}.btn-danger:focus:active{box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.btn-danger:focus{background-color:#c63800;color:#fff}.btn-danger.active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#a83000;color:#fff}.show>.btn-danger.dropdown-toggle{background-color:#a83000;color:#fff}.btn-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.btn-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#140600;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-danger{background-color:#ff7e4a;border:1px solid #ff7e4a;color:#333}.scielo__theme--dark .btn-danger:focus{background-color:#ff7e4a;color:#333}.scielo__theme--dark .btn-danger.active:not(:disabled):not(.disabled){background-color:#d96b3f;color:#333}.scielo__theme--dark .btn-danger:hover:not(:disabled):not(.disabled){border:1px solid #ffb292;background:#ffb292 radial-gradient(circle,transparent 1%,#ffb292 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-danger:active:not(:disabled):not(.disabled){border:1px solid #ffb292;background-color:#fff2ed;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-danger{background-color:#c63800;border-color:1px solid #c63800;color:#fff}.scielo__theme--light .btn-danger:focus{background-color:#c63800;color:#fff}.scielo__theme--light .btn-danger.active:not(:disabled):not(.disabled){background-color:#cf5626;color:#fff}.scielo__theme--light .btn-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#140600;background-size:100%;transition:background 0s;color:#fff}.btn-warning{background-color:#b67f00;border:1px solid #b67f00;color:#fff}.btn-warning:focus{box-shadow:0 0 0 .125rem rgba(182,127,0,.25);outline:0}.btn-warning:focus:active{box-shadow:0 0 0 .25rem rgba(182,127,0,.25)}.btn-warning:focus{background-color:#b67f00;color:#fff}.btn-warning.active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#9b6c00;color:#fff}.show>.btn-warning.dropdown-toggle{background-color:#9b6c00;color:#fff}.btn-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.btn-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#120d00;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-warning{background-color:#b67f00;border:1px solid #b67f00;color:#333}.scielo__theme--dark .btn-warning:focus{background-color:#b67f00;color:#333}.scielo__theme--dark .btn-warning.active:not(:disabled):not(.disabled){background-color:#9b6c00;color:#333}.scielo__theme--dark .btn-warning:hover:not(:disabled):not(.disabled){border:1px solid #d3b266;background:#d3b266 radial-gradient(circle,transparent 1%,#d3b266 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-warning:active:not(:disabled):not(.disabled){border:1px solid #d3b266;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-warning{background-color:#b67f00;border-color:1px solid #b67f00;color:#fff}.scielo__theme--light .btn-warning:focus{background-color:#b67f00;color:#fff}.scielo__theme--light .btn-warning.active:not(:disabled):not(.disabled){background-color:#c19226;color:#fff}.scielo__theme--light .btn-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#120d00;background-size:100%;transition:background 0s;color:#fff}.btn.disabled,.btn:disabled{pointer-events:auto;cursor:not-allowed;background-color:#f7f6f4;border:1px solid #ccc;color:rgba(0,0,0,.1);opacity:1}.btn.disabled:focus,.btn:disabled:focus{background-color:#f7f6f4;color:rgba(0,0,0,.1)}.btn.disabled.active:not(:disabled):not(.disabled),.btn:disabled.active:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background-color:#d2d1cf;color:rgba(0,0,0,.1)}.show>.btn.disabled.dropdown-toggle,.show>.btn:disabled.dropdown-toggle{background-color:#d2d1cf;color:rgba(0,0,0,.1)}.btn.disabled:hover:not(:disabled):not(.disabled),.btn:disabled:hover:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background:#d2d1cf radial-gradient(circle,transparent 1%,#d2d1cf 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.btn.disabled:active:not(:disabled):not(.disabled),.btn:disabled:active:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background-color:#191918;background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.scielo__theme--dark .btn.disabled,.scielo__theme--dark .btn:disabled{background-color:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#c4c4c4}.scielo__theme--dark .btn.disabled:focus,.scielo__theme--dark .btn:disabled:focus{background-color:rgba(255,255,255,.2);color:#c4c4c4}.scielo__theme--dark .btn.disabled.active:not(:disabled):not(.disabled),.scielo__theme--dark .btn:disabled.active:not(:disabled):not(.disabled){background-color:rgba(99,99,99,.32);color:#c4c4c4}.scielo__theme--dark .btn.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn:disabled:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.52);background:rgba(255,255,255,.52) radial-gradient(circle,transparent 1%,rgba(255,255,255,.52) 1%) center/15000%;color:#c4c4c4;text-decoration:none}.scielo__theme--dark .btn.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn:disabled:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.52);background-color:rgba(255,255,255,.92);background-size:100%;transition:background 0s;color:#c4c4c4}.scielo__theme--light .btn.disabled,.scielo__theme--light .btn:disabled{background-color:#f7f6f4;border-color:1px solid #ccc;color:rgba(0,0,0,.1)}.scielo__theme--light .btn.disabled:focus,.scielo__theme--light .btn:disabled:focus{background-color:#f7f6f4;color:rgba(0,0,0,.1)}.scielo__theme--light .btn.disabled.active:not(:disabled):not(.disabled),.scielo__theme--light .btn:disabled.active:not(:disabled):not(.disabled){background-color:#f8f7f6;color:rgba(0,0,0,.1)}.scielo__theme--light .btn.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn:disabled:hover:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background:#d2d1cf radial-gradient(circle,transparent 1%,#d2d1cf 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.scielo__theme--light .btn.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn:disabled:active:not(:disabled):not(.disabled){border:1px solid #d2d1cf;background-color:#191918;background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.btn-link{padding-left:1.5rem;padding-right:1.5rem;background-color:transparent;border:1px solid transparent;color:#3867ce;text-decoration:none}.btn-link:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn-link:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn-link:focus{background-color:transparent;border-color:transparent;color:#3867ce}.btn-link:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:#3867ce;text-decoration:none}.btn-link:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:#3867ce}.scielo__theme--dark .btn-link{background-color:transparent;border-color:transparent;color:#86acff}.scielo__theme--dark .btn-link:focus{color:#86acff;background-color:transparent;border-color:transparent}.scielo__theme--dark .btn-link:hover:not(:disabled):not(.disabled){border:1px solid #333;background:#333 radial-gradient(circle,transparent 1%,#333 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--dark .btn-link:active:not(:disabled):not(.disabled){border:1px solid #333;background-color:rgba(239,238,236,.5);background-size:100%;transition:background 0s;color:#fff}.scielo__theme--light .btn-link{background-color:transparent;color:#3867ce}.scielo__theme--light .btn-link:focus{background-color:transparent;border-color:transparent;color:#3867ce}.scielo__theme--light .btn-link:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:#3867ce;text-decoration:none}.scielo__theme--light .btn-link:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:#3867ce}.btn-group-lg>.btn-link.btn,.btn-link.btn-lg{padding-left:1.875rem;padding-right:1.875rem}.btn-group-sm>.btn-link.btn,.btn-link.btn-sm{padding-left:1.125rem;padding-right:1.125rem}.btn-link.disabled,.btn-link:disabled{background-color:transparent;border:1px solid transparent;color:rgba(0,0,0,.1);opacity:1}.btn-link.disabled:focus,.btn-link:disabled:focus{background-color:transparent;border-color:transparent;color:rgba(0,0,0,.1)}.btn-link.disabled:hover:not(:disabled):not(.disabled),.btn-link:disabled:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.btn-link.disabled:active:not(:disabled):not(.disabled),.btn-link:disabled:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.scielo__theme--dark .btn-link.disabled,.scielo__theme--dark .btn-link:disabled{background-color:transparent;border-color:transparent;color:rgba(255,255,255,.2)}.scielo__theme--dark .btn-link.disabled:focus,.scielo__theme--dark .btn-link:disabled:focus{color:rgba(255,255,255,.2);background-color:transparent;border-color:transparent}.scielo__theme--dark .btn-link.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-link:disabled:hover:not(:disabled):not(.disabled){border:1px solid #333;background:#333 radial-gradient(circle,transparent 1%,#333 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--dark .btn-link.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-link:disabled:active:not(:disabled):not(.disabled){border:1px solid #333;background-color:rgba(239,238,236,.5);background-size:100%;transition:background 0s;color:#fff}.scielo__theme--light .btn-link.disabled,.scielo__theme--light .btn-link:disabled{background-color:transparent;color:rgba(0,0,0,.1);opacity:1}.scielo__theme--light .btn-link.disabled:focus,.scielo__theme--light .btn-link:disabled:focus{background-color:transparent;border-color:transparent;color:rgba(0,0,0,.1)}.scielo__theme--light .btn-link.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-link:disabled:hover:not(:disabled):not(.disabled){border:1px solid #fff;background:#fff radial-gradient(circle,transparent 1%,#fff 1%) center/15000%;color:rgba(0,0,0,.1);text-decoration:none}.scielo__theme--light .btn-link.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-link:disabled:active:not(:disabled):not(.disabled){border:1px solid #fff;background-color:rgba(56,103,206,.1);background-size:100%;transition:background 0s;color:rgba(0,0,0,.1)}.btn-link:hover{background:0 0!important;border-color:transparent!important;text-decoration:underline!important}.btn-outline-light,.btn-outline-primary{background-color:transparent;border:1px solid #3867ce;color:#3867ce}.btn-outline-light:focus,.btn-outline-primary:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.btn-outline-light:focus:active,.btn-outline-primary:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.btn-outline-light:focus,.btn-outline-primary:focus{background-color:transparent;color:#3867ce}.btn-outline-light:focus,.btn-outline-light:hover,.btn-outline-primary:focus,.btn-outline-primary:hover{border-color:#3867ce}.btn-outline-light:hover:not(:disabled):not(.disabled),.btn-outline-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-light:active:not(:disabled):not(.disabled),.btn-outline-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-light,.scielo__theme--dark .btn-outline-primary{background-color:transparent;border-color:#86acff;color:#86acff}.scielo__theme--dark .btn-outline-light:focus,.scielo__theme--dark .btn-outline-primary:focus{background-color:transparent;color:#86acff}.scielo__theme--dark .btn-outline-light:focus,.scielo__theme--dark .btn-outline-light:hover,.scielo__theme--dark .btn-outline-primary:focus,.scielo__theme--dark .btn-outline-primary:hover{border-color:#86acff}.scielo__theme--dark .btn-outline-light:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:hover:not(:disabled):not(.disabled){border:1px solid #b6cdff;background:#b6cdff radial-gradient(circle,transparent 1%,#b6cdff 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-light:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:active:not(:disabled):not(.disabled){border:1px solid #b6cdff;background-color:#f3f7ff;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-light,.scielo__theme--light .btn-outline-primary{background-color:transparent;border:1px solid #3867ce;color:#3867ce}.scielo__theme--light .btn-outline-light:focus,.scielo__theme--light .btn-outline-primary:focus{background-color:transparent;color:#3867ce}.scielo__theme--light .btn-outline-light:focus,.scielo__theme--light .btn-outline-light:hover,.scielo__theme--light .btn-outline-primary:focus,.scielo__theme--light .btn-outline-primary:hover{border-color:#3867ce}.scielo__theme--light .btn-outline-light:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-light:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.btn-outline-dark,.btn-outline-secondary{background-color:transparent;border:1px solid 1px solid #ccc;color:#333}.btn-outline-dark:focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.btn-outline-dark:focus:active,.btn-outline-secondary:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.btn-outline-dark:focus,.btn-outline-secondary:focus{background-color:transparent;color:#333}.btn-outline-dark:focus,.btn-outline-dark:hover,.btn-outline-secondary:focus,.btn-outline-secondary:hover{border-color:1px solid #ccc}.btn-outline-dark:hover:not(:disabled):not(.disabled),.btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-dark:active:not(:disabled):not(.disabled),.btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#fff;background-size:100%;transition:background 0s;color:#fff}.btn-outline-dark:hover:not(:disabled):not(.disabled),.btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.btn-outline-dark:active:not(:disabled):not(.disabled),.btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.btn-outline-dark:focus,.btn-outline-secondary:focus{border-color:#ccc}.btn-outline-dark.dropdown-toggle.show,.btn-outline-secondary.dropdown-toggle.show{border-color:#ccc}.scielo__theme--dark .btn-outline-dark,.scielo__theme--dark .btn-outline-secondary{background-color:transparent;border-color:1px solid rgba(255,255,255,.3);color:#c4c4c4}.scielo__theme--dark .btn-outline-dark:focus,.scielo__theme--dark .btn-outline-secondary:focus{background-color:transparent;color:#c4c4c4}.scielo__theme--dark .btn-outline-dark:focus,.scielo__theme--dark .btn-outline-dark:hover,.scielo__theme--dark .btn-outline-secondary:focus,.scielo__theme--dark .btn-outline-secondary:hover{border-color:1px solid rgba(255,255,255,.3)}.scielo__theme--dark .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .btn-outline-dark:focus,.scielo__theme--dark .btn-outline-secondary:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--dark .btn-outline-dark.dropdown-toggle.show,.scielo__theme--dark .btn-outline-secondary.dropdown-toggle.show{background:0 0;color:#c4c4c4}.scielo__theme--dark .btn-outline-dark.dropdown-toggle.show:focus,.scielo__theme--dark .btn-outline-secondary.dropdown-toggle.show:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25)}.scielo__theme--light .btn-outline-dark,.scielo__theme--light .btn-outline-secondary{background-color:transparent;border:1px solid 1px solid #ccc;color:#333}.scielo__theme--light .btn-outline-dark:focus,.scielo__theme--light .btn-outline-secondary:focus{background-color:transparent;color:#333}.scielo__theme--light .btn-outline-dark:focus,.scielo__theme--light .btn-outline-dark:hover,.scielo__theme--light .btn-outline-secondary:focus,.scielo__theme--light .btn-outline-secondary:hover{border-color:1px solid #ccc}.scielo__theme--light .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#fff;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--light .btn-outline-dark:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .btn-outline-dark:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-dark:focus,.scielo__theme--light .btn-outline-secondary:focus{border-color:#ccc}.btn-outline-info{background-color:transparent;border:1px solid #2195a9;color:#2299ad}.btn-outline-info:focus{box-shadow:0 0 0 .125rem rgba(33,149,169,.25);outline:0}.btn-outline-info:focus:active{box-shadow:0 0 0 .25rem rgba(33,149,169,.25)}.btn-outline-info:focus{background-color:transparent;color:#2299ad}.btn-outline-info:focus,.btn-outline-info:hover{border-color:#2195a9}.btn-outline-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#e9f4f6;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-info{background-color:transparent;border-color:#2299ad;color:#2299ad}.scielo__theme--dark .btn-outline-info:focus{background-color:transparent;color:#2299ad}.scielo__theme--dark .btn-outline-info:focus,.scielo__theme--dark .btn-outline-info:hover{border-color:#2299ad}.scielo__theme--dark .btn-outline-info:hover:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background:#7ac2ce radial-gradient(circle,transparent 1%,#7ac2ce 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-info:active:not(:disabled):not(.disabled){border:1px solid #7ac2ce;background-color:#e9f5f7;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-info{background-color:transparent;border:1px solid #2195a9;color:#2299ad}.scielo__theme--light .btn-outline-info:focus{background-color:transparent;color:#2299ad}.scielo__theme--light .btn-outline-info:focus,.scielo__theme--light .btn-outline-info:hover{border-color:#2195a9}.scielo__theme--light .btn-outline-info:hover:not(:disabled):not(.disabled){border:1px solid #1c7f90;background:#1c7f90 radial-gradient(circle,transparent 1%,#1c7f90 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-info:active:not(:disabled):not(.disabled){border:1px solid #1c7f90;background-color:#e9f4f6;background-size:100%;transition:background 0s;color:#fff}.btn-outline-success{background-color:transparent;border:1px solid #2c9d45;color:#2c9d45}.btn-outline-success:focus{box-shadow:0 0 0 .125rem rgba(44,157,69,.25);outline:0}.btn-outline-success:focus:active{box-shadow:0 0 0 .25rem rgba(44,157,69,.25)}.btn-outline-success:focus{background-color:transparent;color:#2c9d45}.btn-outline-success:focus,.btn-outline-success:hover{border-color:#2c9d45}.btn-outline-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-success{background-color:transparent;border-color:#2c9d45;color:#2c9d45}.scielo__theme--dark .btn-outline-success:focus{background-color:transparent;color:#2c9d45}.scielo__theme--dark .btn-outline-success:focus,.scielo__theme--dark .btn-outline-success:hover{border-color:#2c9d45}.scielo__theme--dark .btn-outline-success:hover:not(:disabled):not(.disabled){border:1px solid #80c48f;background:#80c48f radial-gradient(circle,transparent 1%,#80c48f 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-success:active:not(:disabled):not(.disabled){border:1px solid #80c48f;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-success{background-color:transparent;border:1px solid #2c9d45;color:#2c9d45}.scielo__theme--light .btn-outline-success:focus{background-color:transparent;color:#2c9d45}.scielo__theme--light .btn-outline-success:focus,.scielo__theme--light .btn-outline-success:hover{border-color:#2c9d45}.scielo__theme--light .btn-outline-success:hover:not(:disabled):not(.disabled){border:1px solid #25853b;background:#25853b radial-gradient(circle,transparent 1%,#25853b 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-success:active:not(:disabled):not(.disabled){border:1px solid #25853b;background-color:#eaf5ec;background-size:100%;transition:background 0s;color:#fff}.btn-outline-danger{background-color:transparent;border:1px solid #c63800;color:#c63800}.btn-outline-danger:focus{box-shadow:0 0 0 .125rem rgba(198,56,0,.25);outline:0}.btn-outline-danger:focus:active{box-shadow:0 0 0 .25rem rgba(198,56,0,.25)}.btn-outline-danger:focus{background-color:transparent;color:#c63800}.btn-outline-danger:focus,.btn-outline-danger:hover{border-color:#c63800}.btn-outline-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#f9ebe6;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-danger{background-color:transparent;border-color:#ff7e4a;color:#ff7e4a}.scielo__theme--dark .btn-outline-danger:focus{background-color:transparent;color:#ff7e4a}.scielo__theme--dark .btn-outline-danger:focus,.scielo__theme--dark .btn-outline-danger:hover{border-color:#ff7e4a}.scielo__theme--dark .btn-outline-danger:hover:not(:disabled):not(.disabled){border:1px solid #ffb292;background:#ffb292 radial-gradient(circle,transparent 1%,#ffb292 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-danger:active:not(:disabled):not(.disabled){border:1px solid #ffb292;background-color:#fff2ed;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-danger{background-color:transparent;border:1px solid #c63800;color:#c63800}.scielo__theme--light .btn-outline-danger:focus{background-color:transparent;color:#c63800}.scielo__theme--light .btn-outline-danger:focus,.scielo__theme--light .btn-outline-danger:hover{border-color:#c63800}.scielo__theme--light .btn-outline-danger:hover:not(:disabled):not(.disabled){border:1px solid #a83000;background:#a83000 radial-gradient(circle,transparent 1%,#a83000 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-danger:active:not(:disabled):not(.disabled){border:1px solid #a83000;background-color:#f9ebe6;background-size:100%;transition:background 0s;color:#fff}.btn-outline-warning{background-color:transparent;border:1px solid #b67f00;color:#b67f00}.btn-outline-warning:focus{box-shadow:0 0 0 .125rem rgba(182,127,0,.25);outline:0}.btn-outline-warning:focus:active{box-shadow:0 0 0 .25rem rgba(182,127,0,.25)}.btn-outline-warning:focus{background-color:transparent;color:#b67f00}.btn-outline-warning:focus,.btn-outline-warning:hover{border-color:#b67f00}.btn-outline-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-warning{background-color:transparent;border-color:#b67f00;color:#b67f00}.scielo__theme--dark .btn-outline-warning:focus{background-color:transparent;color:#b67f00}.scielo__theme--dark .btn-outline-warning:focus,.scielo__theme--dark .btn-outline-warning:hover{border-color:#b67f00}.scielo__theme--dark .btn-outline-warning:hover:not(:disabled):not(.disabled){border:1px solid #d3b266;background:#d3b266 radial-gradient(circle,transparent 1%,#d3b266 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-warning:active:not(:disabled):not(.disabled){border:1px solid #d3b266;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-warning{background-color:transparent;border:1px solid #b67f00;color:#b67f00}.scielo__theme--light .btn-outline-warning:focus{background-color:transparent;color:#b67f00}.scielo__theme--light .btn-outline-warning:focus,.scielo__theme--light .btn-outline-warning:hover{border-color:#b67f00}.scielo__theme--light .btn-outline-warning:hover:not(:disabled):not(.disabled){border:1px solid #9b6c00;background:#9b6c00 radial-gradient(circle,transparent 1%,#9b6c00 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-warning:active:not(:disabled):not(.disabled){border:1px solid #9b6c00;background-color:#f8f2e6;background-size:100%;transition:background 0s;color:#fff}.btn-outline-danger.disabled,.btn-outline-danger:disabled,.btn-outline-dark.disabled,.btn-outline-dark:disabled,.btn-outline-info.disabled,.btn-outline-info:disabled,.btn-outline-light.disabled,.btn-outline-light:disabled,.btn-outline-primary.disabled,.btn-outline-primary:disabled,.btn-outline-secondary.disabled,.btn-outline-secondary:disabled,.btn-outline-success.disabled,.btn-outline-success:disabled,.btn-outline-warning.disabled,.btn-outline-warning:disabled{background-color:transparent;border:1px solid #f7f6f4;color:rgba(0,0,0,.1);opacity:1}.btn-outline-danger.disabled:focus,.btn-outline-danger:disabled:focus,.btn-outline-dark.disabled:focus,.btn-outline-dark:disabled:focus,.btn-outline-info.disabled:focus,.btn-outline-info:disabled:focus,.btn-outline-light.disabled:focus,.btn-outline-light:disabled:focus,.btn-outline-primary.disabled:focus,.btn-outline-primary:disabled:focus,.btn-outline-secondary.disabled:focus,.btn-outline-secondary:disabled:focus,.btn-outline-success.disabled:focus,.btn-outline-success:disabled:focus,.btn-outline-warning.disabled:focus,.btn-outline-warning:disabled:focus{background-color:transparent;color:rgba(0,0,0,.1)}.btn-outline-danger.disabled:focus,.btn-outline-danger.disabled:hover,.btn-outline-danger:disabled:focus,.btn-outline-danger:disabled:hover,.btn-outline-dark.disabled:focus,.btn-outline-dark.disabled:hover,.btn-outline-dark:disabled:focus,.btn-outline-dark:disabled:hover,.btn-outline-info.disabled:focus,.btn-outline-info.disabled:hover,.btn-outline-info:disabled:focus,.btn-outline-info:disabled:hover,.btn-outline-light.disabled:focus,.btn-outline-light.disabled:hover,.btn-outline-light:disabled:focus,.btn-outline-light:disabled:hover,.btn-outline-primary.disabled:focus,.btn-outline-primary.disabled:hover,.btn-outline-primary:disabled:focus,.btn-outline-primary:disabled:hover,.btn-outline-secondary.disabled:focus,.btn-outline-secondary.disabled:hover,.btn-outline-secondary:disabled:focus,.btn-outline-secondary:disabled:hover,.btn-outline-success.disabled:focus,.btn-outline-success.disabled:hover,.btn-outline-success:disabled:focus,.btn-outline-success:disabled:hover,.btn-outline-warning.disabled:focus,.btn-outline-warning.disabled:hover,.btn-outline-warning:disabled:focus,.btn-outline-warning:disabled:hover{border-color:#f7f6f4}.btn-outline-danger.disabled:hover:not(:disabled):not(.disabled),.btn-outline-danger:disabled:hover:not(:disabled):not(.disabled),.btn-outline-dark.disabled:hover:not(:disabled):not(.disabled),.btn-outline-dark:disabled:hover:not(:disabled):not(.disabled),.btn-outline-info.disabled:hover:not(:disabled):not(.disabled),.btn-outline-info:disabled:hover:not(:disabled):not(.disabled),.btn-outline-light.disabled:hover:not(:disabled):not(.disabled),.btn-outline-light:disabled:hover:not(:disabled):not(.disabled),.btn-outline-primary.disabled:hover:not(:disabled):not(.disabled),.btn-outline-primary:disabled:hover:not(:disabled):not(.disabled),.btn-outline-secondary.disabled:hover:not(:disabled):not(.disabled),.btn-outline-secondary:disabled:hover:not(:disabled):not(.disabled),.btn-outline-success.disabled:hover:not(:disabled):not(.disabled),.btn-outline-success:disabled:hover:not(:disabled):not(.disabled),.btn-outline-warning.disabled:hover:not(:disabled):not(.disabled),.btn-outline-warning:disabled:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.btn-outline-danger.disabled:active:not(:disabled):not(.disabled),.btn-outline-danger:disabled:active:not(:disabled):not(.disabled),.btn-outline-dark.disabled:active:not(:disabled):not(.disabled),.btn-outline-dark:disabled:active:not(:disabled):not(.disabled),.btn-outline-info.disabled:active:not(:disabled):not(.disabled),.btn-outline-info:disabled:active:not(:disabled):not(.disabled),.btn-outline-light.disabled:active:not(:disabled):not(.disabled),.btn-outline-light:disabled:active:not(:disabled):not(.disabled),.btn-outline-primary.disabled:active:not(:disabled):not(.disabled),.btn-outline-primary:disabled:active:not(:disabled):not(.disabled),.btn-outline-secondary.disabled:active:not(:disabled):not(.disabled),.btn-outline-secondary:disabled:active:not(:disabled):not(.disabled),.btn-outline-success.disabled:active:not(:disabled):not(.disabled),.btn-outline-success:disabled:active:not(:disabled):not(.disabled),.btn-outline-warning.disabled:active:not(:disabled):not(.disabled),.btn-outline-warning:disabled:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.scielo__theme--dark .btn-outline-danger.disabled,.scielo__theme--dark .btn-outline-danger:disabled,.scielo__theme--dark .btn-outline-dark.disabled,.scielo__theme--dark .btn-outline-dark:disabled,.scielo__theme--dark .btn-outline-info.disabled,.scielo__theme--dark .btn-outline-info:disabled,.scielo__theme--dark .btn-outline-light.disabled,.scielo__theme--dark .btn-outline-light:disabled,.scielo__theme--dark .btn-outline-primary.disabled,.scielo__theme--dark .btn-outline-primary:disabled,.scielo__theme--dark .btn-outline-secondary.disabled,.scielo__theme--dark .btn-outline-secondary:disabled,.scielo__theme--dark .btn-outline-success.disabled,.scielo__theme--dark .btn-outline-success:disabled,.scielo__theme--dark .btn-outline-warning.disabled,.scielo__theme--dark .btn-outline-warning:disabled{background-color:transparent;border-color:rgba(255,255,255,.2);color:#c4c4c4}.scielo__theme--dark .btn-outline-danger.disabled:focus,.scielo__theme--dark .btn-outline-danger:disabled:focus,.scielo__theme--dark .btn-outline-dark.disabled:focus,.scielo__theme--dark .btn-outline-dark:disabled:focus,.scielo__theme--dark .btn-outline-info.disabled:focus,.scielo__theme--dark .btn-outline-info:disabled:focus,.scielo__theme--dark .btn-outline-light.disabled:focus,.scielo__theme--dark .btn-outline-light:disabled:focus,.scielo__theme--dark .btn-outline-primary.disabled:focus,.scielo__theme--dark .btn-outline-primary:disabled:focus,.scielo__theme--dark .btn-outline-secondary.disabled:focus,.scielo__theme--dark .btn-outline-secondary:disabled:focus,.scielo__theme--dark .btn-outline-success.disabled:focus,.scielo__theme--dark .btn-outline-success:disabled:focus,.scielo__theme--dark .btn-outline-warning.disabled:focus,.scielo__theme--dark .btn-outline-warning:disabled:focus{background-color:transparent;color:#c4c4c4}.scielo__theme--dark .btn-outline-danger.disabled:focus,.scielo__theme--dark .btn-outline-danger.disabled:hover,.scielo__theme--dark .btn-outline-danger:disabled:focus,.scielo__theme--dark .btn-outline-danger:disabled:hover,.scielo__theme--dark .btn-outline-dark.disabled:focus,.scielo__theme--dark .btn-outline-dark.disabled:hover,.scielo__theme--dark .btn-outline-dark:disabled:focus,.scielo__theme--dark .btn-outline-dark:disabled:hover,.scielo__theme--dark .btn-outline-info.disabled:focus,.scielo__theme--dark .btn-outline-info.disabled:hover,.scielo__theme--dark .btn-outline-info:disabled:focus,.scielo__theme--dark .btn-outline-info:disabled:hover,.scielo__theme--dark .btn-outline-light.disabled:focus,.scielo__theme--dark .btn-outline-light.disabled:hover,.scielo__theme--dark .btn-outline-light:disabled:focus,.scielo__theme--dark .btn-outline-light:disabled:hover,.scielo__theme--dark .btn-outline-primary.disabled:focus,.scielo__theme--dark .btn-outline-primary.disabled:hover,.scielo__theme--dark .btn-outline-primary:disabled:focus,.scielo__theme--dark .btn-outline-primary:disabled:hover,.scielo__theme--dark .btn-outline-secondary.disabled:focus,.scielo__theme--dark .btn-outline-secondary.disabled:hover,.scielo__theme--dark .btn-outline-secondary:disabled:focus,.scielo__theme--dark .btn-outline-secondary:disabled:hover,.scielo__theme--dark .btn-outline-success.disabled:focus,.scielo__theme--dark .btn-outline-success.disabled:hover,.scielo__theme--dark .btn-outline-success:disabled:focus,.scielo__theme--dark .btn-outline-success:disabled:hover,.scielo__theme--dark .btn-outline-warning.disabled:focus,.scielo__theme--dark .btn-outline-warning.disabled:hover,.scielo__theme--dark .btn-outline-warning:disabled:focus,.scielo__theme--dark .btn-outline-warning:disabled:hover{border-color:rgba(255,255,255,.2)}.scielo__theme--dark .btn-outline-danger.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-danger:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning:disabled:hover:not(:disabled):not(.disabled){border:1px solid #b6cdff;background:#b6cdff radial-gradient(circle,transparent 1%,#b6cdff 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .btn-outline-danger.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-danger:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-dark:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-info:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-light:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-primary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-secondary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-success:disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning.disabled:active:not(:disabled):not(.disabled),.scielo__theme--dark .btn-outline-warning:disabled:active:not(:disabled):not(.disabled){border:1px solid #b6cdff;background-color:#f3f7ff;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .btn-outline-danger.disabled,.scielo__theme--light .btn-outline-danger:disabled,.scielo__theme--light .btn-outline-dark.disabled,.scielo__theme--light .btn-outline-dark:disabled,.scielo__theme--light .btn-outline-info.disabled,.scielo__theme--light .btn-outline-info:disabled,.scielo__theme--light .btn-outline-light.disabled,.scielo__theme--light .btn-outline-light:disabled,.scielo__theme--light .btn-outline-primary.disabled,.scielo__theme--light .btn-outline-primary:disabled,.scielo__theme--light .btn-outline-secondary.disabled,.scielo__theme--light .btn-outline-secondary:disabled,.scielo__theme--light .btn-outline-success.disabled,.scielo__theme--light .btn-outline-success:disabled,.scielo__theme--light .btn-outline-warning.disabled,.scielo__theme--light .btn-outline-warning:disabled{background-color:transparent;border:1px solid #f7f6f4;color:rgba(0,0,0,.1);opacity:1}.scielo__theme--light .btn-outline-danger.disabled:focus,.scielo__theme--light .btn-outline-danger:disabled:focus,.scielo__theme--light .btn-outline-dark.disabled:focus,.scielo__theme--light .btn-outline-dark:disabled:focus,.scielo__theme--light .btn-outline-info.disabled:focus,.scielo__theme--light .btn-outline-info:disabled:focus,.scielo__theme--light .btn-outline-light.disabled:focus,.scielo__theme--light .btn-outline-light:disabled:focus,.scielo__theme--light .btn-outline-primary.disabled:focus,.scielo__theme--light .btn-outline-primary:disabled:focus,.scielo__theme--light .btn-outline-secondary.disabled:focus,.scielo__theme--light .btn-outline-secondary:disabled:focus,.scielo__theme--light .btn-outline-success.disabled:focus,.scielo__theme--light .btn-outline-success:disabled:focus,.scielo__theme--light .btn-outline-warning.disabled:focus,.scielo__theme--light .btn-outline-warning:disabled:focus{background-color:transparent;color:rgba(0,0,0,.1)}.scielo__theme--light .btn-outline-danger.disabled:focus,.scielo__theme--light .btn-outline-danger.disabled:hover,.scielo__theme--light .btn-outline-danger:disabled:focus,.scielo__theme--light .btn-outline-danger:disabled:hover,.scielo__theme--light .btn-outline-dark.disabled:focus,.scielo__theme--light .btn-outline-dark.disabled:hover,.scielo__theme--light .btn-outline-dark:disabled:focus,.scielo__theme--light .btn-outline-dark:disabled:hover,.scielo__theme--light .btn-outline-info.disabled:focus,.scielo__theme--light .btn-outline-info.disabled:hover,.scielo__theme--light .btn-outline-info:disabled:focus,.scielo__theme--light .btn-outline-info:disabled:hover,.scielo__theme--light .btn-outline-light.disabled:focus,.scielo__theme--light .btn-outline-light.disabled:hover,.scielo__theme--light .btn-outline-light:disabled:focus,.scielo__theme--light .btn-outline-light:disabled:hover,.scielo__theme--light .btn-outline-primary.disabled:focus,.scielo__theme--light .btn-outline-primary.disabled:hover,.scielo__theme--light .btn-outline-primary:disabled:focus,.scielo__theme--light .btn-outline-primary:disabled:hover,.scielo__theme--light .btn-outline-secondary.disabled:focus,.scielo__theme--light .btn-outline-secondary.disabled:hover,.scielo__theme--light .btn-outline-secondary:disabled:focus,.scielo__theme--light .btn-outline-secondary:disabled:hover,.scielo__theme--light .btn-outline-success.disabled:focus,.scielo__theme--light .btn-outline-success.disabled:hover,.scielo__theme--light .btn-outline-success:disabled:focus,.scielo__theme--light .btn-outline-success:disabled:hover,.scielo__theme--light .btn-outline-warning.disabled:focus,.scielo__theme--light .btn-outline-warning.disabled:hover,.scielo__theme--light .btn-outline-warning:disabled:focus,.scielo__theme--light .btn-outline-warning:disabled:hover{border-color:#f7f6f4}.scielo__theme--light .btn-outline-danger.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-danger:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success:disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning.disabled:hover:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning:disabled:hover:not(:disabled):not(.disabled){border:1px solid #3058af;background:#3058af radial-gradient(circle,transparent 1%,#3058af 1%) center/15000%;color:#fff;text-decoration:none}.scielo__theme--light .btn-outline-danger.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-danger:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-dark:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-info:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-light:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-primary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-secondary:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-success:disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning.disabled:active:not(:disabled):not(.disabled),.scielo__theme--light .btn-outline-warning:disabled:active:not(:disabled):not(.disabled){border:1px solid #3058af;background-color:#ebf0fa;background-size:100%;transition:background 0s;color:#fff}.btn[class*=scielo__btn-with-icon--left]{padding-left:2rem}.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]:before{vertical-align:top}.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]{left:.5rem}.btn[class*=scielo__btn-with-icon--right]{padding-right:2rem}.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]:before{vertical-align:top}.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]{right:.5rem}.btn[class*=scielo__btn-with-icon--only]{padding:0;width:2.5rem}.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]:before{vertical-align:top}.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]{top:50%;left:50%;transform:translate(-50%,-50%)}.btn.dropdown-toggle[class*=scielo__btn-with-icon--only]{width:3rem;display:flex;justify-content:center;align-items:center;padding-left:2rem;padding-right:1.5rem}.btn.dropdown-toggle[class*=scielo__btn-with-icon--only]:after{right:0;position:static;transform:none;margin:0}.btn.dropdown-toggle[class*=scielo__btn-with-icon--only] [class^=material-icons]{position:static;transform:none}.btn.dropdown-toggle:after{position:absolute;top:50%;transform:translateY(-50%);font-family:'Material Icons Outlined';content:"arrow_drop_down";color:inherit;border:0;line-height:1.5rem!important;text-align:center;right:1rem;width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem;transition:.3s all ease-out}.btn.dropdown-toggle[class*=scielo__btn-with-icon--left]{padding-right:1.5rem}.btn.dropdown-toggle[class*=scielo__btn-with-icon--left].btn-link{padding-left:2.625rem;padding-right:2.625rem}.btn.dropdown-toggle[class*=scielo__btn-with-icon--left]:after{right:.3rem}.btn-group-lg>.btn,.btn-group.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.2rem;border-radius:.25rem;line-height:1.5rem;height:3rem;font-size:1.25rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left],.btn-lg[class*=scielo__btn-with-icon--left]{padding-left:2.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--left] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left] [class^=material-icons]:before,.btn-lg[class*=scielo__btn-with-icon--left] [class^=material-icons]:before{vertical-align:top}.btn-group-lg>.btn[class*=scielo__btn-with-icon--left] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--left] [class^=material-icons]{left:.625rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right],.btn-lg[class*=scielo__btn-with-icon--right]{padding-right:2.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--right] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right] [class^=material-icons]:before,.btn-lg[class*=scielo__btn-with-icon--right] [class^=material-icons]:before{vertical-align:top}.btn-group-lg>.btn[class*=scielo__btn-with-icon--right] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--right] [class^=material-icons]{right:.625rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only],.btn-lg[class*=scielo__btn-with-icon--only]{padding:0;width:3rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--only] [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only] [class^=material-icons]:before,.btn-lg[class*=scielo__btn-with-icon--only] [class^=material-icons]:before{vertical-align:top}.btn-group-lg>.btn[class*=scielo__btn-with-icon--only] [class^=material-icons],.btn-lg[class*=scielo__btn-with-icon--only] [class^=material-icons]{top:50%;left:50%;transform:translate(-50%,-50%)}.btn-group-lg>.dropdown-toggle.btn[class*=scielo__btn-with-icon--only],.btn-lg.dropdown-toggle[class*=scielo__btn-with-icon--only]{width:3rem;padding-left:2.5rem;padding-right:2.5rem;display:flex;justify-content:center;align-items:center}.btn-group-lg>.dropdown-toggle.btn:after,.btn-lg.dropdown-toggle:after{right:1.25rem;width:1.5rem;height:1.5rem;font-size:1.5rem;line-height:1.5rem}.btn-group-sm>.btn,.btn-group.btn-group-sm>.btn,.btn-sm{padding:.5rem .8rem;border-radius:.25rem;line-height:1rem;height:2rem}.dropdown>.btn{padding-right:2.5rem}.dropdown.show .btn{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.dropdown.show .btn:after{transform:rotate(180deg) translateY(50%)}.dropdown .dropdown-menu{background:#fff;border-color:#ccc}.scielo__theme--dark .dropdown .dropdown-menu{background:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .dropdown .dropdown-menu{background:#fff;border-color:#ccc}.dropdown .dropdown-menu>a{color:#333}.dropdown .dropdown-menu>a:hover{background:#f7f6f4}.scielo__theme--dark .dropdown .dropdown-menu>a{color:#c4c4c4}.scielo__theme--dark .dropdown .dropdown-menu>a:hover{background:#414141}.scielo__theme--light .dropdown .dropdown-menu>a{color:#333}.scielo__theme--light .dropdown .dropdown-menu>a:hover{background:#f7f6f4}.copyLink{position:relative;cursor:pointer}.copyLink:after{font-family:'Material Icons Outlined';content:"check";position:absolute;background:#2c9d45;top:100%;left:0;bottom:0;text-align:center;width:100%;color:#fff;font-size:20px;display:block;padding-top:.5rem;text-align:center;transition:all .3s ease-out,text-indent .3s ease-out}.scielo__theme--dark .copyLink:after{background:#2c9d45;color:#333}.scielo__theme--light .copyLink:after{background:#2c9d45;color:#fff}.copyLink.copyFeedback:after{top:0;visibility:visible}.btn-group>.btn{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0}.btn-group>.btn:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.btn-group>.btn:not(:first-child):not(.scielo__btn-with-icon--left):not(.scielo__btn-with-icon--only):not(.arrow-only){padding-left:1.5rem}.btn-group>.btn:not(:last-child):not(.scielo__btn-with-icon--right):not(.scielo__btn-with-icon--only){padding-right:1.5rem}.btn-group>.btn-group>.btn{border-radius:0}.btn-group>.btn-group>.btn.dropdown-toggle{padding-right:3rem!important}.btn-group>.btn-group:first-child>.btn.dropdown-toggle{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.btn-group>.btn-group:last-child>.btn.dropdown-toggle{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;padding-left:1.5rem}.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0;padding-right:1.5rem}.btn-group.btn-group-sm>.btn:not(:first-child):not(.scielo__btn-with-icon--left):not(.scielo__btn-with-icon--only):not(.arrow-only){padding-left:1.125rem}.btn-group.btn-group-sm>.btn:not(:last-child):not(.scielo__btn-with-icon--right):not(.scielo__btn-with-icon--only){padding-right:1.125rem}.btn-group.btn-group-lg>.btn:not(:first-child):not(.scielo__btn-with-icon--left):not(.scielo__btn-with-icon--only):not(.arrow-only){padding-left:1.875rem}.btn-group.btn-group-lg>.btn:not(:last-child):not(.scielo__btn-with-icon--right):not(.scielo__btn-with-icon--only){padding-right:1.875rem}.btn-group-vertical>.btn{margin-bottom:0}.btn-group-vertical>.btn:first-child{border-top-left-radius:.1875rem;border-top-right-radius:.1875rem}.btn-group-vertical>.btn:last-child{border-bottom-left-radius:.1875rem;border-bottom-right-radius:.1875rem}.btn-group-vertical>.btn-group>.btn{padding-left:3rem!important;padding-right:3rem!important}.btn-group-vertical>.btn-group:first-child>.btn{border-top-left-radius:.1875rem;border-top-right-radius:.1875rem}.btn-group-vertical>.btn-group:last-child>.btn{border-bottom-left-radius:.1875rem;border-bottom-right-radius:.1875rem}.scielo__floatingMenuCtt{position:fixed;bottom:30px;width:auto;height:auto;margin:0}.scielo__floatingMenuCtt .material-icons-outlined{vertical-align:baseline}.scielo__floatingMenuCtt>a{padding-top:6px}.scielo__floatingMenu{transition:all .5s;box-sizing:border-box;z-index:1001;padding-left:0;white-space:nowrap;list-style:none;opacity:1;bottom:auto;opacity:1;margin:0;display:inline-block}.scielo__floatingMenu .fm-wrap{padding:0;margin:0}@media (min-width:576px){.scielo__floatingMenu .fm-wrap{padding:25px 25px 25px 0;margin:-25px -25px -25px 0}}.scielo__floatingMenu .fm-button-child,.scielo__floatingMenu .fm-button-main{display:inline-block;position:relative;padding:0;color:#fff;cursor:pointer;outline:0;background-color:#3867ce;border:none;border-radius:50%;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);-webkit-user-drag:none}.scielo__theme--dark .scielo__floatingMenu .fm-button-child,.scielo__theme--dark .scielo__floatingMenu .fm-button-main{background:#86acff;color:#333}.scielo__theme--light .scielo__floatingMenu .fm-button-child,.scielo__theme--light .scielo__floatingMenu .fm-button-main{background-color:#3867ce;color:#fff}.scielo__floatingMenu .fm-button-main{width:56px;height:56px;z-index:20;padding-top:17px;padding-left:16px}.scielo__floatingMenu .fm-button-main .glyphFloatMenu{position:absolute;width:53px;height:56px;font-size:32px;line-height:56px;text-align:center}.scielo__floatingMenu .fm-button-main .material-icons-outlined-menu-close,.scielo__floatingMenu .fm-button-main .sci-ico-floatingMenuClose{opacity:0}.scielo__floatingMenu .fm-button-child{width:40px;height:40px;line-height:40px;text-align:center;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;-moz-animation-duration:.3s;-ms-animation-duration:.3s;-o-animation-duration:.3s;animation-duration:.3s;-o-transition:all .3s ease-out,text-indent .3s ease-out;-ms-transition:all .3s ease-out,text-indent .3s ease-out;-moz-transition:all .3s ease-out,text-indent .3s ease-out;-webkit-transition:all .3s ease-out,text-indent .3s ease-out;transition:all .3s ease-out,text-indent .3s ease-out;margin-top:1px;padding-top:6px}.scielo__floatingMenu .fm-button-child .glyphFloatMenu{font-size:24px}.scielo__floatingMenu .fm-button-child:hover{background-color:#3058af}.scielo__theme--dark .scielo__floatingMenu .fm-button-child:hover{background-color:#b6cdff;color:#333}.scielo__theme--light .scielo__floatingMenu .fm-button-child:hover{background-color:#3058af;color:#fff}.scielo__floatingMenu .fm-list{position:absolute;bottom:42px;width:56px;min-height:56px;margin:0}@media (min-width:576px){.scielo__floatingMenu .fm-list{margin-left:8px}}.scielo__floatingMenu .fm-list li{box-sizing:border-box;position:absolute;top:30px;left:8px;display:block;padding:9px 0 2px 0;margin:0;width:50px;height:auto}@media (min-width:576px){.scielo__floatingMenu .fm-list li{top:41px;left:6px}}@media (max-width:575.98px){.scielo__floatingMenu .fm-list li a:after{content:attr(data-mobile-tooltip);color:#fff;background:#333;position:absolute;margin-left:16px;display:inline-block;width:auto;height:auto;text-align:left;padding:5px;line-height:100%;border-radius:4px;font-size:.75rem;margin-top:3px}.scielo__theme--dark .scielo__floatingMenu .fm-list li a:after{background:#fff;color:#333}.scielo__theme--light .scielo__floatingMenu .fm-list li a:after{background:#333;color:#fff}.scielo__floatingMenu .fm-list li a:before{content:'';border-right:4px solid #333;border-left:4px solid transparent;border-top:4px solid transparent;border-bottom:4px solid transparent;margin-left:13px;margin-top:10px;position:absolute;margin-left:32px}.scielo__theme--dark .scielo__floatingMenu .fm-list li a:before{border-right:4px solid #fff}.scielo__theme--light .scielo__floatingMenu .fm-list li a:before{border-right:4px solid #333}}.scielo__floatingMenu:hover .fm-button-main{background-color:#fff;padding-top:17px;padding-left:16px}.scielo__floatingMenu:hover .material-icons-outlined-menu-default,.scielo__floatingMenu:hover .sci-ico-floatingMenuDefault{opacity:0;display:none}.scielo__floatingMenu:hover .material-icons-outlined-menu-close,.scielo__floatingMenu:hover .sci-ico-floatingMenuClose{opacity:1;color:#3867ce}.scielo__floatingMenu.fm-slidein .fm-list li{display:block;opacity:0;transition:all .5s}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li{opacity:1}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(1){-webkit-transform:translateX(50px);transform:translateX(50px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(1){-webkit-transform:translateY(-50px);transform:translateY(-50px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(2){-webkit-transform:translateX(100px);transform:translateX(100px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(2){-webkit-transform:translateY(-100px);transform:translateY(-100px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(3){-webkit-transform:translateX(150px);transform:translateX(150px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(3){-webkit-transform:translateY(-150px);transform:translateY(-150px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(4){-webkit-transform:translateX(200px);transform:translateX(200px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(4){-webkit-transform:translateY(-200px);transform:translateY(-200px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(5){-webkit-transform:translateX(250px);transform:translateX(250px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(5){-webkit-transform:translateY(-250px);transform:translateY(-250px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(6){-webkit-transform:translateX(300px);transform:translateX(300px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(6){-webkit-transform:translateY(-300px);transform:translateY(-300px)}}.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(7){-webkit-transform:translateX(350px);transform:translateX(350px)}@media (max-width:575.98px){.scielo__floatingMenu.fm-slidein[data-fm-toogle=hover]:hover .fm-list li:nth-child(7){-webkit-transform:translateY(-350px);transform:translateY(-350px)}}.scielo__floatingMenuItem{opacity:1;color:#fff;background-color:#3867ce;border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px;text-align:center;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;-moz-animation-duration:.3s;-ms-animation-duration:.3s;-o-animation-duration:.3s;animation-duration:.3s;-o-transition:all .3s ease-out,text-indent .3s ease-out;-ms-transition:all .3s ease-out,text-indent .3s ease-out;-moz-transition:all .3s ease-out,text-indent .3s ease-out;-webkit-transition:all .3s ease-out,text-indent .3s ease-out;transition:all .3s ease-out,text-indent .3s ease-out;box-shadow:0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28);margin-right:4px}.scielo__theme--dark .scielo__floatingMenuItem{background:#86acff;color:#333}.scielo__theme--light .scielo__floatingMenuItem{background:#3867ce;color:#fff}.scielo__floatingMenuItem .glyphFloatMenu{font-size:24px}.scielo__floatingMenuItem:hover{background-color:#3058af;color:#fff}.scielo__theme--dark .scielo__floatingMenuItem:hover{background-color:#b6cdff;color:#333}.scielo__theme--light .scielo__floatingMenuItem:hover{background-color:#3058af;color:#fff}/*! nouislider - 14.1.1 - 12/15/2019 */.noUi-target,.noUi-target *{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-ms-touch-action:none;touch-action:none;-ms-user-select:none;-moz-user-select:none;user-select:none;-moz-box-sizing:border-box;box-sizing:border-box}.noUi-target{position:relative}.noUi-base,.noUi-connects{width:100%;height:100%;position:relative;z-index:1}.noUi-connects{overflow:hidden;z-index:0}.noUi-connect,.noUi-origin{will-change:transform;position:absolute;z-index:1;top:0;right:0;-ms-transform-origin:0 0;-webkit-transform-origin:0 0;-webkit-transform-style:preserve-3d;transform-origin:0 0;transform-style:flat}.noUi-connect{height:100%;width:100%}.noUi-origin{height:10%;width:10%}.noUi-txt-dir-rtl.noUi-horizontal .noUi-origin{left:0;right:auto}.noUi-vertical .noUi-origin{width:0}.noUi-horizontal .noUi-origin{height:0}.noUi-handle{-webkit-backface-visibility:hidden;backface-visibility:hidden;position:absolute}.noUi-touch-area{height:100%;width:100%}.noUi-state-tap .noUi-connect,.noUi-state-tap .noUi-origin{-webkit-transition:transform .3s;transition:transform .3s}.noUi-state-drag *{cursor:inherit!important}.noUi-horizontal{height:18px}.noUi-horizontal .noUi-handle{width:34px;height:28px;right:-17px;top:-6px}.noUi-vertical{width:18px}.noUi-vertical .noUi-handle{width:28px;height:34px;right:-6px;top:-17px}.noUi-txt-dir-rtl.noUi-horizontal .noUi-handle{left:-17px;right:auto}.noUi-target{background:#fafafa;border-radius:4px;border:1px solid #d3d3d3;box-shadow:inset 0 1px 1px #f0f0f0,0 3px 6px -5px #bbb}.noUi-connects{border-radius:3px}.noUi-connect{background:#3fb8af}.noUi-draggable{cursor:ew-resize}.noUi-vertical .noUi-draggable{cursor:ns-resize}.noUi-handle{border:1px solid #d9d9d9;border-radius:3px;background:#fff;cursor:default;box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ebebeb,0 3px 6px -3px #bbb}.noUi-active{box-shadow:inset 0 0 1px #fff,inset 0 1px 7px #ddd,0 3px 6px -3px #bbb}.noUi-handle:after,.noUi-handle:before{content:"";display:block;position:absolute;height:14px;width:1px;background:#e8e7e6;left:14px;top:6px}.noUi-handle:after{left:17px}.noUi-vertical .noUi-handle:after,.noUi-vertical .noUi-handle:before{width:14px;height:1px;left:6px;top:14px}.noUi-vertical .noUi-handle:after{top:17px}[disabled] .noUi-connect{background:#b8b8b8}[disabled] .noUi-handle,[disabled].noUi-handle,[disabled].noUi-target{cursor:not-allowed}.noUi-pips,.noUi-pips *{-moz-box-sizing:border-box;box-sizing:border-box}.noUi-pips{position:absolute;color:#999}.noUi-value{position:absolute;white-space:nowrap;text-align:center}.noUi-value-sub{color:#ccc;font-size:10px}.noUi-marker{position:absolute;background:#ccc}.noUi-marker-sub{background:#aaa}.noUi-marker-large{background:#aaa}.noUi-pips-horizontal{padding:10px 0;height:80px;top:100%;left:0;width:100%}.noUi-value-horizontal{-webkit-transform:translate(-50%,50%);transform:translate(-50%,50%)}.noUi-rtl .noUi-value-horizontal{-webkit-transform:translate(50%,50%);transform:translate(50%,50%)}.noUi-marker-horizontal.noUi-marker{margin-left:-1px;width:2px;height:5px}.noUi-marker-horizontal.noUi-marker-sub{height:10px}.noUi-marker-horizontal.noUi-marker-large{height:15px}.noUi-pips-vertical{padding:0 10px;height:100%;top:0;left:100%}.noUi-value-vertical{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);padding-left:25px}.noUi-rtl .noUi-value-vertical{-webkit-transform:translate(0,50%);transform:translate(0,50%)}.noUi-marker-vertical.noUi-marker{width:5px;height:2px;margin-top:-1px}.noUi-marker-vertical.noUi-marker-sub{width:10px}.noUi-marker-vertical.noUi-marker-large{width:15px}.noUi-tooltip{display:block;position:absolute;border:1px solid #d9d9d9;border-radius:3px;background:#fff;color:#000;padding:5px;text-align:center;white-space:nowrap}.noUi-horizontal .noUi-tooltip{-webkit-transform:translate(-50%,0);transform:translate(-50%,0);left:50%;bottom:120%}.noUi-vertical .noUi-tooltip{-webkit-transform:translate(0,-50%);transform:translate(0,-50%);top:50%;right:120%}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(56,103,206,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;background-color:#3867ce}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{transition:none}}.scielo__theme--dark .form-range::-webkit-slider-thumb{background-color:#86acff}.scielo__theme--light .form-range::-webkit-slider-thumb{background-color:#3867ce}.form-range::-webkit-slider-thumb:active{background-color:#3867ce}.scielo__theme--dark .form-range::-webkit-slider-thumb:active{background-color:#86acff}.scielo__theme--light .form-range::-webkit-slider-thumb:active{background-color:#3867ce}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;border-color:transparent;border-radius:1rem;background-color:#ccc}.scielo__theme--dark .form-range::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.3)}.scielo__theme--light .form-range::-webkit-slider-runnable-track{background-color:#ccc}.form-range::-moz-range-thumb{width:1rem;height:1rem;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none;background-color:#3867ce}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{transition:none}}.scielo__theme--dark .form-range::-moz-range-thumb{background-color:#86acff}.scielo__theme--light .form-range::-moz-range-thumb{background-color:#3867ce}.form-range::-moz-range-thumb:active{background-color:#3867ce}.scielo__theme--dark .form-range::-moz-range-thumb:active{background-color:#86acff}.scielo__theme--light .form-range::-moz-range-thumb:active{background-color:#3867ce}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:rgba(0,0,0,.3);border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#ccc}.scielo__theme--dark .form-range:disabled::-webkit-slider-thumb{background-color:#717171}.scielo__theme--light .form-range:disabled::-webkit-slider-thumb{background-color:#ccc}.form-range:disabled::-moz-range-thumb{background-color:#ccc}.scielo__theme--dark .form-range:disabled::-moz-range-thumb{background-color:#717171}.scielo__theme--light .form-range:disabled::-moz-range-thumb{background-color:#ccc}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>li::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:rgba(0,0,0,.7);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;text-decoration:none;background-color:#f7f6f4}.scielo__theme--dark .list-group-item-action:focus,.scielo__theme--dark .list-group-item-action:hover{background-color:#414141}.scielo__theme--light .list-group-item-action:focus,.scielo__theme--light .list-group-item-action:hover{background-color:#f7f6f4}.list-group-item-action:active{color:#393939;background-color:#efeeec}.list-group-item{position:relative;display:block;padding:.5rem 1rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:rgba(0,0,0,.6);pointer-events:none;background-color:#fff}.list-group-item:hover{background-color:#f7f6f4;text-decoration:none}.scielo__theme--dark .list-group-item:hover{background-color:#414141}.scielo__theme--light .list-group-item:hover{background-color:#f7f6f4}.list-group-item.active{z-index:2;color:#fff;background-color:#3867ce;border-color:#3867ce}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#223e7c;background-color:#d7e1f5}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#223e7c;background-color:#c2cbdd}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#223e7c;border-color:#223e7c}.list-group-item-secondary{color:#666;background-color:#fff}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#666;background-color:#e6e6e6}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#666;border-color:#666}.list-group-item-success{color:#1a5e29;background-color:#d5ebda}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#1a5e29;background-color:#c0d4c4}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#1a5e29;border-color:#1a5e29}.list-group-item-info{color:#145965;background-color:#d3eaee}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#145965;background-color:#bed3d6}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#145965;border-color:#145965}.list-group-item-warning{color:#6d4c00;background-color:#f0e5cc}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#6d4c00;background-color:#d8ceb8}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#6d4c00;border-color:#6d4c00}.list-group-item-danger{color:#720;background-color:#f4d7cc}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#720;background-color:#dcc2b8}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#720;border-color:#720}.list-group-item-light{color:#636262;background-color:#fdfdfd}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636262;background-color:#e4e4e4}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636262;border-color:#636262}.list-group-item-dark{color:#222;background-color:#d7d7d7}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#222;background-color:#c2c2c2}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#222;border-color:#222}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;background-clip:padding-box;border:1px solid rgba(0,0,0,.4);appearance:none;background-color:#fff;color:#393939;border-color:#ccc;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.scielo__theme--light .form-control{background-color:#fff;color:#333;border-color:#ccc}.scielo__theme--dark .form-control{background-color:#333;color:#c4c4c4;border-color:rgba(255,255,255,.3)}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{outline:0;background-color:#fff;color:#393939;border-color:rgba(56,103,206,.6);box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.scielo__theme--light .form-control:focus{background-color:#fff;color:#333;border-color:rgba(56,103,206,.6)}.scielo__theme--dark .form-control:focus{background-color:#333;color:#c4c4c4;border-color:rgba(134,172,255,.6)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::placeholder{color:rgba(0,0,0,.6);opacity:1}.scielo__theme--dark .form-control::placeholder{color:#adadad}.scielo__theme--light .form-control::placeholder{color:#6c6b6b}.form-control:disabled,.form-control[readonly]{opacity:1;pointer-events:auto;cursor:not-allowed;background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.scielo__theme--dark .form-control:disabled,.scielo__theme--dark .form-control[readonly]{background-color:#414141;border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.2)}.scielo__theme--light .form-control:disabled,.scielo__theme--light .form-control[readonly]{background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.form-control:disabled::placeholder,.form-control[readonly]::placeholder{color:rgba(0,0,0,.1)}.scielo__theme--dark .form-control:disabled::placeholder,.scielo__theme--dark .form-control[readonly]::placeholder{color:rgba(255,255,255,.2)}.scielo__theme--light .form-control:disabled::placeholder,.scielo__theme--light .form-control[readonly]::placeholder{color:rgba(0,0,0,.1)}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;height:48px;background-color:#efeeec;color:#333;border-color:#ccc}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.scielo__theme--light .form-control::file-selector-button{background-color:#efeeec;color:#333;border-color:#ccc}.scielo__theme--dark .form-control::file-selector-button{background-color:#414141;color:#c4c4c4;border-color:rgba(255,255,255,.3)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e3e2e0}.scielo__theme--dark .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#3b3b3b}.scielo__theme--light .form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e3e2e0}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:#393939;background-color:#efeeec;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:all .8s}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#d9d9d9}.scielo__theme--dark .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dcdcdc;color:#333}.scielo__theme--light .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#d9d9d9;color:#333}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0;color:#6c6b6b;outline:0}.scielo__theme--dark .form-control-plaintext{color:#adadad}.scielo__theme--light .form-control-plaintext{color:#6c6b6b}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px);height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{max-width:3rem;height:auto;padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{height:1.5em;border-radius:.25rem}.form-control-color::-webkit-color-swatch{height:1.5em;border-radius:.25rem}.form-select{display:block;width:100%;padding:.375rem 1rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid rgba(0,0,0,.4);border-radius:.25rem;appearance:none;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#fff;color:#393939;border-color:#ccc}.scielo__theme--light .form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23414141' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#fff;color:#333;border-color:#ccc}.scielo__theme--dark .form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23C4C4C4' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#333;color:#c4c4c4;border-color:rgba(255,255,255,.3)}.form-select:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25);border-color:rgba(56,103,206,.6)}.scielo__theme--dark .form-select:focus{border-color:rgba(134,172,255,.6)}.scielo__theme--light .form-select:focus{border-color:rgba(56,103,206,.6)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{pointer-events:auto;cursor:not-allowed;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280, 0, 0, 0.1%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.scielo__theme--dark .form-select:disabled{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255, 255, 255, 0.2%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#414141;border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.2)}.scielo__theme--light .form-select:disabled{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280, 0, 0, 0.1%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-color:#efeeec;border-color:rgba(0,0,0,.1);color:rgba(0,0,0,.1)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #393939}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-repeat:no-repeat;background-position:center;background-size:contain;appearance:none;color-adjust:exact;transition:background-color .15s ease-in-out,background-position .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;border-color:#ccc;background-color:#fff}@media (prefers-reduced-motion:reduce){.form-check-input{transition:none}}.scielo__theme--dark .form-check-input{border-color:rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .form-check-input{border-color:#ccc;background-color:#fff}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{outline:0;box-shadow:0 0 0 .25rem rgba(56,103,206,.25);border-color:#ccc}.scielo__theme--dark .form-check-input:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .form-check-input:focus{border-color:#ccc}.form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.scielo__theme--dark .form-check-input:checked{background-color:#86acff;border-color:#86acff}.scielo__theme--light .form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.scielo__theme--dark .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.scielo__theme--light .form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.scielo__theme--dark .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23333'/%3e%3c/svg%3e")}.scielo__theme--light .form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#3867ce;border-color:#3867ce;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.scielo__theme--dark .form-check-input[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23333' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.scielo__theme--light .form-check-input[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{opacity:.5}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e");background-color:#fff;border-color:#ccc}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.scielo__theme--dark .form-switch .form-check-input{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.3%29'/%3e%3c/svg%3e");background-color:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .form-switch .form-check-input{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e");background-color:#fff;border-color:#ccc}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e")}.scielo__theme--dark .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.3%29'/%3e%3c/svg%3e")}.scielo__theme--light .form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ccc'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-color:#3867ce;border-color:#3867ce;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.scielo__theme--dark .form-switch .form-check-input:checked{background-color:#86acff;border-color:#86acff}.scielo__theme--light .form-switch .form-check-input:checked{background-color:#3867ce;border-color:#3867ce}.scielo__theme--dark .form-switch .form-check-input:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23333'/%3e%3c/svg%3e")}.scielo__theme--light .form-switch .form-check-input:checked{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.scielo__form-file{position:relative;height:3rem;overflow:hidden}.scielo__form-file input{-webkit-appearance:none;appearance:none;position:absolute;transform:translateY(-500%);top:0;width:auto}.scielo__form-file:after{content:b3__ico--char(attach_file);position:absolute;top:50%;right:.75rem;transform:translateY(-50%);font-family:b3-icons;color:#fff;font-size:1.5rem;pointer-events:none}.scielo__theme--light .scielo__form-file:after{color:#fff}.scielo__theme--dark .scielo__form-file:after{color:#eee}.scielo__form-file label{height:3rem;left:0;width:100%;top:0;transform:translateY(0);padding:0 3rem 0 .75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;border-bottom:1px solid rgba(56,103,206,.25);line-height:3rem;pointer-events:all}.scielo__form-file.has-placeholder:not(.small)>label,.scielo__form-file.has-value:not(.small)>label,.scielo__form-file.is-focused:not(.small)>label{font-weight:400;font-size:1rem;line-height:1.2em;line-height:3rem;top:0;color:#333}.scielo__theme--dark .scielo__form-file.has-placeholder:not(.small)>label,.scielo__theme--dark .scielo__form-file.has-value:not(.small)>label,.scielo__theme--dark .scielo__form-file.is-focused:not(.small)>label{color:#c4c4c4}.scielo__theme--light .scielo__form-file.has-placeholder:not(.small)>label,.scielo__theme--light .scielo__form-file.has-value:not(.small)>label,.scielo__theme--light .scielo__form-file.is-focused:not(.small)>label{color:#333}.input-group{border-radius:3px;flex-flow:row nowrap;height:3rem}.input-group.is-search{border-radius:3rem}.input-group-text{border-radius:3px;font-weight:400;font-size:1rem;line-height:1.2em;padding-top:0;padding-bottom:0;color:#333;background-color:#efeeec;border-color:#ccc;color:#333}.scielo__theme--dark .input-group-text{color:#c4c4c4}.scielo__theme--light .input-group-text{color:#333}.scielo__theme--dark .input-group-text{background-color:#414141;border-color:rgba(255,255,255,.3);color:#c4c4c4}.scielo__theme--light .input-group-text{background-color:#efeeec;border-color:#ccc;color:#333}.input-group-text span[class^=b3__ico--]{font-size:1.5rem}.input-group-text .scielo__form-checkbox~label,.input-group-text .scielo__form-radio~label{margin-left:0;margin-right:0}.input-group .scielo__form-control input,.input-group .scielo__form-control label,.input-group .scielo__form-control select,.input-group .scielo__form-control textarea,.input-group .scielo__form-file input,.input-group .scielo__form-file label,.input-group .scielo__form-file select,.input-group .scielo__form-file textarea,.input-group .scielo__form-select input,.input-group .scielo__form-select label,.input-group .scielo__form-select select,.input-group .scielo__form-select textarea{border-bottom:none}.input-group .scielo__form-control:first-child,.input-group .scielo__form-file:first-child,.input-group .scielo__form-select:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.input-group .scielo__form-control:last-child,.input-group .scielo__form-file:last-child,.input-group .scielo__form-select:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.input-group .scielo__form-control,.input-group .scielo__form-file,.input-group .scielo__form-select{flex:1 1 auto}.input-group .btn{margin-bottom:0;padding:.75rem 1.2rem;border-radius:.25rem;line-height:1.5rem;height:3rem;padding-left:1.5rem;padding-right:1.5rem}.input-group .btn.dropdown-toggle:not(.dropdown-toggle-split){padding-right:2.5rem}.input-group .btn.dropdown-toggle:after{right:.9375rem;width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.12 .5rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:1.75rem}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */.picker__frame,.picker__holder{top:0;bottom:0;left:0;right:0;-ms-transform:translateY(100%);transform:translateY(100%)}.picker__holder{position:fixed;transition:background .15s ease-out,transform 0s .15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;max-width:666px;width:100%;-moz-opacity:0;opacity:0;transition:all .15s ease-out}@media (min-height:33.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height:40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height:33.875em){.picker__wrap{display:block}}.picker__box{background:#fff;display:table-cell;vertical-align:middle}@media (min-height:26.5em){.picker__box{font-size:1.25em}}@media (min-height:33.875em){.picker__box{display:block;font-size:1.33em;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}}@media (min-height:40.125em){.picker__box{font-size:1.5em;border-bottom-width:1px;border-radius:5px}}.picker--opened .picker__holder{-ms-transform:translateY(0);transform:translateY(0);background:0 0;zoom:1;background:rgba(0,0,0,.32);transition:background .15s ease-out}.picker--opened .picker__frame{-ms-transform:translateY(0);transform:translateY(0);-moz-opacity:1;opacity:1}@media (min-height:33.875em){.picker--opened .picker__frame{top:auto;bottom:0}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{font-weight:500;display:inline-block;margin-left:.25em;margin-right:.25em}.picker__year{color:#999;font-size:.8em;font-style:italic}.picker__select--month,.picker__select--year{border:1px solid #b7b7b7;height:2em;padding:.5em;margin-left:.25em;margin-right:.25em}@media (min-width:24.5em){.picker__select--month,.picker__select--year{margin-top:-.5em}}.picker__select--month{width:35%}.picker__select--year{width:22.5%}.picker__select--month:focus,.picker__select--year:focus{border-color:#0089ec}.picker__nav--next,.picker__nav--prev{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-.25em}@media (min-width:24.5em){.picker__nav--next,.picker__nav--prev{top:-.33em}}.picker__nav--prev{left:-1em;padding-right:1.25em}@media (min-width:24.5em){.picker__nav--prev{padding-right:1.5em}}.picker__nav--next{right:-1em;padding-left:1.25em}@media (min-width:24.5em){.picker__nav--next{padding-left:1.5em}}.picker__nav--next:before,.picker__nav--prev:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #000}.picker__nav--next:hover,.picker__nav--prev:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__nav--disabled,.picker__nav--disabled:before,.picker__nav--disabled:before:hover,.picker__nav--disabled:hover{cursor:default;background:0 0;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:inherit;width:100%;margin-top:.75em;margin-bottom:.5em}@media (min-height:33.875em){.picker__table{margin-bottom:.75em}}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999;font-weight:500}@media (min-height:33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day{padding:.3125em 0;font-weight:200;border:1px solid transparent}.picker__day--today{position:relative}.picker__day--today:before{content:" ";position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker__day--disabled:before{border-top-color:#aaa}.picker__day--outfocus{color:#ddd}.picker__day--infocus:hover,.picker__day--outfocus:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker__day--highlighted{border-color:#0089ec}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover{cursor:pointer;color:#000;background:#b1dcfb}.picker--focused .picker__day--selected,.picker__day--selected,.picker__day--selected:hover{background:#0089ec;color:#fff}.picker--focused .picker__day--disabled,.picker__day--disabled,.picker__day--disabled:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__footer{text-align:center}.picker__button--clear,.picker__button--close,.picker__button--today{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{cursor:pointer;color:#000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--clear:focus,.picker__button--close:focus,.picker__button--today:focus{background:#b1dcfb;border-color:#0089ec;outline:0}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{position:relative;display:inline-block;height:0}.picker__button--clear:before,.picker__button--today:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}.picker--opened .picker__holder{background:rgba(0,0,0,.8)}.picker__box{padding:.625rem 1.0625rem;border:0;box-shadow:none;border-radius:6px}.picker__nav--next,.picker__nav--prev{color:#fff}.picker__nav--next:before,.picker__nav--prev:before{font-family:b3-icons;position:absolute;border:0;font-size:1.5rem}.picker__nav--next:hover,.picker__nav--prev:hover{background:0 0}.picker__nav--next:hover:before,.picker__nav--prev:hover:before{color:rgba(56,103,206,.25)}.picker__nav--prev:before{content:b3__ico--char(keyboard_arrow_left)}.picker__nav--next:before{content:b3__ico--char(keyboard_arrow_right)}.picker__weekday{width:auto;color:#333;font-weight:400;font-size:1rem;line-height:1.2em}.picker__header{margin-top:0;padding-top:.3125rem}.picker__header,.picker__year{font-size:1.03125rem;letter-spacing:0}.picker__year{color:#333;font-style:normal}.picker__day,.picker__day--infocus,.picker__day--outfocus,.picker__day--today{padding:0;margin:0 auto;border-radius:99px;width:1.875rem;height:1.875rem;text-align:center;line-height:1.75rem;font-size:.84375rem;color:#3867ce;font-weight:400;background:0 0;border:2px solid transparent}.picker__day--today:before{display:none}.picker__day--infocus:hover,.picker__day--outfocus:hover{color:#3867ce;background:rgba(0,176,230,.08);border-color:rgba(0,176,230,0)}.picker__day--outfocus{color:rgba(0,0,0,.1)}.picker--focused .picker__day--highlighted,.picker__day--highlighted:hover{color:#333;border-color:rgba(56,103,206,.25);background:0 0}.picker__button--clear,.picker__button--close,.picker__button--today{padding:0;text-transform:uppercase;border:0;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.picker__button--clear:before,.picker__button--close:before,.picker__button--today:before{display:none}.picker__button--clear:hover,.picker__button--close:hover,.picker__button--today:hover{background:0 0;border:none;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap}.picker__button--clear{color:#00314c}.picker__button--clear:hover{color:#333}.picker__button--close{color:#c63800}.picker__button--close:hover{color:#ff7e4a}.picker__button--today{color:#3867ce}.picker__button--today:hover{color:rgba(56,103,206,.25)}.scielo__menu{position:relative;display:inline-block;width:40px;height:20px;margin:5px 0;margin-left:8px;z-index:100;outline:0;-webkit-animation-fill-mode:both;-moz-animation-fill-mode:both;-ms-animation-fill-mode:both;-o-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;-moz-animation-duration:.2s;-ms-animation-duration:.2s;-o-animation-duration:.2s;animation-duration:.2s;-o-transition:all .2s ease-out,text-indent .2s ease-out;-ms-transition:all .2s ease-out,text-indent .2s ease-out;-moz-transition:all .2s ease-out,text-indent .2s ease-out;-webkit-transition:all .2s ease-out,text-indent .2s ease-out;transition:all .2s ease-out,text-indent .2s ease-out}.scielo__menu:active,.scielo__menu:focus{outline:0}.scielo__menu .material-icons-outlined{color:#333}.scielo__theme--dark .scielo__menu .material-icons-outlined{color:#c4c4c4}.scielo__theme--light .scielo__menu .material-icons-outlined{color:#333}.scielo__menu.opened{margin-left:270px}.scielo__mainMenu{position:absolute;top:-1000px;z-index:99;width:300px;background:#fff;border:1px solid #ccc;border-top:0;border-radius:4px;border-top-left-radius:0;border-top-right-radius:0;padding:35px 20px 0 20px;padding:0;box-shadow:0 0 7px rgba(0,0,0,.1);font-size:.85em}.scielo__theme--dark .scielo__mainMenu{background:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__mainMenu{background:#fff;border-color:#ccc}.scielo__mainMenu .logo-svg{background:url(../img/logo-scielo-no-label.svg);background-position:center center;background-repeat:no-repeat;display:block;width:100px;height:100px}.scielo__theme--dark .scielo__mainMenu .logo-svg{background-image:url(../img/logo-scielo-no-label-negative.svg)}.scielo__theme--light .scielo__mainMenu .logo-svg{background-image:url(../img/logo-scielo-no-label.svg)}.scielo__mainMenu ul{margin:0;padding:0}.scielo__mainMenu li{list-style:none;border-bottom:1px dotted #6c6b6b;padding-bottom:7px}.scielo__theme--dark .scielo__mainMenu li{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__mainMenu li{border-color:#ccc}.scielo__mainMenu li:last-child{border-bottom:0}.scielo__mainMenu li a,.scielo__mainMenu li strong{display:block;color:#00314c;text-decoration:none}.scielo__theme--dark .scielo__mainMenu li a,.scielo__theme--dark .scielo__mainMenu li strong{color:#eee}.scielo__theme--light .scielo__mainMenu li a,.scielo__theme--light .scielo__mainMenu li strong{color:#00314c}.scielo__mainMenu li a:hover,.scielo__mainMenu li strong:hover{color:#3867ce}.scielo__theme--dark .scielo__mainMenu li a:hover,.scielo__theme--dark .scielo__mainMenu li strong:hover{color:#86acff}.scielo__theme--light .scielo__mainMenu li a:hover,.scielo__theme--light .scielo__mainMenu li strong:hover{color:#3867ce}.scielo__mainMenu li a{padding:.4rem 1rem}.scielo__mainMenu li a:hover{background-color:#f7f6f4}.scielo__mainMenu li li{background:0 0;padding-bottom:0;border-bottom:0}.scielo-ico-menu{display:inline-block}.scielo-ico-menu-opened{display:none}.page-item{background:0 0;border-color:rgba(0,0,0,.3)}.page-item.active .page-link{background:0 0;border-color:#3867ce;background-color:#3867ce;color:#fff;font-weight:400}.scielo__theme--dark .page-item.active .page-link{background-color:#86acff;border-color:#86acff;color:#eee}.scielo__theme--light .page-item.active .page-link{border-color:#3867ce;background-color:#3867ce;color:#fff}.page-item.disabled .page-link{background:0 0;color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .page-item.disabled .page-link{color:rgba(255,255,255,.2);border-color:rgba(255,255,255,.2)}.scielo__theme--light .page-item.disabled .page-link{color:rgba(0,0,0,.1);border-color:rgba(0,0,0,.1)}.page-item .material-icons,.page-item .material-icons-outlined{font-size:1rem;line-height:1.2em}.page-link{background:0 0;font-weight:400;font-size:1rem;line-height:1.2em;height:2rem;text-align:center;border-color:#ccc;transition:all .2s;color:#3867ce;font-weight:400}.scielo__theme--dark .page-link{color:#86acff;border-color:rgba(255,255,255,.3);font-weight:400}.scielo__theme--light .page-link{color:#3867ce;border-color:#ccc;font-weight:400}.page-link:hover{background:#f7f6f4;color:#3867ce;border-color:#ccc}.scielo__theme--dark .page-link:hover{background:#414141;color:#86acff;border-color:rgba(255,255,255,.3)}.scielo__theme--light .page-link:hover{background:#f7f6f4;color:#3867ce;border-color:#ccc}.scielo__ico:before{content:'';position:absolute;font-size:1.5rem;line-height:1.5rem}.scielo__ico--first_page:before{font-family:'Material Icons Outlined';content:"first_page";color:inherit}.scielo__ico--last_page:before{font-family:'Material Icons Outlined';content:"last_page";color:inherit}.scielo__ico--navigate_before:before{font-family:'Material Icons Outlined';content:"navigate_before";color:inherit}.scielo__ico--navigate_next:before{font-family:'Material Icons Outlined';content:"navigate_next";color:inherit}.breadcrumb{background:#efeeec;padding:1.125rem;border-radius:.25rem}.scielo__theme--dark .breadcrumb{background:#414141}.scielo__theme--light .breadcrumb{background:#efeeec}.breadcrumb li a{font-weight:400!important}.breadcrumb li.breadcrumb-item+.breadcrumb-item:before{color:rgba(0,0,0,.1)}.scielo__theme--dark .breadcrumb li.breadcrumb-item+.breadcrumb-item:before{color:rgba(255,255,255,.2)}.scielo__theme--light .breadcrumb li.breadcrumb-item+.breadcrumb-item:before{color:rgba(0,0,0,.1)}.breadcrumb li.active{color:#6c6b6b}.scielo__theme--dark .breadcrumb li.active{color:#adadad}.scielo__theme--light .breadcrumb li.active{color:#6c6b6b}.dropdown-divider{border-color:#ccc}.scielo__theme--dark .dropdown-divider{border-color:rgba(255,255,255,.3)}.scielo__theme--light .dropdown-divider{border-color:#ccc}.dropdown-menu{background:#fff;border-color:#ccc}.scielo__theme--dark .dropdown-menu{background:#333;border-color:rgba(255,255,255,.3)}.scielo__theme--light .dropdown-menu{background:#fff;border-color:#ccc}.dropdown-item{white-space:normal;color:#333}.dropdown-item:hover{color:#333;background:#f7f6f4}.scielo__theme--dark .dropdown-item{white-space:normal;color:#c4c4c4}.scielo__theme--dark .dropdown-item:hover{color:#c4c4c4;background:#414141}.scielo__theme--light .dropdown-item{white-space:normal;color:#333}.scielo__theme--light .dropdown-item:hover{color:#333;background:#f7f6f4}footer{border-top:0!important;margin:0;padding-top:.75rem;padding-bottom:3rem}footer section{border-top:1px dashed #ccc}.scielo__theme--dark footer section{border-color:rgba(255,255,255,.3)}.scielo__theme--light footer section{border-color:#ccc}footer section:first-child{border-top:0}footer .col{padding:15px 0}footer p{margin:0}footer .address-scielo{background-color:#f7f6f4}.scielo__theme--dark footer .address-scielo{background-color:#393939}.scielo__theme--light footer .address-scielo{background-color:#f7f6f4}footer .address-scielo .col{border:0}@media (max-width:575.98px){footer .address-scielo .col{padding-left:8px;padding-right:8px}footer .address-scielo .col:first-child{padding-bottom:0}footer .address-scielo .col:last-child{padding-top:0}}footer .partners{padding:16px 0}footer .partners a{margin:10px}@media (max-width:575.98px){footer .partners img{margin:8px 0}}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:1rem 1.25rem;font-size:1rem;color:#333;text-align:left;background-color:transparent;border:0;border-radius:0;overflow-anchor:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,border-radius .15s ease}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.scielo__theme--dark .accordion-button{color:#c4c4c4}.scielo__theme--light .accordion-button{color:#333}.accordion-button:not(.collapsed){color:#333;background-color:transparent;box-shadow:none;border-bottom:3px solid #3867ce}.scielo__theme--dark .accordion-button:not(.collapsed){color:#c4c4c4;background-color:transparent;border-bottom:3px solid #86acff}.scielo__theme--light .accordion-button:not(.collapsed){color:#333;background-color:transparent;border-bottom:3px solid #3867ce}.accordion-button:not(.collapsed)::after{background-image:none;transform:rotate(90deg);color:#3867ce}.scielo__theme--dark .accordion-button:not(.collapsed)::after{color:#86acff}.scielo__theme--light .accordion-button:not(.collapsed)::after{color:#3867ce}.accordion-button::after{flex-shrink:0;width:1.25rem;height:1.25rem;margin-left:auto;font-family:'Material Icons Outlined';content:"arrow_forward_ios";background-image:none;background-repeat:no-repeat;background-size:1.25rem;transition:transform .2s ease-in-out;text-align:center;line-height:1.25rem}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:#3867ce;outline:0;box-shadow:none}.accordion-header{margin-bottom:0}.accordion-item{margin-bottom:-1px;background-color:transparent;border:1px solid #ccc}.scielo__theme--dark .accordion-item{border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .accordion-item{border:1px solid #ccc}.accordion-item:first-of-type{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.accordion-item:first-of-type .accordion-button{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.accordion-item:last-of-type{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.accordion-body{padding:1rem 1.25rem;background:#f7f6f4;color:#333}.scielo__theme--dark .accordion-body{color:#c4c4c4;background:#414141}.scielo__theme--light .accordion-body{color:#333;background:#f7f6f4}.accordion-flush{border:1px solid #ccc;border-radius:.25rem}.scielo__theme--dark .accordion-flush{border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .accordion-flush{border:1px solid #ccc}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.alert{padding:.75rem 3.75rem .75rem 1.5rem;border-radius:.1875rem;border:2px solid #86acff;background:#fff;color:#00314c}.scielo__theme--dark .alert{background:#333;color:#eee}.scielo__theme--light .alert{background:#fff;color:#00314c}.alert hr{border-top-color:#efeeec}.scielo__theme--dark .alert hr{border-top-color:#414141}.scielo__theme--light .alert hr{border-top-color:#efeeec}.alert-danger,.alert-info,.alert-success,.alert-warning{padding-left:3.75rem;position:relative}.alert-danger:before,.alert-info:before,.alert-success:before,.alert-warning:before{content:'';position:absolute;top:.75rem;left:1.5rem;font-family:'Material Icons Outlined';font-size:1.5rem;line-height:1.5rem}.alert-primary{color:#fff;background:#3867ce;border-color:#3867ce}.alert-primary .alert-heading,.alert-primary .alert-link{color:#fff!important}.alert-primary a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-primary{color:#333;background:#86acff;border-color:#86acff}.scielo__theme--dark .alert-primary .alert-heading,.scielo__theme--dark .alert-primary .alert-link{color:#333!important}.scielo__theme--light .alert-primary{color:#fff;background:#3867ce;border-color:#3867ce}.scielo__theme--light .alert-primary .alert-heading,.scielo__theme--light .alert-primary .alert-link{color:#fff!important}.alert-secondary{color:#fff;background:#fff;border-color:#fff;color:#333;background:#fff;border-color:rgba(0,0,0,.3)}.alert-secondary .alert-heading,.alert-secondary .alert-link{color:#fff!important}.alert-secondary a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-secondary{color:#333;background:#c4c4c4;border-color:#c4c4c4}.scielo__theme--dark .alert-secondary .alert-heading,.scielo__theme--dark .alert-secondary .alert-link{color:#333!important}.scielo__theme--light .alert-secondary{color:#fff;background:#fff;border-color:#fff}.scielo__theme--light .alert-secondary .alert-heading,.scielo__theme--light .alert-secondary .alert-link{color:#fff!important}.alert-secondary .alert-heading,.alert-secondary .alert-link{color:#333!important}.scielo__theme--dark .alert-secondary{color:#c4c4c4;background:0 0;border-color:#c4c4c4}.scielo__theme--dark .alert-secondary .alert-heading,.scielo__theme--dark .alert-secondary .alert-link{color:#c4c4c4!important}.scielo__theme--light .alert-secondary{color:#333;background:#fff;border-color:rgba(0,0,0,.3)}.scielo__theme--light .alert-secondary .alert-heading,.scielo__theme--light .alert-secondary .alert-link{color:#333!important}.alert-info{color:#fff;background:#2195a9;border-color:#2195a9}.alert-info:before{content:"info";color:inherit}.alert-info .alert-heading,.alert-info .alert-link{color:#fff!important}.alert-info a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-info{color:#333;background:#2299ad;border-color:#2299ad}.scielo__theme--dark .alert-info .alert-heading,.scielo__theme--dark .alert-info .alert-link{color:#333!important}.scielo__theme--light .alert-info{color:#fff;background:#2195a9;border-color:#2195a9}.scielo__theme--light .alert-info .alert-heading,.scielo__theme--light .alert-info .alert-link{color:#fff!important}.alert-dark{color:#fff;background:#3867ce;border-color:#3867ce}.alert-dark .alert-heading,.alert-dark .alert-link{color:#fff!important}.alert-dark a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-dark{color:#333;background:#86acff;border-color:#86acff}.scielo__theme--dark .alert-dark .alert-heading,.scielo__theme--dark .alert-dark .alert-link{color:#333!important}.scielo__theme--light .alert-dark{color:#fff;background:#3867ce;border-color:#3867ce}.scielo__theme--light .alert-dark .alert-heading,.scielo__theme--light .alert-dark .alert-link{color:#fff!important}.alert-success{color:#fff;background:#2c9d45;border-color:#2c9d45}.alert-success:before{content:"check_circle";color:inherit}.alert-success .alert-heading,.alert-success .alert-link{color:#fff!important}.alert-success a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-success{color:#333;background:#2c9d45;border-color:#2c9d45}.scielo__theme--dark .alert-success .alert-heading,.scielo__theme--dark .alert-success .alert-link{color:#333!important}.scielo__theme--light .alert-success{color:#fff;background:#2c9d45;border-color:#2c9d45}.scielo__theme--light .alert-success .alert-heading,.scielo__theme--light .alert-success .alert-link{color:#fff!important}.alert-danger{color:#fff;background:#c63800;border-color:#c63800}.alert-danger:before{content:"report_problem";color:inherit}.alert-danger .alert-heading,.alert-danger .alert-link{color:#fff!important}.alert-danger a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-danger{color:#333;background:#ff7e4a;border-color:#ff7e4a}.scielo__theme--dark .alert-danger .alert-heading,.scielo__theme--dark .alert-danger .alert-link{color:#333!important}.scielo__theme--light .alert-danger{color:#fff;background:#c63800;border-color:#c63800}.scielo__theme--light .alert-danger .alert-heading,.scielo__theme--light .alert-danger .alert-link{color:#fff!important}.alert-warning{color:#fff;background:#b67f00;border-color:#b67f00}.alert-warning:before{content:"report_problem";color:inherit}.alert-warning .alert-heading,.alert-warning .alert-link{color:#fff!important}.alert-warning a{color:#fff;text-decoration:underline}.scielo__theme--dark .alert-warning{color:#333;background:#b67f00;border-color:#b67f00}.scielo__theme--dark .alert-warning .alert-heading,.scielo__theme--dark .alert-warning .alert-link{color:#333!important}.scielo__theme--light .alert-warning{color:#fff;background:#b67f00;border-color:#b67f00}.scielo__theme--light .alert-warning .alert-heading,.scielo__theme--light .alert-warning .alert-link{color:#fff!important}.alert-link{color:#3867ce!important}.scielo__theme--dark .alert-link{color:#86acff!important}.scielo__theme--light .alert-link{color:#3867ce!important}.alert-dismissible{padding-right:3.75rem}.alert-dismissible .close{padding:.5625rem .75rem;font-size:1.5rem;line-height:1.5rem;color:inherit;top:0;right:0;opacity:.5;position:absolute;right:0;border:0;background:0 0}.alert-dismissible .close:before{font-family:'Material Icons Outlined';content:"close";color:inherit}.alert-dismissible .close:hover{opacity:1}.alert.text-center{border-radius:0}.alert.text-center:before{position:static;display:block}@media (min-width:992px){.alert.text-center:before{display:inline-block;vertical-align:bottom}}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid #ccc;border-radius:.25rem}.scielo__theme--dark .card{border:1px solid rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .card{border:1px solid #ccc;background-color:#fff}.card .list-group-item{background-color:#fff;border-color:#ccc}.scielo__theme--dark .card .list-group-item{border-color:rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .card .list-group-item{border-color:#ccc;background-color:#fff}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:1rem 1rem;color:#333}.scielo__theme--dark .card-body{color:#c4c4c4}.scielo__theme--light .card-body{color:#333}.card-title{margin-bottom:.5rem}.card-subtitle{margin-top:-.25rem;margin-bottom:0;font-weight:700;text-transform:uppercase;color:#6c6b6b;font-size:.75rem}.scielo__theme--dark .card-subtitle{color:#adadad}.scielo__theme--light .card-subtitle{color:#6c6b6b}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1rem}.card-header{padding:.5rem 1rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.5rem 1rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.5rem;margin-bottom:-.5rem;margin-left:-.5rem;border-bottom:0}.card-header-pills{margin-right:-.5rem;margin-left:-.5rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-group>.card{margin-bottom:.5rem}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1060;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;outline:0}.scielo__theme--dark .modal-content{border:1px solid rgba(255,255,255,.3);background-color:#333}.scielo__theme--light .modal-content{border:1px solid #ccc;background-color:#fff}.modal-backdrop{position:fixed;top:0;left:0;z-index:1050;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;flex-shrink:0;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px);border-bottom:1px solid #ccc}.scielo__theme--dark .modal-header{border-bottom:1px solid rgba(255,255,255,.3)}.scielo__theme--light .modal-header{border-bottom:1px solid #ccc}.modal-header .btn-close{padding:.5rem .5rem;margin:-2px -.5rem -.5rem auto;background-image:none;font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0;text-align:center;position:relative}.modal-header .btn-close:before{font-family:'Material Icons Outlined';content:"close";color:#333;line-height:1.8;position:absolute;top:0;left:0;text-align:center;width:100%}.scielo__theme--dark .modal-header .btn-close:before{color:#c4c4c4}.scielo__theme--light .modal-header .btn-close:before{color:#333}.modal-title{margin-bottom:0;line-height:1.5}.modal-title [class*=" material-icons"],.modal-title [class^=material-icons]{vertical-align:bottom}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;flex-shrink:0;align-items:center;justify-content:flex-end;padding:.75rem;border-bottom-right-radius:calc(.5rem - 1px);border-bottom-left-radius:calc(.5rem - 1px);border-top:1px solid #ccc}.scielo__theme--dark .modal-footer{border-top:1px solid rgba(255,255,255,.3)}.scielo__theme--light .modal-footer{border-top:1px solid #ccc}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{height:calc(100% - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}.modal-fullscreen .modal-footer{border-radius:0}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.modal-fullscreen-sm-down .modal-footer{border-radius:0}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.modal-fullscreen-md-down .modal-footer{border-radius:0}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.modal-fullscreen-lg-down .modal-footer{border-radius:0}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.modal-fullscreen-xl-down .modal-footer{border-radius:0}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.modal-fullscreen-xxl-down .modal-footer{border-radius:0}}.table{--scielo-table-bg:transparent;--scielo-table-striped-color:#393939;--scielo-table-striped-bg:rgba(0, 0, 0, 0.05);--scielo-table-active-color:#393939;--scielo-table-active-bg:rgba(0, 0, 0, 0.1);--scielo-table-hover-color:#393939;--scielo-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:#333;vertical-align:top;border-color:#ccc}.scielo__theme--dark .table{color:#c4c4c4;border-color:rgba(255,255,255,.3)}.scielo__theme--light .table{color:#333;border-color:#ccc}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--scielo-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--scielo-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table>thead th{border-bottom:2px solid #ccc}.scielo__theme--dark .table>thead th{border-bottom:2px solid rgba(255,255,255,.3)}.scielo__theme--light .table>thead th{border-bottom:2px solid #ccc}.table>:not(:last-child)>:last-child>*{border-bottom-color:#ccc}.scielo__theme--dark .table>:not(:last-child)>:last-child>*{border-bottom-color:rgba(255,255,255,.3)}.scielo__theme--light .table>:not(:last-child)>:last-child>*{border-bottom-color:#ccc}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-striped>tbody>tr:nth-of-type(odd){--scielo-table-accent-bg:var(--scielo-table-striped-bg);color:#333}.scielo__theme--dark .table-striped>tbody>tr:nth-of-type(odd){color:#c4c4c4}.scielo__theme--light .table-striped>tbody>tr:nth-of-type(odd){color:#333}.table-active{--scielo-table-accent-bg:var(--scielo-table-active-bg);color:#333}.scielo__theme--dark .table-active{color:#c4c4c4}.scielo__theme--light .table-active{color:#333}.table-hover>tbody>tr:hover{--scielo-table-accent-bg:var(--scielo-table-hover-bg);color:#333}.scielo__theme--dark .table-hover>tbody>tr:hover{color:#c4c4c4}.scielo__theme--light .table-hover>tbody>tr:hover{color:#333}.table-primary{--scielo-table-bg:rgba(56, 103, 206, 0.7);--scielo-table-striped-bg:rgba(51, 94, 188, 0.715);--scielo-table-striped-color:#fff;--scielo-table-active-bg:rgba(46, 85, 171, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(49, 90, 179, 0.7225);--scielo-table-hover-color:#fff;color:#000}.table-secondary{--scielo-table-bg:rgba(255, 255, 255, 0.5);--scielo-table-striped-bg:rgba(220, 220, 220, 0.525);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(191, 191, 191, 0.55);--scielo-table-active-color:#000;--scielo-table-hover-bg:rgba(205, 205, 205, 0.5375);--scielo-table-hover-color:#000;color:#000}.table-success{--scielo-table-bg:rgba(44, 157, 69, 0.7);--scielo-table-striped-bg:rgba(40, 143, 63, 0.715);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(36, 130, 57, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(38, 136, 60, 0.7225);--scielo-table-hover-color:#000;color:#000}.table-info{--scielo-table-bg:rgba(33, 149, 169, 0.7);--scielo-table-striped-bg:rgba(30, 136, 154, 0.715);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(27, 124, 140, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(29, 130, 147, 0.7225);--scielo-table-hover-color:#fff;color:#000}.table-warning{--scielo-table-bg:rgba(182, 127, 0, 0.7);--scielo-table-striped-bg:rgba(166, 116, 0, 0.715);--scielo-table-striped-color:#000;--scielo-table-active-bg:rgba(151, 105, 0, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(158, 110, 0, 0.7225);--scielo-table-hover-color:#000;color:#000}.table-danger{--scielo-table-bg:rgba(198, 56, 0, 0.7);--scielo-table-striped-bg:rgba(180, 51, 0, 0.715);--scielo-table-striped-color:#fff;--scielo-table-active-bg:rgba(164, 46, 0, 0.73);--scielo-table-active-color:#fff;--scielo-table-hover-bg:rgba(172, 49, 0, 0.7225);--scielo-table-hover-color:#fff;color:#000}.table-light{--scielo-table-bg:#F7F6F4;--scielo-table-striped-bg:#ebeae8;--scielo-table-striped-color:#000;--scielo-table-active-bg:#dedddc;--scielo-table-active-color:#000;--scielo-table-hover-bg:#e4e4e2;--scielo-table-hover-color:#000;color:#000}.table-dark{--scielo-table-bg:#393939;--scielo-table-striped-bg:#434343;--scielo-table-striped-color:#fff;--scielo-table-active-bg:#4d4d4d;--scielo-table-active-color:#fff;--scielo-table-hover-bg:#484848;--scielo-table-hover-color:#fff;color:#fff}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.table table{min-width:100%}.nav:not(.flex-column).nav-tabs{border:none;background:0 0;margin-bottom:.75rem;border-bottom:1px solid #ccc}.scielo__theme--dark .nav:not(.flex-column).nav-tabs{border-color:rgba(255,255,255,.3)}.scielo__theme--light .nav:not(.flex-column).nav-tabs{border-color:#ccc}@media screen and (max-width:575px){.nav:not(.flex-column).nav-tabs{display:block;white-space:nowrap;overflow-x:auto;overflow-y:hidden}.nav:not(.flex-column).nav-tabs>li{float:none;display:inline-block}}.nav:not(.flex-column).nav-tabs .nav-link{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;line-height:1.875rem;color:#333;border-radius:0;border-top-left-radius:.1875rem;border-top-right-radius:.1875rem;border-width:0;padding:.5625rem 1.5rem;position:relative;transition:.2s all}.nav:not(.flex-column).nav-tabs .nav-link:before{content:'';position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;border-bottom:3px solid rgba(56,103,206,.25);transition:.2s all}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link{color:#c4c4c4}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link{color:#333}.nav:not(.flex-column).nav-tabs .nav-link.active{border:none;background:0 0;color:#00314c}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link.active{color:#eee}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link.active{color:#00314c}.nav:not(.flex-column).nav-tabs .nav-link.active:before{left:50%;width:100%;border-color:#3867ce}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link.active:before{border-color:#86acff}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link.active:before{border-color:#3867ce}.nav:not(.flex-column).nav-tabs .nav-link.disabled{color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link.disabled{color:rgba(255,255,255,.2)}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link.disabled{color:rgba(0,0,0,.1)}.nav:not(.flex-column).nav-tabs .nav-link.dropdown-toggle{position:relative;padding-right:2.25rem!important}.nav:not(.flex-column).nav-tabs .nav-link.dropdown-toggle:after{position:absolute;top:50%;transform:translateY(-50%);font-family:'Material Icons Outlined';content:"arrow_drop_down";color:inherit;border:0;line-height:1.5rem!important;text-align:center;right:1rem;width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem;border:none!important;margin-top:0!important;width:1.5rem!important;height:1.5rem!important;transform:translateY(-50%)}.nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):focus,.nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):focus,.scielo__theme--dark .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):hover{background:#414141;color:#eee}.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):focus,.scielo__theme--light .nav:not(.flex-column).nav-tabs .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.nav:not(.flex-column).nav-tabs .dropdown-menu{background:#fff;border:1px solid #ccc;border-radius:3px}.nav:not(.flex-column).nav-tabs .dropdown-menu>a{position:relative;font-weight:700;font-size:1;line-height:1.2em;letter-spacing:0;padding:.75rem 1.5rem .75rem;line-height:1.5rem;transition:all .5s;border-radius:.1875rem;background:0 0;color:#fff;font-weight:400;font-size:1rem;line-height:1.2em;color:#333!important}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#eee}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#fff}.nav:not(.flex-column).nav-tabs .dropdown-menu>a:hover:hover{background:#f7f6f4;color:#333}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu>a:hover:hover{background:#414141;color:#c4c4c4}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu>a:hover:hover{background:#f7f6f4;color:#333}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#c4c4c4!important}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu>a{color:#333!important}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu{background:#333;border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu{background:#fff;border:1px solid #ccc}.nav:not(.flex-column).nav-tabs .dropdown-menu .dropdown-divider{border-color:#ccc}.scielo__theme--dark .nav:not(.flex-column).nav-tabs .dropdown-menu .dropdown-divider{border-color:rgba(255,255,255,.3)}.scielo__theme--light .nav:not(.flex-column).nav-tabs .dropdown-menu .dropdown-divider{border-color:#ccc}.nav.nav-pills .nav-link{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;line-height:1.875rem;color:#333;border-radius:.1875rem;border-width:0;padding:.5625rem 1.5rem;position:relative;transition:.2s all}.scielo__theme--dark .nav.nav-pills .nav-link{color:#c4c4c4}.scielo__theme--light .nav.nav-pills .nav-link{color:#333}.nav.nav-pills .nav-link.active{border:none;background:#3867ce;color:#fff}.scielo__theme--dark .nav.nav-pills .nav-link.active{background:#86acff;color:#333}.scielo__theme--light .nav.nav-pills .nav-link.active{background:#3867ce;color:#fff}.nav.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .nav.nav-pills .nav-link.disabled{color:rgba(255,255,255,.2)}.scielo__theme--light .nav.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1)}.nav.nav-pills .nav-link:not(.disabled):focus:not(.active),.nav.nav-pills .nav-link:not(.disabled):hover:not(.active){background:#f7f6f4;color:#00314c}.scielo__theme--dark .nav.nav-pills .nav-link:not(.disabled):focus:not(.active),.scielo__theme--dark .nav.nav-pills .nav-link:not(.disabled):hover:not(.active){background:#414141;color:#eee}.scielo__theme--light .nav.nav-pills .nav-link:not(.disabled):focus:not(.active),.scielo__theme--light .nav.nav-pills .nav-link:not(.disabled):hover:not(.active){background:#f7f6f4;color:#00314c}.nav.flex-column.nav-pills .nav-link{font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;background:0 0;line-height:1.875rem;color:#333;border-radius:.1875rem;border-left:3px solid transparent;border-top-left-radius:0;border-bottom-left-radius:0;padding:.5625rem 1.5rem}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link{color:#c4c4c4}.scielo__theme--light .nav.flex-column.nav-pills .nav-link{color:#333}.nav.flex-column.nav-pills .nav-link.active{background:0 0;border-color:#3867ce;color:#00314c}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link.active{border-color:#86acff;color:#eee}.scielo__theme--light .nav.flex-column.nav-pills .nav-link.active{border-color:#3867ce;color:#00314c}.nav.flex-column.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1);cursor:not-allowed}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link.disabled{color:rgba(255,255,255,.2)}.scielo__theme--light .nav.flex-column.nav-pills .nav-link.disabled{color:rgba(0,0,0,.1)}.nav.flex-column.nav-pills .nav-link:not(.disabled):focus,.nav.flex-column.nav-pills .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.scielo__theme--dark .nav.flex-column.nav-pills .nav-link:not(.disabled):focus,.scielo__theme--dark .nav.flex-column.nav-pills .nav-link:not(.disabled):hover{background:#414141;color:#eee}.scielo__theme--light .nav.flex-column.nav-pills .nav-link:not(.disabled):focus,.scielo__theme--light .nav.flex-column.nav-pills .nav-link:not(.disabled):hover{background:#f7f6f4;color:#00314c}.tab-pane{padding:.75rem 0}.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;overflow:hidden;display:block;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;left:0;top:0;display:flex;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{content:"";display:table}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{float:left;height:100%;min-height:1px;margin:0 10px;display:none}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}.slick-next,.slick-prev{position:relative;display:inline-block;padding:.625rem 1rem;border-radius:.25rem;line-height:1.25rem;height:2.5rem;font-weight:400!important;font-size:1rem;letter-spacing:.1px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-position:center;transition:all .8s;margin:0 0 1rem;background-color:#fff;border:1px solid #ccc;color:#333;position:absolute;display:block;height:40px;width:30px;line-height:0;font-size:0;cursor:pointer;top:50%;-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%);padding:0}.slick-next:focus,.slick-prev:focus{box-shadow:0 0 0 .125rem rgba(56,103,206,.25);outline:0}.slick-next:focus:active,.slick-prev:focus:active{box-shadow:0 0 0 .25rem rgba(56,103,206,.25)}.slick-next:focus,.slick-prev:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.slick-next:focus:active,.slick-prev:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.slick-next:focus,.slick-prev:focus{background-color:#fff;color:#333}.slick-next.active:not(:disabled):not(.disabled),.slick-prev.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.slick-next.dropdown-toggle,.show>.slick-prev.dropdown-toggle{background-color:#d9d9d9;color:#333}.slick-next:hover:not(:disabled):not(.disabled),.slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.slick-next:active:not(:disabled):not(.disabled),.slick-prev:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.slick-next:hover:not(:disabled):not(.disabled),.slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.slick-next:active:not(:disabled):not(.disabled),.slick-prev:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.slick-next:focus,.slick-prev:focus{border-color:#ccc}.scielo__theme--dark .slick-next,.scielo__theme--dark .slick-prev{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .slick-next:focus,.scielo__theme--dark .slick-prev:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .slick-next.active:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--dark .slick-prev:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .slick-next:focus,.scielo__theme--dark .slick-prev:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .slick-next,.scielo__theme--light .slick-prev{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .slick-next:focus,.scielo__theme--light .slick-prev:focus{background-color:#fff;color:#333}.scielo__theme--light .slick-next.active:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .slick-next:hover:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .slick-next:active:not(:disabled):not(.disabled),.scielo__theme--light .slick-prev:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .slick-next:focus,.scielo__theme--light .slick-prev:focus{border-color:#ccc}.slick-next:focus,.slick-next:hover,.slick-prev:focus,.slick-prev:hover{outline:0}.slick-next:focus:before,.slick-next:hover:before,.slick-prev:focus:before,.slick-prev:hover:before{opacity:1}.slick-next.slick-disabled:before,.slick-prev.slick-disabled:before{opacity:.25}.slick-next:before,.slick-prev:before{font-family:"Material Icons Outlined";font-size:20px;line-height:1;opacity:.75;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-prev{left:-25px}@media (max-width:575.98px){.slick-prev{left:0;z-index:1}}[dir=rtl] .slick-prev{left:auto;right:-25px}.slick-prev:before{content:"navigate_before"}[dir=rtl] .slick-prev:before{content:"navigate_next"}.slick-next{right:-25px}@media (max-width:575.98px){.slick-next{right:0;z-index:1}}[dir=rtl] .slick-next{left:-25px;right:auto}.slick-next:before{content:"navigate_next"}[dir=rtl] .slick-next:before{content:"navigate_before"}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{position:absolute;bottom:-32px;list-style:none;display:block;text-align:center;padding:0;margin:0;width:100%}@media (max-width:575.98px){.slick-dots{display:flex}}.slick-dots li{position:relative;display:inline-block;height:16px;width:16px;margin:0 5px;padding:0;cursor:pointer}@media (max-width:575.98px){.slick-dots li{flex:1;height:4px}}.slick-dots li button{background:0 0;border:2px solid #6c6b6b;border-radius:100px;display:block;height:16px;width:16px;outline:0;line-height:0;font-size:0;color:transparent;padding:0;cursor:pointer}@media (max-width:575.98px){.slick-dots li button{background:rgba(108,107,107,.2);border:0;width:100%;height:4px;border-radius:0}}.scielo__theme--dark .slick-dots li button{background:rgba(173,173,173,.2)}.scielo__theme--light .slick-dots li button{background:rgba(108,107,107,.2)}.slick-dots li button:focus,.slick-dots li button:hover{outline:0}.slick-dots li button:focus:before,.slick-dots li button:hover:before{opacity:1}.slick-dots li.slick-active button{background:#6c6b6b}.scielo__theme--dark .slick-dots li.slick-active button{background:#adadad}.scielo__theme--light .slick-dots li.slick-active button{background:#6c6b6b}.scielo__language{text-align:right}@media (min-width:576px){.scielo__language{position:static;display:inline-block;float:right}}.scielo__levelMenu{background:#f7f6f4;padding:1.125rem}.scielo__theme--dark .scielo__levelMenu{background:#393939}.scielo__theme--light .scielo__levelMenu{background:#f7f6f4}.scielo__levelMenu>.container{margin:0!important}.scielo__levelMenu>.container [class^=col]{text-align:center;border-right:1px dashed #ccc;line-height:3.75rem}.scielo__theme--dark .scielo__levelMenu>.container [class^=col]{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__levelMenu>.container [class^=col]{border-color:#ccc}.scielo__levelMenu>.container [class^=col]:last-of-type{border:0}@media (max-width:575.98px){.scielo__levelMenu>.container [class^=col]{border:0}.scielo__levelMenu>.container [class^=col]:first-of-type{border-right:1px dashed #ccc}.scielo__theme--dark .scielo__levelMenu>.container [class^=col]:first-of-type{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__levelMenu>.container [class^=col]:first-of-type{border-color:#ccc}.scielo__levelMenu>.container [class^=col]:last-of-type{margin-top:1rem}}.scielo__levelMenu a{text-decoration:none;font-weight:700}section.scielo__search-articles{background:#f7f6f4;padding:1.125rem}.scielo__theme--dark section.scielo__search-articles{background:#393939}.scielo__theme--light section.scielo__search-articles{background:#f7f6f4}@media (max-width:991.98px){section.scielo__search-articles .input-group{flex-flow:column;height:auto;background:0 0}section.scielo__search-articles .input-group .form-control,section.scielo__search-articles .input-group .form-select{width:100%;margin:0 0 .5rem!important;border-radius:.25rem!important}section.scielo__search-articles .input-group .form-control:last-child,section.scielo__search-articles .input-group .form-select:last-child{margin:0}}section.scielo__search-articles .input-group .input-group-append .form-select{min-width:180px}section.scielo__search-articles .input-group .input-group-preppend .form-select{min-width:120px}.scielo__contribGroup{color:#403d39;margin:15px 10%;font-size:1.1em;text-align:center;opacity:1}.scielo__contribGroup a.btn-fechar{display:inline-block;border-radius:100%;cursor:pointer;width:30px;height:30px;font-size:86%;padding:5px 0;text-align:center;margin-top:10px;font-family:'Material Icons Outlined';content:"close"}.scielo__contribGroup a.btn-fechar:hover{background:#3867ce;color:#fff}.scielo__contribGroup .sci-ico-emailOutlined{font-size:20px;vertical-align:baseline}.scielo__contribGroup .dropdown{display:inline-block;padding:0}.scielo__contribGroup .dropdown .dropdown-toggle{background:0 0;border:1px solid transparent;padding:.625rem;height:auto;outline:0;margin-bottom:0;color:#3867ce}.scielo__contribGroup .dropdown .dropdown-toggle:hover{border:1px solid transparent;color:#254895;background:0 0!important}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-toggle{border:1px solid transparent;color:#86acff}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-toggle:hover{border:1px solid transparent;color:#d3e0ff}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-toggle{border:1px solid transparent;color:#3867ce}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-toggle:hover{border:1px solid transparent;color:#254895}.scielo__contribGroup .dropdown .dropdown-toggle:focus{box-shadow:none;background:0 0;border:1px solid #ccc}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-toggle:focus{box-shadow:none;background:0 0;border:1px solid rgba(255,255,255,.3)}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-toggle:focus{box-shadow:none;background:0 0;border:1px solid #ccc}@media (max-width:575.98px){.scielo__contribGroup .dropdown .dropdown-toggle{max-width:300px!important;white-space:inherit;height:auto}}.scielo__contribGroup .dropdown .dropdown-toggle:after{display:none}.scielo__contribGroup .dropdown .dropdown-menu{padding:10px 20px;text-align:left;border-radius:4px}.scielo__contribGroup .dropdown .dropdown-menu.show{color:#333;padding-left:.75rem}.scielo__theme--dark .scielo__contribGroup .dropdown .dropdown-menu.show{color:#c4c4c4}.scielo__theme--light .scielo__contribGroup .dropdown .dropdown-menu.show{color:#333}.scielo__contribGroup .dropdown .dropdown-menu strong{display:inline-block;margin:20px 0 8px 0;font-size:11px;color:#00314c;text-transform:uppercase}.scielo__contribGroup .dropdown a{cursor:pointer}.scielo__contribGroup .dropdown a span{display:inline-block;padding:5px 0}.scielo__contribGroup .dropdown.open{background:#3867ce;border-radius:4px}.scielo__contribGroup .dropdown.open a{color:#fff}.scielo__contribGroup .outlineFadeLink{background-color:#fff;border:1px solid #ccc;color:#333;margin:0 0 0 .625rem}.scielo__contribGroup .outlineFadeLink:focus{box-shadow:0 0 0 .125rem rgba(204,204,204,.25);outline:0}.scielo__contribGroup .outlineFadeLink:focus:active{box-shadow:0 0 0 .25rem rgba(204,204,204,.25)}.scielo__contribGroup .outlineFadeLink:focus{background-color:#fff;color:#333}.scielo__contribGroup .outlineFadeLink.active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#d9d9d9;color:#333}.show>.scielo__contribGroup .outlineFadeLink.dropdown-toggle{background-color:#d9d9d9;color:#333}.scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__contribGroup .outlineFadeLink:focus{border-color:#ccc}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink{background-color:#c4c4c4;border:1px solid rgba(255,255,255,.3);color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:focus{background-color:#c4c4c4;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink.active:not(:disabled):not(.disabled){background-color:#a7a7a7;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background:#dcdcdc radial-gradient(circle,transparent 1%,#dcdcdc 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #dcdcdc;background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid rgba(255,255,255,.3);background-color:#f9f9f9;background-size:100%;transition:background 0s;color:#333}.scielo__theme--dark .scielo__contribGroup .outlineFadeLink:focus{border-color:rgba(255,255,255,.3)}.scielo__theme--light .scielo__contribGroup .outlineFadeLink{background-color:#fff;border-color:1px solid #ccc;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:focus{background-color:#fff;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink.active:not(:disabled):not(.disabled){background-color:#fff;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background:#d9d9d9 radial-gradient(circle,transparent 1%,#d9d9d9 1%) center/15000%;color:#333;text-decoration:none}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #d9d9d9;background-color:#1a1a1a;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:hover:not(:disabled):not(.disabled){border:1px solid #ccc;background:hoverBgColor radial-gradient(circle,transparent 1%,hoverBgColor 1%) center/15000%;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:active:not(:disabled):not(.disabled){border:1px solid #ccc;background-color:gray;background-size:100%;transition:background 0s;color:#333}.scielo__theme--light .scielo__contribGroup .outlineFadeLink:focus{border-color:#ccc}@media (max-width:575.98px){.scielo__contribGroup .outlineFadeLink{margin:.5rem 0}}.btnContribLinks{display:inline-block;margin-top:4px;background-image:url(../img/logo-orcid.svg);background-repeat:no-repeat;background-size:1.5em auto;background-position:.5em center;padding:.5em .5em .5em 2.5em;border-radius:4px;border:1px solid #3867ce}.scielo__theme--dark .btnContribLinks{border:1px solid #86acff}.scielo__theme--light .btnContribLinks{border:1px solid #3867ce}.ModalDefault .btnContribLinks{padding:.5em .5em .5em 2.5em!important}.btnContribLinks:hover{border-color:#254895}.scielo__theme--dark .btnContribLinks:hover{border-color:#d3e0ff}.scielo__theme--light .btnContribLinks:hover{border-color:#254895}.linkGroup{position:relative;font-size:.85em}.linkGroup a.selected{position:relative}.linkGroup a.selected:after{content:'';display:block;position:absolute;bottom:-16px;left:4px;width:16px;height:7px;background:url(../img/articleContent-arrow.png) bottom center no-repeat;z-index:999}.btn-open{display:inline-block;margin:0 .625rem;transition:all .4s}@media (max-width:575.98px){.btn-open{display:block;margin:.25rem auto}}.badge{border-radius:1.5rem;font-size:.625rem;line-height:1.375rem;padding:0 .4375rem;height:1.625rem;min-width:1.625rem;letter-spacing:.5px;display:inline-block;vertical-align:text-top;border:2px solid #fff;text-align:center;text-transform:uppercase;color:#fff;background:#fff;color:#333}.scielo__theme--dark .badge{border-color:#333}.scielo__theme--light .badge{border-color:#fff}.scielo__theme--dark .badge{background-color:#c4c4c4;color:#eee}.scielo__theme--light .badge{background-color:#fff;color:#333}.badge-light,.badge-primary{background:#3867ce;color:#fff}.scielo__theme--dark .badge-light,.scielo__theme--dark .badge-primary{background-color:#86acff;color:#eee}.scielo__theme--light .badge-light,.scielo__theme--light .badge-primary{background-color:#3867ce;color:#fff}.badge-secondary{background:#fff;color:#333}.scielo__theme--dark .badge-secondary{background-color:#c4c4c4;color:#eee}.scielo__theme--light .badge-secondary{background-color:#fff;color:#333}.badge-info{background:#2195a9;color:#fff}.scielo__theme--dark .badge-info{background-color:#2299ad;color:#eee}.scielo__theme--light .badge-info{background-color:#2195a9;color:#fff}.badge-dark{background:#fff;color:#333}.scielo__theme--dark .badge-dark{background-color:#c4c4c4;color:#eee}.scielo__theme--light .badge-dark{background-color:#fff;color:#333}.badge-success{background:#2c9d45;color:#fff}.scielo__theme--dark .badge-success{background-color:#2c9d45;color:#eee}.scielo__theme--light .badge-success{background-color:#2c9d45;color:#fff}.badge-danger{background:#c63800;color:#fff}.scielo__theme--dark .badge-danger{background-color:#ff7e4a;color:#eee}.scielo__theme--light .badge-danger{background-color:#c63800;color:#fff}.badge-warning{background:#b67f00;color:#fff}.scielo__theme--dark .badge-warning{background-color:#b67f00;color:#eee}.scielo__theme--light .badge-warning{background-color:#b67f00;color:#fff}.display-1 .badge,.display-2 .badge,.display-3 .badge,.display-4 .badge,.h1 .badge,.h1 .badge .h2 .badge,.h2 .badge,.h3 .badge,.h4 .badge,.h5 .badge,.h6 .badge,.lead,h1 .badge,h2 .badge,h3 .badge,h4 .badge,h5 .badge,h6 .badge{margin-left:-.6em}.btn+.badge{vertical-align:text-bottom;margin:0 0 1.5rem -1.3125rem;position:relative;z-index:2}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.progress{height:.1875rem;border-radius:.25rem;font-weight:700;font-size:.75rem;line-height:1.2em;letter-spacing:.06px;color:rgba(0,0,0,.1);overflow:visible;height:1.75rem;position:relative;background-color:#efeeec}.scielo__theme--dark .progress{background-color:#414141}.scielo__theme--light .progress{background-color:#efeeec}.progress-bar{position:relative;height:1.75rem;border-radius:.25rem;color:#fff}.progress-bar~.progress-bar{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-.4375rem}.scielo__theme--dark .progress-bar{background-color:#86acff!important}.scielo__theme--light .progress-bar{background-color:#3867ce!important}.scielo__theme--dark .progress-bar.bg-primary{background-color:#86acff!important}.scielo__theme--light .progress-bar.bg-primary{background-color:#3867ce!important}.scielo__theme--dark .progress-bar.bg-info{background-color:#2299ad!important}.scielo__theme--light .progress-bar.bg-info{background-color:#2195a9!important}.scielo__theme--dark .progress-bar.bg-success{background-color:#2c9d45!important}.scielo__theme--light .progress-bar.bg-success{background-color:#2c9d45!important}.scielo__theme--dark .progress-bar.bg-warning{background-color:#b67f00!important}.scielo__theme--light .progress-bar.bg-warning{background-color:#b67f00!important}.scielo__theme--dark .progress-bar.bg-danger{background-color:#ff7e4a!important}.scielo__theme--light .progress-bar.bg-danger{background-color:#c63800!important}.img-thumbnail{display:inline-block;background:0 0;border:none;border-radius:.1875rem;padding:0;overflow:hidden}.tooltip-inner{font-size:.75rem;border-radius:.1875rem;padding:.375rem .75rem;background:#333;color:#fff}.scielo__theme--dark .tooltip-inner{background:#fff;color:#333}.scielo__theme--light .tooltip-inner{background:#333;color:#fff}.tooltip.show{opacity:1}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{border-top-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-top .tooltip-arrow::before{border-top-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-top .tooltip-arrow::before{border-top-color:#333}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{border-right-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-end .tooltip-arrow::before{border-right-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-end .tooltip-arrow::before{border-right-color:#333}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{border-bottom-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-bottom .tooltip-arrow::before{border-bottom-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-bottom .tooltip-arrow::before{border-bottom-color:#333}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{border-left-color:#333}.scielo__theme--dark .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.scielo__theme--dark .bs-tooltip-start .tooltip-arrow::before{border-left-color:#fff}.scielo__theme--light .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.scielo__theme--light .bs-tooltip-start .tooltip-arrow::before{border-left-color:#333}.scielo__loading-block{display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:6.25rem;height:6.25rem;opacity:0;transition:opacity .5s linear;transition-delay:.5s;z-index:1050}.scielo__loading-backdrop{transition:opacity .5s linear;opacity:0;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:1040}.scielo__loading-backdrop--dark{background:#da202c}.scielo__loading-backdrop--light{background:#fff}.scielo__loading-visible .scielo__loading-backdrop,.scielo__loading-visible .scielo__loading-block{opacity:1}.scielo__loading-hide .scielo__loading-backdrop{transition-delay:.7s}.scielo__loading-hide .scielo__loading-block{transition-delay:0}.scielo__loading-inline{position:relative;display:inline-block;width:1.25rem;height:1.25rem}.scielo__loading-inline:before{content:'';box-sizing:border-box;position:absolute;top:50%;left:50%;border-radius:50%;border:2px solid rgba(0,176,230,.2);border-top-color:#fff;animation:spinner .8s linear infinite;width:1.25rem;height:1.25rem;margin-top:-.625rem;margin-left:-.625rem}.scielo__theme--dark .scielo__loading-inline:before{border-color:rgba(0,176,230,.6);border-top-color:#eee}.scielo__theme--light .scielo__loading-inline:before{border-color:rgba(0,176,230,.2);border-top-color:#fff}[class*=b3__btn-with-icon] .scielo__loading-inline:before{border-color:#414141;border-top-color:#fff}.scielo__theme--dark [class*=b3__btn-with-icon] .scielo__loading-inline:before{border-color:#414141;border-top-color:#fff}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before{padding-left:2rem}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before [class^=material-icons]:before{vertical-align:top}[class*=b3__btn-with-icon--left] .scielo__loading-inline:before [class^=material-icons]{left:.5rem}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before{padding-right:2rem}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before [class^=material-icons]:before{vertical-align:top}[class*=b3__btn-with-icon--right] .scielo__loading-inline:before [class^=material-icons]{right:.5rem}.btn-group-lg>.btn .scielo__loading-inline,.btn-lg .scielo__loading-inline{width:1.5rem;height:1.5rem}.btn-group-lg>.btn .scielo__loading-inline:before,.btn-lg .scielo__loading-inline:before{width:1.5rem;height:1.5rem;margin-top:-.75rem;margin-left:-.75rem}@keyframes spinner{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:top;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:.75s linear infinite spinner-border}.spinner-border-sm{width:1.2em;height:1.2em;border-width:.13em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:.75s linear infinite spinner-grow}.spinner-grow-sm{width:1.2em;height:1.2em}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}[class*=" sci-ico-"],[class^=sci-ico-]{display:inline-block;font-size:24px;height:24px;line-height:1}.article-title [class*=" sci-ico-"],.article-title [class^=sci-ico-]{float:none}.article [class*=" sci-ico-"],.article [class^=sci-ico-]{vertical-align:text-bottom;margin-right:3px}.modal-body [class*=" sci-ico-"],.modal-body [class^=sci-ico-]{margin-right:0}[class*=" sci-ico-"]:before,[class^=sci-ico-]:before{font-family:'Material Icons Outlined';color:inherit}.sci-ico-top:before{content:"vertical_align_top"}.sci-ico-home:before{content:"home"}.sci-ico-zoom:before{content:"zoom_in"}.sci-ico-translation:before{content:"translate"}.sci-ico-socialEmail:before,.sci-ico-socialFacebook:before,.sci-ico-socialGooglePlus:before,.sci-ico-socialOther:before,.sci-ico-socialTwitter:before,.sci-ico-socialTwitterSingle:before{content:"share"}.sci-ico-similar:before{content:"playlist_add"}.sci-ico-newWindow:before{content:"open_in_new"}.sci-ico-metrics:before{content:"show_chart"}.sci-ico-citation:before,.sci-ico-link:before{content:"link"}.sci-ico-home:before{content:"home"}.sci-ico-floatingMenuDefault:before{content:"more_horiz"}.sci-ico-floatingMenuClose:before{content:"close"}.sci-ico-download:before,.sci-ico-fileCSV:before,.sci-ico-fileEPUB:before,.sci-ico-filePDF:before,.sci-ico-fileXML:before{content:"file_download"}.sci-ico-fileTable:before{content:"table_chart"}.sci-ico-fileFormula:before{content:"functions"}.sci-ico-figures:before,.sci-ico-fileFigure:before{content:"image"}.sci-ico-email:before,.sci-ico-emailOutlined:before{content:"email"}.sci-ico-arrowUp:before{content:"keyboard_arrow_up"}.sci-ico-arrowRight:before{content:"keyboard_arrow_right"}.sci-ico-arrowLeft:before{content:"keyboard_arrow_left"}.sci-ico-arrowDown:before{content:"keyboard_arrow_down"}.sci-ico-socialRSS:before{content:"rss_feed"}.sci-ico-pin:before{content:"location_on"}.sci-ico-copy:before{content:"content_copy"}.sci-ico-authorInstruction:before{content:"help_outline"}.sci-ico-about:before{content:"info"}.sci-ico-check:before{content:"check"}.sci-ico-top:before{content:"vertical_align_top"}.sci-ico-cc,.sci-ico-cc-by,.sci-ico-cc-nc,.sci-ico-cc-nd,.sci-ico-cc-sa,.sci-ico-cr,.sci-ico-public-domain{display:none}.scielo__sidenav__bottom-menu{display:none}@media screen and (min-width:768px){.scielo__sidenav__bottom-menu{display:block;position:fixed;transition:.5s all;left:0;bottom:0;width:16.875rem}.scielo__theme--dark .scielo__sidenav__bottom-menu{background:#414141}.scielo__sidenav__bottom-menu ul{width:16.875rem}.scielo__sidenav__bottom-menu .scielo__ico--double_arrow_left:before{transition:.25s all}}@media screen and (min-width:768px){.scielo__sidenav__header{display:grid;grid-template-columns:16.875rem auto;transition:.5s all}}.scielo__sidenav__header .scielo__sidenav__toggle{position:absolute;right:16px;top:50%;transform:translateY(-50%);padding-left:1rem;padding-right:1rem}.scielo__sidenav__header-brand,.scielo__sidenav__header-site{position:relative;padding:.75rem 1rem}.scielo__sidenav__header-brand{line-height:2.25rem;padding-left:1.3125rem}.scielo__sidenav__header-brand .scielo__logo--small{vertical-align:middle}@media screen and (min-width:768px){.scielo__sidenav__header-brand{position:fixed;top:0;z-index:2;transition:.5s all;grid-column:1;width:16.875rem;line-height:3rem}}@media screen and (min-width:768px){.scielo__sidenav__header-site{transition:.5s all;grid-column:2;display:grid;grid-template-columns:35% auto;grid-template-rows:3rem;border-bottom:1px solid #efeeec;padding-left:1.5rem;padding-right:1.5rem}}@media screen and (min-width:992px){.scielo__sidenav__header-site{grid-template-columns:45% auto;padding-left:2rem;padding-right:2rem}}@media screen and (min-width:1200px){.scielo__sidenav__header-site{padding-left:2.5rem;padding-right:2.5rem}}.scielo__sidenav__header-functions{display:grid;grid-template-columns:80% 20%;grid-template-areas:"a b" "c c"}.scielo__sidenav__header-functions .btn{margin-bottom:0}.scielo__sidenav__header-functions .btn+.badge{margin-bottom:.2rem;margin-left:-1.8rem;pointer-events:none}.scielo__sidenav__header-functions .input-group.is-search input{max-width:10.625rem}@media screen and (min-width:768px){.scielo__sidenav__header-functions .input-group.is-search input{max-width:100%}}@media screen and (min-width:768px){.scielo__sidenav__header-functions{grid-column:2;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));grid-gap:.75rem;grid-template-areas:"c b a"}}.scielo__sidenav__header-functions__item{grid-area:a;white-space:nowrap}.scielo__sidenav__header-functions__item--small{grid-area:b;text-align:right;white-space:nowrap}.scielo__sidenav__header-functions__item--large{grid-area:c;white-space:nowrap}.scielo__sidenav__header-title{font-size:1.125rem;color:#c4c4c4;border-bottom:1px solid #414141;padding-bottom:.75rem;margin-bottom:1.5rem;margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media screen and (min-width:768px){.scielo__sidenav__header-title{grid-column:1;margin:0;padding:0;color:#333;font-weight:700;font-size:1.3125rem;line-height:1.25em;letter-spacing:0;font-weight:400;line-height:3rem;border-bottom:none}}@media screen and (min-width:768px){.scielo__sidenav__menu{position:fixed;left:0;top:4.5rem;bottom:3rem;transition:.5s all;overflow-y:auto;overflow-x:hidden;width:16.875rem}.scielo__sidenav__menu ul{width:16.875rem}.scielo__sidenav__menu-item{transition:.25s all;transition-delay:.5s;opacity:1;display:inline-block}}@media screen and (max-width:767px){.scielo__theme--dark .scielo__sidenav{border-bottom:1px solid #393939}}@media screen and (min-width:768px){.scielo__theme--dark .scielo__sidenav__bottom-menu,.scielo__theme--dark .scielo__sidenav__menu{border-right:1px solid #393939}}@media screen and (min-width:768px){.scielo__theme--dark .scielo__sidenav__header-brand,.scielo__theme--dark .scielo__sidenav__header-site{border-bottom:1px solid #393939}}@media screen and (max-width:767px){.scielo__theme--dark .scielo__sidenav__header-title{background:#333;color:#c4c4c4;border-bottom:1px solid #414141;margin-top:-.8rem;padding-top:.8rem}}@media screen and (max-width:767px){.scielo__sidenav+.container{padding-top:5.25rem}}@media screen and (min-width:768px){.scielo__sidenav+.container{transition:.5s all;padding-left:18.375rem;padding-right:1.5rem;max-width:100%!important}}@media screen and (min-width:992px){.scielo__sidenav+.container{padding-left:18.875rem;padding-right:2rem}}@media screen and (min-width:1200px){.scielo__sidenav+.container{padding-left:19.375rem;padding-right:2.5rem}}@media screen and (max-width:767px){.scielo__sidenav{position:fixed;top:0;width:100%;height:3.75rem;overflow:hidden;transition:.5s;z-index:9}.scielo__sidenav--opened{height:100vh;overflow:auto}.scielo__sidenav--opened .scielo__sidenav__toggle-text--closed{display:none}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle{padding:0;width:2rem}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle [class^=material-icons]{position:absolute;top:50%;transform:translateY(-50%);width:1.25rem;height:1.25rem;font-size:1.25rem;line-height:1.25rem}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle [class^=material-icons]:before{vertical-align:top}.scielo__sidenav--opened .scielo__sidenav__header .scielo__sidenav__toggle [class^=material-icons]{top:50%;left:50%;transform:translate(-50%,-50%)}}@media screen and (min-width:768px){.scielo__sidenav--minimized .scielo__sidenav__bottom-menu,.scielo__sidenav--minimized .scielo__sidenav__header-brand,.scielo__sidenav--minimized .scielo__sidenav__menu{overflow-x:hidden;width:4.5rem}.scielo__sidenav--minimized .scielo__sidenav__header{grid-template-columns:4.5rem auto}.scielo__sidenav--minimized .scielo__sidenav__bottom-menu .scielo__ico--double_arrow_left:before{transform:rotate(180deg)}.scielo__sidenav--minimized .scielo__sidenav__menu-item{opacity:0}}@media screen and (min-width:768px) and (min-width:768px){.scielo__sidenav--minimized+.container{padding-left:6rem}}@media screen and (min-width:768px) and (min-width:992px){.scielo__sidenav--minimized+.container{padding-left:6.5rem}}@media screen and (min-width:768px) and (min-width:1200px){.scielo__sidenav--minimized+.container{padding-left:7rem}}.scielo__text-color--light{color:#333!important}.scielo__text-color--dark{color:#c4c4c4!important}.scielo__text-color__emphasis--light{color:#00314c!important}.scielo__text-color__emphasis--dark{color:#eee!important}.scielo__text-color__menu--light{color:#fff!important}.scielo__text-color__menu--dark{color:#eee!important}.scielo__text-color__interaction--light{color:#3867ce!important}.scielo__text-color__interaction--dark{color:#86acff!important}.scielo__text-color__positive--light{color:#2c9d45!important}.scielo__text-color__positive--dark{color:#2c9d45!important}.scielo__text-color__negative--light{color:#c63800!important}.scielo__text-color__negative--dark{color:#ff7e4a!important}.scielo__bg__gray--1{background-color:#f7f6f4!important}.scielo__bg__gray--2{background-color:#efeeec!important}.scielo__bg__white--1{background-color:#393939!important}.scielo__bg__white--2{background-color:#414141!important}.scielo__border-top{border-top:2px solid #fff!important}.scielo__theme--dark .scielo__border-top{border-top-color:#eee!important}.scielo__theme--light .scielo__border-top{border-top-color:#fff!important}.scielo__border-bottom{border-bottom:2px solid #fff!important}.scielo__theme--dark .scielo__border-bottom{border-bottom-color:#eee!important}.scielo__theme--light .scielo__border-bottom{border-bottom-color:#fff!important}.scielo__padding-top{padding-top:1.5rem}.scielo__padding-top--small{padding-top:.75rem}.scielo__padding-top--large{padding-top:3rem}.scielo__padding-top--none{padding-top:0}.scielo__padding-bottom{padding-bottom:1.5rem}.scielo__padding-bottom--small{padding-bottom:.75rem}.scielo__padding-bottom--large{padding-bottom:3rem}.scielo__padding-bottom--none{padding-bottom:0}.scielo__padding-top-bottom{padding-top:1.5rem;padding-bottom:1.5rem}.scielo__padding-top-bottom--small{padding-top:.75rem;padding-bottom:.75rem}.scielo__padding-top-bottom--large{padding-top:3rem;padding-bottom:3rem}.scielo__padding-top-bottom--none{padding-top:0;padding-bottom:0}.scielo__padding-left{padding-left:1.5rem}.scielo__padding-left--small{padding-left:.75rem}.scielo__padding-left--large{padding-left:3rem}.scielo__padding-left--none{padding-left:0}.scielo__padding-right{padding-right:1.5rem}.scielo__padding-right--small{padding-right:.75rem}.scielo__padding-right--large{padding-right:3rem}.scielo__padding-right--none{padding-right:0}.scielo__padding-left-right{padding-left:1.5rem;padding-right:1.5rem}.scielo__padding-left-right--small{padding-left:.75rem;padding-right:.75rem}.scielo__padding-left-right--large{padding-left:3rem;padding-right:3rem}.scielo__padding-left-right--none{padding-left:0;padding-right:0}.scielo__margin-top{margin-top:1.5rem!important}.scielo__margin-top--small{margin-top:.75rem!important}.scielo__margin-top--large{margin-top:3rem!important}.scielo__margin-top--none{margin-top:0}.scielo__margin-bottom{margin-bottom:1.5rem!important}.scielo__margin-bottom--small{margin-bottom:.75rem!important}.scielo__margin-bottom--large{margin-bottom:3rem!important}.scielo__margin-bottom--none{margin-bottom:0}.scielo__margin-top-bottom{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.scielo__margin-top-bottom--small{margin-top:.75rem!important;margin-bottom:.75rem!important}.scielo__margin-top-bottom--large{margin-top:3rem!important;margin-bottom:3rem!important}.scielo__margin-top-bottom--none{margin-top:0!important;margin-bottom:0!important}.scielo__margin-left{margin-left:1.5rem!important}.scielo__margin-left--small{margin-left:.75rem!important}.scielo__margin-left--large{margin-left:3rem!important}.scielo__margin-left--none{margin-left:0!important}.scielo__margin-right{margin-right:1.5rem!important}.scielo__margin-right--small{margin-right:.75rem!important}.scielo__margin-right--large{margin-right:3rem!important}.scielo__margin-right--none{margin-right:0!important}.scielo__margin-left-right{margin-left:1.5rem!important;margin-right:1.5rem!important}.scielo__margin-left-right--small{margin-left:.75rem!important;margin-right:.75rem!important}.scielo__margin-left-right--large{margin-left:3rem!important;margin-right:3rem!important}.scielo__margin-left-right--none{margin-left:0!important;margin-right:0!important} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/core/static/journal_about/css/bootstrap.css.map b/core/static/journal_about/css/bootstrap.css.map new file mode 100644 index 0000000..320ac52 --- /dev/null +++ b/core/static/journal_about/css/bootstrap.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["bootstrap.scss","../../common/scss/_base/_typography.scss","../../common/scss/_objects/_icons.scss","../../common/scss/_mixins/_themeSet.scss","bootstrap.css","../../common/scss/_mixins/_shadow.scss","../../../node_modules/bootstrap/scss/_root.scss","../../../node_modules/bootstrap/scss/_reboot.scss","../../../node_modules/bootstrap/scss/_type.scss","../../../node_modules/bootstrap/scss/_images.scss","../../../node_modules/bootstrap/scss/_containers.scss","../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../node_modules/bootstrap/scss/_grid.scss","../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../node_modules/bootstrap/scss/_tables.scss","../../../node_modules/bootstrap/scss/mixins/_table-variants.scss","../../../node_modules/bootstrap/scss/forms/_labels.scss","../../../node_modules/bootstrap/scss/forms/_form-text.scss","../../../node_modules/bootstrap/scss/forms/_form-control.scss","../../../node_modules/bootstrap/scss/forms/_form-select.scss","../../../node_modules/bootstrap/scss/forms/_form-check.scss","../../../node_modules/bootstrap/scss/forms/_form-range.scss","../../../node_modules/bootstrap/scss/forms/_floating-labels.scss","../../../node_modules/bootstrap/scss/forms/_input-group.scss","../../../node_modules/bootstrap/scss/mixins/_forms.scss","../../../node_modules/bootstrap/scss/_buttons.scss","../../../node_modules/bootstrap/scss/_transitions.scss","../../../node_modules/bootstrap/scss/_dropdown.scss","../../../node_modules/bootstrap/scss/mixins/_caret.scss","../../../node_modules/bootstrap/scss/_button-group.scss","../../../node_modules/bootstrap/scss/_nav.scss","../../../node_modules/bootstrap/scss/_navbar.scss","../../../node_modules/bootstrap/scss/_card.scss","../../../node_modules/bootstrap/scss/_accordion.scss","../../../node_modules/bootstrap/scss/_breadcrumb.scss","../../../node_modules/bootstrap/scss/_pagination.scss","../../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../../node_modules/bootstrap/scss/_badge.scss","../../../node_modules/bootstrap/scss/_alert.scss","../../../node_modules/bootstrap/scss/_progress.scss","../../../node_modules/bootstrap/scss/_list-group.scss","../../../node_modules/bootstrap/scss/mixins/_list-group.scss","../../../node_modules/bootstrap/scss/_close.scss","../../../node_modules/bootstrap/scss/_toasts.scss","../../../node_modules/bootstrap/scss/_modal.scss","../../../node_modules/bootstrap/scss/_tooltip.scss","../../../node_modules/bootstrap/scss/_popover.scss","../../../node_modules/bootstrap/scss/_carousel.scss","../../../node_modules/bootstrap/scss/_spinners.scss","../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../node_modules/bootstrap/scss/helpers/_colored-links.scss","../../../node_modules/bootstrap/scss/helpers/_ratio.scss","../../../node_modules/bootstrap/scss/helpers/_position.scss","../../../node_modules/bootstrap/scss/helpers/_visually-hidden.scss","../../../node_modules/bootstrap/scss/helpers/_stretched-link.scss","../../../node_modules/bootstrap/scss/helpers/_text-truncation.scss","../../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../../node_modules/bootstrap/scss/utilities/_api.scss","../../common/scss/_generic/_font.scss","../../common/scss/_base/_selection.scss","../../common/scss/_objects/_themes.scss","../../common/scss/_objects/_grid-fixes.scss","../../common/scss/_mixins/_breakpoints.scss","../../common/scss/_objects/_font-fixes.scss","../../common/scss/_objects/_logos.scss","../../common/scss/_components/_logo.scss","../../common/scss/_components/_buttons.scss","../../common/scss/_components/_button-group.scss","../../common/scss/_components/_float-button.scss","../../../node_modules/nouislider/distribute/nouislider.css","../../common/scss/_components/_form-file.scss","../../../node_modules/pickadate/lib/themes/default.css","../../../node_modules/pickadate/lib/themes/default.date.css","../../common/scss/_components/_form-datepicker.scss","../../common/scss/_components/_nav-menu.scss","../../common/scss/_components/_nav-pagination.scss","../../common/scss/_components/_nav-footer.scss","../../common/scss/_components/_container-accordion.scss","../../common/scss/_components/_container-table.scss","../../common/scss/_components/_container-tabs.scss","../../common/scss/_components/_container-slick.scss","../../common/scss/_components/_container-language.scss","../../common/scss/_components/_container-level-menu.scss","../../common/scss/_components/_container-search-article.scss","../../common/scss/_components/_container-author-article.scss","../../common/scss/_components/_media-loading.scss","../../common/scss/_components/_media-spinners.scss","../../common/scss/_components/_media-old-icons.scss","../../common/scss/_components/_sidebar.scss","../../common/scss/_utils/_colorUtils.scss","../../common/scss/_utils/_spaceUtils.scss"],"names":[],"mappings":"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F,KAAA,EAAA,EAAA,KACA,MAAA,IS3iBE,cT8iBF,KAAA,EAAA,EAAA,KACA,MAAA,US/iBE,cTkjBF,KAAA,EAAA,EAAA,KACA,MAAA,ISnjBE,cTsjBF,KAAA,EAAA,EAAA,KACA,MAAA,ISvjBE,cT0jBF,KAAA,EAAA,EAAA,KACA,MAAA,US1hBM,UT6hBN,KAAA,EAAA,EAAA,KACA,MAAA,KSxhBU,OT2hBV,KAAA,EAAA,EAAA,KACA,MAAA,SS5hBU,OT+hBV,KAAA,EAAA,EAAA,KACA,MAAA,UShiBU,OTmiBV,KAAA,EAAA,EAAA,KACA,MAAA,ISpiBU,OTuiBV,KAAA,EAAA,EAAA,KACA,MAAA,USxiBU,OT2iBV,KAAA,EAAA,EAAA,KACA,MAAA,US5iBU,OT+iBV,KAAA,EAAA,EAAA,KACA,MAAA,IShjBU,OTmjBV,KAAA,EAAA,EAAA,KACA,MAAA,USpjBU,OTujBV,KAAA,EAAA,EAAA,KACA,MAAA,USxjBU,OT2jBV,KAAA,EAAA,EAAA,KACA,MAAA,IS5jBU,QT+jBV,KAAA,EAAA,EAAA,KACA,MAAA,UShkBU,QTmkBV,KAAA,EAAA,EAAA,KACA,MAAA,USpkBU,QTukBV,KAAA,EAAA,EAAA,KACA,MAAA,KShkBY,UTmkBZ,YAAA,SSnkBY,UTskBZ,YAAA,UStkBY,UTykBZ,YAAA,ISzkBY,UT4kBZ,YAAA,US5kBY,UT+kBZ,YAAA,US/kBY,UTklBZ,YAAA,ISllBY,UTqlBZ,YAAA,USrlBY,UTwlBZ,YAAA,USxlBY,UT2lBZ,YAAA,IS3lBY,WT8lBZ,YAAA,US9lBY,WTimBZ,YAAA,UStlBQ,KACA,MTylBR,kBAAA,ESrlBQ,KACA,MTwlBR,kBAAA,ES9lBQ,KACA,MTimBR,kBAAA,QS7lBQ,KACA,MTgmBR,kBAAA,QStmBQ,KACA,MTymBR,kBAAA,OSrmBQ,KACA,MTwmBR,kBAAA,OS9mBQ,KACA,MTinBR,kBAAA,KS7mBQ,KACA,MTgnBR,kBAAA,KStnBQ,KACA,MTynBR,kBAAA,OSrnBQ,KACA,MTwnBR,kBAAA,OS9nBQ,KACA,MTioBR,kBAAA,KS7nBQ,KACA,MTgoBR,kBAAA,KOlrBI,yBPqrBJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MO9yBI,yBPizBJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MO16BI,yBP66BJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MOtiCI,0BPyiCJ,QACA,KAAA,EAAA,EAAA,GACA,oBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,iBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,aACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,UACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,aACA,YAAA,EACA,aACA,YAAA,SACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,aACA,YAAA,UACA,aACA,YAAA,UACA,aACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,EACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,QACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,OACA,QACA,SACA,kBAAA,KACA,QACA,SACA,kBAAA,MOlqCI,0BPqqCJ,SACA,KAAA,EAAA,EAAA,GACA,qBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,kBACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,cACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,SACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,WACA,KAAA,EAAA,EAAA,KACA,MAAA,IACA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,UACA,YACA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,cACA,YAAA,EACA,cACA,YAAA,SACA,cACA,YAAA,UACA,cACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,cACA,YAAA,IACA,cACA,YAAA,UACA,cACA,YAAA,UACA,cACA,YAAA,IACA,eACA,YAAA,UACA,eACA,YAAA,UACA,SACA,UACA,kBAAA,EACA,SACA,UACA,kBAAA,EACA,SACA,UACA,kBAAA,QACA,SACA,UACA,kBAAA,QACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,KACA,SACA,UACA,kBAAA,KACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,OACA,SACA,UACA,kBAAA,KACA,SACA,UACA,kBAAA,MUz1CA,OV41CA,kBAAA,YACA,6BAAA,QACA,0BAAA,oBACA,4BAAA,QACA,yBAAA,mBACA,2BAAA,QACA,wBAAA,qBACA,MAAA,KACA,cAAA,KACA,MAAA,QACA,eAAA,IA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,oBACA,UACA,UAAA,OOn/HI,yBPs/HJ,UACA,UACA,UAAA,OOx/HI,0BP2/HJ,UACA,UAAA,QwCz2HI,kBxC42HJ,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,iCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,gCACA,cAAA,EACA,8BACA,WAAA,KACA,gCACA,cAAA,EO//HI,4BPkgIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOhhII,4BPmhIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOjiII,4BPoiIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOljII,6BPqjIJ,0BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,yCACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,wCACA,cAAA,EACA,sCACA,WAAA,KACA,wCACA,cAAA,GOnkII,6BPskIJ,2BACA,MAAA,MACA,UAAA,KACA,OAAA,KACA,OAAA,EACA,0CACA,OAAA,KACA,OAAA,EACA,cAAA,EACA,yCACA,cAAA,EACA,uCACA,WAAA,KACA,yCACA,cAAA,GyC/pIA,SzCkqIA,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,EACA,YAAA,8BACA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KACA,UAAA,QACA,UAAA,WACA,QAAA,EACA,cACA,QAAA,GACA,wBACA,SAAA,SACA,QAAA,MACA,MAAA,MACA,OAAA,MACA,gCA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MAAA,cACA,OAAA,cACA,QAAA,YACA,OAAA,eACA,SAAA,iBACA,KAAA,wBACA,YAAA,iBACA,OAAA,YkDjsJA,uBlDosJA,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,QAAA,GmD1sJA,enD6sJA,SAAA,OACA,cAAA,SACA,YAAA,OoDlqJM,gBpDqqJN,eAAA,mBoDrqJM,WpDwqJN,eAAA,coDxqJM,cpD2qJN,eAAA,iBoD3qJM,cpD8qJN,eAAA,iBoD9qJM,mBpDirJN,eAAA,sBoDjrJM,gBpDorJN,eAAA,mBoDprJM,apDurJN,MAAA,eoDvrJM,WpD0rJN,MAAA,gBoD1rJM,YpD6rJN,MAAA,eoD7rJM,epDgsJN,SAAA,eoDhsJM,iBpDmsJN,SAAA,iBoDnsJM,kBpDssJN,SAAA,kBoDtsJM,iBpDysJN,SAAA,iBoDzsJM,UpD4sJN,QAAA,iBoD5sJM,gBpD+sJN,QAAA,uBoD/sJM,SpDktJN,QAAA,gBoDltJM,QpDqtJN,QAAA,eoDrtJM,SpDwtJN,QAAA,gBoDxtJM,apD2tJN,QAAA,oBoD3tJM,cpD8tJN,QAAA,qBoD9tJM,QpDiuJN,QAAA,eoDjuJM,epDouJN,QAAA,sBoDpuJM,QpDuuJN,QAAA,eoDvuJM,QpD0uJN,WAAA,EAAA,MAAA,KAAA,0BoD1uJM,WpD6uJN,WAAA,EAAA,QAAA,OAAA,2BoD7uJM,WpDgvJN,WAAA,EAAA,KAAA,KAAA,2BoDhvJM,apDmvJN,WAAA,eoDnvJM,iBpDsvJN,SAAA,iBoDtvJM,mBpDyvJN,SAAA,mBoDzvJM,mBpD4vJN,SAAA,mBoD5vJM,gBpD+vJN,SAAA,gBoD/vJM,iBpDkwJN,SAAA,iBoDlwJM,OpDqwJN,IAAA,YoDrwJM,QpDwwJN,IAAA,coDxwJM,SpD2wJN,IAAA,eoD3wJM,UpD8wJN,OAAA,YoD9wJM,WpDixJN,OAAA,coDjxJM,YpDoxJN,OAAA,eoDpxJM,SpDuxJN,KAAA,YoDvxJM,UpD0xJN,KAAA,coD1xJM,WpD6xJN,KAAA,eoD7xJM,OpDgyJN,MAAA,YoDhyJM,QpDmyJN,MAAA,coDnyJM,SpDsyJN,MAAA,eoDtyJM,kBpDyyJN,UAAA,+BoDzyJM,oBpD4yJN,UAAA,2BoD5yJM,oBpD+yJN,UAAA,2BoD/yJM,QpDkzJN,OAAA,IAAA,MAAA,yBoDlzJM,UpDqzJN,OAAA,YoDrzJM,YpDwzJN,WAAA,IAAA,MAAA,yBoDxzJM,cpD2zJN,WAAA,YoD3zJM,YpD8zJN,aAAA,IAAA,MAAA,yBoD9zJM,cpDi0JN,aAAA,YoDj0JM,epDo0JN,cAAA,IAAA,MAAA,yBoDp0JM,iBpDu0JN,cAAA,YoDv0JM,cpD00JN,YAAA,IAAA,MAAA,yBoD10JM,gBpD60JN,YAAA,YoD70JM,gBpDg1JN,aAAA,kBoDh1JM,kBpDm1JN,aAAA,eoDn1JM,gBpDs1JN,aAAA,kBoDt1JM,apDy1JN,aAAA,kBoDz1JM,gBpD41JN,aAAA,kBoD51JM,epD+1JN,aAAA,kBoD/1JM,cpDk2JN,aAAA,kBoDl2JM,apDq2JN,aAAA,kBoDr2JM,cpDw2JN,aAAA,eoDx2JM,UpD22JN,aAAA,YoD32JM,UpD82JN,aAAA,coD92JM,UpDi3JN,aAAA,coDj3JM,UpDo3JN,aAAA,coDp3JM,UpDu3JN,aAAA,coDv3JM,UpD03JN,aAAA,coD13JM,MpD63JN,MAAA,coD73JM,MpDg4JN,MAAA,coDh4JM,MpDm4JN,MAAA,coDn4JM,OpDs4JN,MAAA,eoDt4JM,QpDy4JN,MAAA,eoDz4JM,QpD44JN,UAAA,eoD54JM,QpD+4JN,MAAA,gBoD/4JM,YpDk5JN,UAAA,gBoDl5JM,MpDq5JN,OAAA,coDr5JM,MpDw5JN,OAAA,coDx5JM,MpD25JN,OAAA,coD35JM,OpD85JN,OAAA,eoD95JM,QpDi6JN,OAAA,eoDj6JM,QpDo6JN,WAAA,eoDp6JM,QpDu6JN,OAAA,gBoDv6JM,YpD06JN,WAAA,gBoD16JM,WpD66JN,KAAA,EAAA,EAAA,eoD76JM,UpDg7JN,eAAA,coDh7JM,apDm7JN,eAAA,iBoDn7JM,kBpDs7JN,eAAA,sBoDt7JM,qBpDy7JN,eAAA,yBoDz7JM,apD47JN,UAAA,YoD57JM,apD+7JN,UAAA,YoD/7JM,epDk8JN,YAAA,YoDl8JM,epDq8JN,YAAA,YoDr8JM,WpDw8JN,UAAA,eoDx8JM,apD28JN,UAAA,iBoD38JM,mBpD88JN,UAAA,uBoD98JM,OpDi9JN,IAAA,YoDj9JM,OpDo9JN,IAAA,iBoDp9JM,OpDu9JN,IAAA,gBoDv9JM,OpD09JN,IAAA,eoD19JM,OpD69JN,IAAA,iBoD79JM,OpDg+JN,IAAA,eoDh+JM,uBpDm+JN,gBAAA,qBoDn+JM,qBpDs+JN,gBAAA,mBoDt+JM,wBpDy+JN,gBAAA,iBoDz+JM,yBpD4+JN,gBAAA,wBoD5+JM,wBpD++JN,gBAAA,uBoD/+JM,wBpDk/JN,gBAAA,uBoDl/JM,mBpDq/JN,YAAA,qBoDr/JM,iBpDw/JN,YAAA,mBoDx/JM,oBpD2/JN,YAAA,iBoD3/JM,sBpD8/JN,YAAA,mBoD9/JM,qBpDigKN,YAAA,kBoDjgKM,qBpDogKN,cAAA,qBoDpgKM,mBpDugKN,cAAA,mBoDvgKM,sBpD0gKN,cAAA,iBoD1gKM,uBpD6gKN,cAAA,wBoD7gKM,sBpDghKN,cAAA,uBoDhhKM,uBpDmhKN,cAAA,kBoDnhKM,iBpDshKN,WAAA,eoDthKM,kBpDyhKN,WAAA,qBoDzhKM,gBpD4hKN,WAAA,mBoD5hKM,mBpD+hKN,WAAA,iBoD/hKM,qBpDkiKN,WAAA,mBoDliKM,oBpDqiKN,WAAA,kBoDriKM,apDwiKN,MAAA,aoDxiKM,SpD2iKN,MAAA,YoD3iKM,SpD8iKN,MAAA,YoD9iKM,SpDijKN,MAAA,YoDjjKM,SpDojKN,MAAA,YoDpjKM,SpDujKN,MAAA,YoDvjKM,SpD0jKN,MAAA,YoD1jKM,YpD6jKN,MAAA,YoD7jKM,KpDgkKN,OAAA,YoDhkKM,KpDmkKN,OAAA,iBoDnkKM,KpDskKN,OAAA,gBoDtkKM,KpDykKN,OAAA,eoDzkKM,KpD4kKN,OAAA,iBoD5kKM,KpD+kKN,OAAA,eoD/kKM,QpDklKN,OAAA,eoDllKM,MpDqlKN,aAAA,YACA,YAAA,YoDtlKM,MpDylKN,aAAA,iBACA,YAAA,iBoD1lKM,MpD6lKN,aAAA,gBACA,YAAA,gBoD9lKM,MpDimKN,aAAA,eACA,YAAA,eoDlmKM,MpDqmKN,aAAA,iBACA,YAAA,iBoDtmKM,MpDymKN,aAAA,eACA,YAAA,eoD1mKM,SpD6mKN,aAAA,eACA,YAAA,eoD9mKM,MpDinKN,WAAA,YACA,cAAA,YoDlnKM,MpDqnKN,WAAA,iBACA,cAAA,iBoDtnKM,MpDynKN,WAAA,gBACA,cAAA,gBoD1nKM,MpD6nKN,WAAA,eACA,cAAA,eoD9nKM,MpDioKN,WAAA,iBACA,cAAA,iBoDloKM,MpDqoKN,WAAA,eACA,cAAA,eoDtoKM,SpDyoKN,WAAA,eACA,cAAA,eoD1oKM,MpD6oKN,WAAA,YoD7oKM,MpDgpKN,WAAA,iBoDhpKM,MpDmpKN,WAAA,gBoDnpKM,MpDspKN,WAAA,eoDtpKM,MpDypKN,WAAA,iBoDzpKM,MpD4pKN,WAAA,eoD5pKM,SpD+pKN,WAAA,eoD/pKM,MpDkqKN,aAAA,YoDlqKM,MpDqqKN,aAAA,iBoDrqKM,MpDwqKN,aAAA,gBoDxqKM,MpD2qKN,aAAA,eoD3qKM,MpD8qKN,aAAA,iBoD9qKM,MpDirKN,aAAA,eoDjrKM,SpDorKN,aAAA,eoDprKM,MpDurKN,cAAA,YoDvrKM,MpD0rKN,cAAA,iBoD1rKM,MpD6rKN,cAAA,gBoD7rKM,MpDgsKN,cAAA,eoDhsKM,MpDmsKN,cAAA,iBoDnsKM,MpDssKN,cAAA,eoDtsKM,SpDysKN,cAAA,eoDzsKM,MpD4sKN,YAAA,YoD5sKM,MpD+sKN,YAAA,iBoD/sKM,MpDktKN,YAAA,gBoDltKM,MpDqtKN,YAAA,eoDrtKM,MpDwtKN,YAAA,iBoDxtKM,MpD2tKN,YAAA,eoD3tKM,SpD8tKN,YAAA,eoD9tKM,KpDiuKN,QAAA,YoDjuKM,KpDouKN,QAAA,iBoDpuKM,KpDuuKN,QAAA,gBoDvuKM,KpD0uKN,QAAA,eoD1uKM,KpD6uKN,QAAA,iBoD7uKM,KpDgvKN,QAAA,eoDhvKM,MpDmvKN,cAAA,YACA,aAAA,YoDpvKM,MpDuvKN,cAAA,iBACA,aAAA,iBoDxvKM,MpD2vKN,cAAA,gBACA,aAAA,gBoD5vKM,MpD+vKN,cAAA,eACA,aAAA,eoDhwKM,MpDmwKN,cAAA,iBACA,aAAA,iBoDpwKM,MpDuwKN,cAAA,eACA,aAAA,eoDxwKM,MpD2wKN,YAAA,YACA,eAAA,YoD5wKM,MpD+wKN,YAAA,iBACA,eAAA,iBoDhxKM,MpDmxKN,YAAA,gBACA,eAAA,gBoDpxKM,MpDuxKN,YAAA,eACA,eAAA,eoDxxKM,MpD2xKN,YAAA,iBACA,eAAA,iBoD5xKM,MpD+xKN,YAAA,eACA,eAAA,eoDhyKM,MpDmyKN,YAAA,YoDnyKM,MpDsyKN,YAAA,iBoDtyKM,MpDyyKN,YAAA,gBoDzyKM,MpD4yKN,YAAA,eoD5yKM,MpD+yKN,YAAA,iBoD/yKM,MpDkzKN,YAAA,eoDlzKM,MpDqzKN,cAAA,YoDrzKM,MpDwzKN,cAAA,iBoDxzKM,MpD2zKN,cAAA,gBoD3zKM,MpD8zKN,cAAA,eoD9zKM,MpDi0KN,cAAA,iBoDj0KM,MpDo0KN,cAAA,eoDp0KM,MpDu0KN,eAAA,YoDv0KM,MpD00KN,eAAA,iBoD10KM,MpD60KN,eAAA,gBoD70KM,MpDg1KN,eAAA,eoDh1KM,MpDm1KN,eAAA,iBoDn1KM,MpDs1KN,eAAA,eoDt1KM,MpDy1KN,aAAA,YoDz1KM,MpD41KN,aAAA,iBoD51KM,MpD+1KN,aAAA,gBoD/1KM,MpDk2KN,aAAA,eoDl2KM,MpDq2KN,aAAA,iBoDr2KM,MpDw2KN,aAAA,eoDx2KM,gBpD22KN,YAAA,uCoD32KM,MpD82KN,UAAA,iCoD92KM,MpDi3KN,UAAA,gCoDj3KM,MpDo3KN,UAAA,8BoDp3KM,MpDu3KN,UAAA,gCoDv3KM,MpD03KN,UAAA,kBoD13KM,MpD63KN,UAAA,eoD73KM,YpDg4KN,WAAA,iBoDh4KM,YpDm4KN,WAAA,iBoDn4KM,UpDs4KN,YAAA,coDt4KM,YpDy4KN,YAAA,kBoDz4KM,WpD44KN,YAAA,coD54KM,SpD+4KN,YAAA,coD/4KM,WpDk5KN,YAAA,iBoDl5KM,MpDq5KN,YAAA,YoDr5KM,OpDw5KN,YAAA,eoDx5KM,SpD25KN,YAAA,coD35KM,OpD85KN,YAAA,YoD95KM,YpDi6KN,WAAA,eoDj6KM,UpDo6KN,WAAA,gBoDp6KM,apDu6KN,WAAA,iBoDv6KM,sBpD06KN,gBAAA,eoD16KM,2BpD66KN,gBAAA,oBoD76KM,8BpDg7KN,gBAAA,uBoDh7KM,gBpDm7KN,eAAA,oBoDn7KM,gBpDs7KN,eAAA,oBoDt7KM,iBpDy7KN,eAAA,qBoDz7KM,WpD47KN,YAAA,iBoD57KM,apD+7KN,YAAA,iBoD/7KM,YpDm8KN,UAAA,qBACA,WAAA,qBoDp8KM,cpDw8KN,MAAA,kBoDx8KM,gBpD28KN,MAAA,eoD38KM,cpD88KN,MAAA,kBoD98KM,WpDi9KN,MAAA,kBoDj9KM,cpDo9KN,MAAA,kBoDp9KM,apDu9KN,MAAA,kBoDv9KM,YpD09KN,MAAA,kBoD19KM,WpD69KN,MAAA,kBoD79KM,YpDg+KN,MAAA,eoDh+KM,WpDm+KN,MAAA,kBoDn+KM,YpDs+KN,MAAA,yBoDt+KM,epDy+KN,MAAA,yBoDz+KM,epD4+KN,MAAA,+BoD5+KM,YpD++KN,MAAA,kBoD/+KM,YpDk/KN,iBAAA,kBoDl/KM,cpDq/KN,iBAAA,eoDr/KM,YpDw/KN,iBAAA,kBoDx/KM,SpD2/KN,iBAAA,kBoD3/KM,YpD8/KN,iBAAA,kBoD9/KM,WpDigLN,iBAAA,kBoDjgLM,UpDogLN,iBAAA,kBoDpgLM,SpDugLN,iBAAA,kBoDvgLM,SpD0gLN,iBAAA,eoD1gLM,UpD6gLN,iBAAA,eoD7gLM,gBpDghLN,iBAAA,sBoDhhLM,apDmhLN,iBAAA,iCoDnhLM,iBpDshLN,YAAA,coDthLM,kBpDyhLN,YAAA,eoDzhLM,kBpD4hLN,YAAA,eoD5hLM,SpD+hLN,eAAA,eoD/hLM,SpDkiLN,eAAA,eoDliLM,SpDqiLN,cAAA,iBoDriLM,WpDwiLN,cAAA,YoDxiLM,WpD2iLN,cAAA,IAAA,gBoD3iLM,WpD8iLN,cAAA,iBoD9iLM,WpDijLN,cAAA,gBoDjjLM,gBpDojLN,cAAA,coDpjLM,cpDujLN,cAAA,gBoDvjLM,apD0jLN,uBAAA,iBACA,wBAAA,iBoD3jLM,apD8jLN,wBAAA,iBACA,2BAAA,iBoD/jLM,gBpDkkLN,2BAAA,iBACA,0BAAA,iBoDnkLM,epDskLN,0BAAA,iBACA,uBAAA,iBoDvkLM,SpD0kLN,WAAA,kBoD1kLM,WpD6kLN,WAAA,iBO/jLI,yBPkkLJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBOn5LI,yBPs5LJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBOvuMI,yBP0uMJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBO3jNI,0BP8jNJ,gBACA,MAAA,eACA,cACA,MAAA,gBACA,eACA,MAAA,eACA,aACA,QAAA,iBACA,mBACA,QAAA,uBACA,YACA,QAAA,gBACA,WACA,QAAA,eACA,YACA,QAAA,gBACA,gBACA,QAAA,oBACA,iBACA,QAAA,qBACA,WACA,QAAA,eACA,kBACA,QAAA,sBACA,WACA,QAAA,eACA,cACA,KAAA,EAAA,EAAA,eACA,aACA,eAAA,cACA,gBACA,eAAA,iBACA,qBACA,eAAA,sBACA,wBACA,eAAA,yBACA,gBACA,UAAA,YACA,gBACA,UAAA,YACA,kBACA,YAAA,YACA,kBACA,YAAA,YACA,cACA,UAAA,eACA,gBACA,UAAA,iBACA,sBACA,UAAA,uBACA,UACA,IAAA,YACA,UACA,IAAA,iBACA,UACA,IAAA,gBACA,UACA,IAAA,eACA,UACA,IAAA,iBACA,UACA,IAAA,eACA,0BACA,gBAAA,qBACA,wBACA,gBAAA,mBACA,2BACA,gBAAA,iBACA,4BACA,gBAAA,wBACA,2BACA,gBAAA,uBACA,2BACA,gBAAA,uBACA,sBACA,YAAA,qBACA,oBACA,YAAA,mBACA,uBACA,YAAA,iBACA,yBACA,YAAA,mBACA,wBACA,YAAA,kBACA,wBACA,cAAA,qBACA,sBACA,cAAA,mBACA,yBACA,cAAA,iBACA,0BACA,cAAA,wBACA,yBACA,cAAA,uBACA,0BACA,cAAA,kBACA,oBACA,WAAA,eACA,qBACA,WAAA,qBACA,mBACA,WAAA,mBACA,sBACA,WAAA,iBACA,wBACA,WAAA,mBACA,uBACA,WAAA,kBACA,gBACA,MAAA,aACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,YACA,MAAA,YACA,eACA,MAAA,YACA,QACA,OAAA,YACA,QACA,OAAA,iBACA,QACA,OAAA,gBACA,QACA,OAAA,eACA,QACA,OAAA,iBACA,QACA,OAAA,eACA,WACA,OAAA,eACA,SACA,aAAA,YACA,YAAA,YACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,gBACA,YAAA,gBACA,SACA,aAAA,eACA,YAAA,eACA,SACA,aAAA,iBACA,YAAA,iBACA,SACA,aAAA,eACA,YAAA,eACA,YACA,aAAA,eACA,YAAA,eACA,SACA,WAAA,YACA,cAAA,YACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,gBACA,cAAA,gBACA,SACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,iBACA,cAAA,iBACA,SACA,WAAA,eACA,cAAA,eACA,YACA,WAAA,eACA,cAAA,eACA,SACA,WAAA,YACA,SACA,WAAA,iBACA,SACA,WAAA,gBACA,SACA,WAAA,eACA,SACA,WAAA,iBACA,SACA,WAAA,eACA,YACA,WAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,YACA,aAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,YACA,cAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,YACA,YAAA,eACA,QACA,QAAA,YACA,QACA,QAAA,iBACA,QACA,QAAA,gBACA,QACA,QAAA,eACA,QACA,QAAA,iBACA,QACA,QAAA,eACA,SACA,cAAA,YACA,aAAA,YACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,gBACA,aAAA,gBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,cAAA,iBACA,aAAA,iBACA,SACA,cAAA,eACA,aAAA,eACA,SACA,YAAA,YACA,eAAA,YACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,gBACA,eAAA,gBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,iBACA,eAAA,iBACA,SACA,YAAA,eACA,eAAA,eACA,SACA,YAAA,YACA,SACA,YAAA,iBACA,SACA,YAAA,gBACA,SACA,YAAA,eACA,SACA,YAAA,iBACA,SACA,YAAA,eACA,SACA,cAAA,YACA,SACA,cAAA,iBACA,SACA,cAAA,gBACA,SACA,cAAA,eACA,SACA,cAAA,iBACA,SACA,cAAA,eACA,SACA,eAAA,YACA,SACA,eAAA,iBACA,SACA,eAAA,gBACA,SACA,eAAA,eACA,SACA,eAAA,iBACA,SACA,eAAA,eACA,SACA,aAAA,YACA,SACA,aAAA,iBACA,SACA,aAAA,gBACA,SACA,aAAA,eACA,SACA,aAAA,iBACA,SACA,aAAA,eACA,eACA,WAAA,eACA,aACA,WAAA,gBACA,gBACA,WAAA,kBO/4NI,0BPk5NJ,iBACA,MAAA,eACA,eACA,MAAA,gBACA,gBACA,MAAA,eACA,cACA,QAAA,iBACA,oBACA,QAAA,uBACA,aACA,QAAA,gBACA,YACA,QAAA,eACA,aACA,QAAA,gBACA,iBACA,QAAA,oBACA,kBACA,QAAA,qBACA,YACA,QAAA,eACA,mBACA,QAAA,sBACA,YACA,QAAA,eACA,eACA,KAAA,EAAA,EAAA,eACA,cACA,eAAA,cACA,iBACA,eAAA,iBACA,sBACA,eAAA,sBACA,yBACA,eAAA,yBACA,iBACA,UAAA,YACA,iBACA,UAAA,YACA,mBACA,YAAA,YACA,mBACA,YAAA,YACA,eACA,UAAA,eACA,iBACA,UAAA,iBACA,uBACA,UAAA,uBACA,WACA,IAAA,YACA,WACA,IAAA,iBACA,WACA,IAAA,gBACA,WACA,IAAA,eACA,WACA,IAAA,iBACA,WACA,IAAA,eACA,2BACA,gBAAA,qBACA,yBACA,gBAAA,mBACA,4BACA,gBAAA,iBACA,6BACA,gBAAA,wBACA,4BACA,gBAAA,uBACA,4BACA,gBAAA,uBACA,uBACA,YAAA,qBACA,qBACA,YAAA,mBACA,wBACA,YAAA,iBACA,0BACA,YAAA,mBACA,yBACA,YAAA,kBACA,yBACA,cAAA,qBACA,uBACA,cAAA,mBACA,0BACA,cAAA,iBACA,2BACA,cAAA,wBACA,0BACA,cAAA,uBACA,2BACA,cAAA,kBACA,qBACA,WAAA,eACA,sBACA,WAAA,qBACA,oBACA,WAAA,mBACA,uBACA,WAAA,iBACA,yBACA,WAAA,mBACA,wBACA,WAAA,kBACA,iBACA,MAAA,aACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,aACA,MAAA,YACA,gBACA,MAAA,YACA,SACA,OAAA,YACA,SACA,OAAA,iBACA,SACA,OAAA,gBACA,SACA,OAAA,eACA,SACA,OAAA,iBACA,SACA,OAAA,eACA,YACA,OAAA,eACA,UACA,aAAA,YACA,YAAA,YACA,UACA,aAAA,iBACA,YAAA,iBACA,UACA,aAAA,gBACA,YAAA,gBACA,UACA,aAAA,eACA,YAAA,eACA,UACA,aAAA,iBACA,YAAA,iBACA,UACA,aAAA,eACA,YAAA,eACA,aACA,aAAA,eACA,YAAA,eACA,UACA,WAAA,YACA,cAAA,YACA,UACA,WAAA,iBACA,cAAA,iBACA,UACA,WAAA,gBACA,cAAA,gBACA,UACA,WAAA,eACA,cAAA,eACA,UACA,WAAA,iBACA,cAAA,iBACA,UACA,WAAA,eACA,cAAA,eACA,aACA,WAAA,eACA,cAAA,eACA,UACA,WAAA,YACA,UACA,WAAA,iBACA,UACA,WAAA,gBACA,UACA,WAAA,eACA,UACA,WAAA,iBACA,UACA,WAAA,eACA,aACA,WAAA,eACA,UACA,aAAA,YACA,UACA,aAAA,iBACA,UACA,aAAA,gBACA,UACA,aAAA,eACA,UACA,aAAA,iBACA,UACA,aAAA,eACA,aACA,aAAA,eACA,UACA,cAAA,YACA,UACA,cAAA,iBACA,UACA,cAAA,gBACA,UACA,cAAA,eACA,UACA,cAAA,iBACA,UACA,cAAA,eACA,aACA,cAAA,eACA,UACA,YAAA,YACA,UACA,YAAA,iBACA,UACA,YAAA,gBACA,UACA,YAAA,eACA,UACA,YAAA,iBACA,UACA,YAAA,eACA,aACA,YAAA,eACA,SACA,QAAA,YACA,SACA,QAAA,iBACA,SACA,QAAA,gBACA,SACA,QAAA,eACA,SACA,QAAA,iBACA,SACA,QAAA,eACA,UACA,cAAA,YACA,aAAA,YACA,UACA,cAAA,iBACA,aAAA,iBACA,UACA,cAAA,gBACA,aAAA,gBACA,UACA,cAAA,eACA,aAAA,eACA,UACA,cAAA,iBACA,aAAA,iBACA,UACA,cAAA,eACA,aAAA,eACA,UACA,YAAA,YACA,eAAA,YACA,UACA,YAAA,iBACA,eAAA,iBACA,UACA,YAAA,gBACA,eAAA,gBACA,UACA,YAAA,eACA,eAAA,eACA,UACA,YAAA,iBACA,eAAA,iBACA,UACA,YAAA,eACA,eAAA,eACA,UACA,YAAA,YACA,UACA,YAAA,iBACA,UACA,YAAA,gBACA,UACA,YAAA,eACA,UACA,YAAA,iBACA,UACA,YAAA,eACA,UACA,cAAA,YACA,UACA,cAAA,iBACA,UACA,cAAA,gBACA,UACA,cAAA,eACA,UACA,cAAA,iBACA,UACA,cAAA,eACA,UACA,eAAA,YACA,UACA,eAAA,iBACA,UACA,eAAA,gBACA,UACA,eAAA,eACA,UACA,eAAA,iBACA,UACA,eAAA,eACA,UACA,aAAA,YACA,UACA,aAAA,iBACA,UACA,aAAA,gBACA,UACA,aAAA,eACA,UACA,aAAA,iBACA,UACA,aAAA,eACA,gBACA,WAAA,eACA,cACA,WAAA,gBACA,iBACA,WAAA,kBqD/wOA,0BrDkxOA,MACA,UAAA,iBACA,MACA,UAAA,eACA,MACA,UAAA,kBACA,MACA,UAAA,kBqDtwOA,arDywOA,gBACA,QAAA,iBACA,sBACA,QAAA,uBACA,eACA,QAAA,gBACA,cACA,QAAA,eACA,eACA,QAAA,gBACA,mBACA,QAAA,oBACA,oBACA,QAAA,qBACA,cACA,QAAA,eACA,qBACA,QAAA,sBACA,cACA,QAAA,gBsDl0OA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,MAAA,EAAA,StDq0OA,eAAA,mBuDr0OA,iBvDw0OA,WAAA,QACA,sCACA,WAAA,QACA,uCACA,WAAA,QuDj0OA,YvDo0OA,WAAA,QACA,iCACA,WAAA,QACA,kCACA,WAAA,QwDl1OI,sBxDq1OJ,WAAA,KACA,MAAA,KwDl1OI,qBxDq1OJ,WAAA,KACA,MAAA,QyD31OA,WzD81OA,aAAA,KACA,cAAA,K0Dl1OI,oC1Ds1OJ,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,iBAAA,qCACA,4BACA,iBAAA,qCACA,gBAAA,QACA,kBAAA,UACA,QAAA,aACA,MAAA,UACA,OAAA,UACA,iDACA,iBAAA,8CACA,kDACA,iBAAA,qCACA,6BACA,iBAAA,qCACA,gBAAA,QACA,kBAAA,UACA,QAAA,aACA,MAAA,SACA,OAAA,SACA,kDACA,iBAAA,8CACA,mDACA,iBAAA,qCACA,0DACA,cAAA,KACA,iEAAA,gEACA,SAAA,SACA,UAAA,SACA,YAAA,MAAA,CAAA,MACA,MAAA,KACA,WAAA,OACA,aAAA,KACA,cAAA,IAAA,MAAA,KACA,eAAA,KACA,cAAA,IACA,IAAA,KACA,KAAA,MACA,sFAAA,qFACA,MAAA,QACA,aAAA,qBACA,uFAAA,sFACA,MAAA,KACA,aAAA,KACA,+DACA,SAAA,SACA,KAAA,IACA,UAAA,uBACA,IAAA,QACA,QAAA,MACA,UAAA,OACA,YAAA,MAAA,CAAA,MACA,MAAA,KACA,YAAA,OACA,MAAA,UACA,oFACA,MAAA,QACA,qFACA,MAAA,KACA,4BACA,iBAAA,qCACA,gBAAA,QACA,kBAAA,UACA,QAAA,aACA,MAAA,KACA,OAAA,KAIA,iDACA,iBAAA,8CACA,kDACA,iBAAA,qCACA,gEACA,SAAA,SACA,KAAA,OACA,IAAA,QACA,MAAA,KACA,qFACA,MAAA,QACA,sFACA,MAAA,KACA,6BACA,SAAA,SACA,MAAA,UACA,OAAA,QACA,iBAAA,qCACA,kBAAA,UACA,gBAAA,KAAA,KACA,sBAAA,iBACA,QAAA,aACA,yBACA,6BACA,MAAA,UACA,OAAA,UACA,gBAAA,MAAA,KACA,sBAAA,kBACA,kDACA,iBAAA,8CACA,mDACA,iBAAA,qCACA,mCACA,QAAA,uCACA,SAAA,SACA,IAAA,SACA,QAAA,MACA,UAAA,OACA,YAAA,MAAA,CAAA,MACA,MAAA,KACA,YAAA,OACA,MAAA,KACA,WAAA,OACA,yBACA,mCACA,IAAA,SACA,UAAA,QACA,wDACA,MAAA,QACA,yDACA,MAAA,KACA,oCAAA,mCACA,SAAA,SACA,UAAA,KACA,YAAA,MAAA,CAA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DACA,MAAA,KACA,QAAA,KACA,gBAAA,OACA,YAAA,OACA,aAAA,KACA,cAAA,OACA,+DACA,MAAA,EACA,SAAA,OACA,UAAA,KACA,OAAA,EACA,iFACA,SAAA,OACA,UAAA,KACA,2BACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,YAAA,0BACA,QAAA,kBACA,MAAA,QACA,OAAA,EACA,YAAA,iBACA,WAAA,OACA,MAAA,KACA,MAAA,QACA,OAAA,QACA,UAAA,QACA,YAAA,QACA,WAAA,IAAA,IAAA,SACA,yDACA,cAAA,OACA,kEACA,aAAA,SACA,cAAA,SACA,+DACA,MAAA,MACA,mBAAA,6BAAA,QACA,QAAA,OAAA,OACA,cAAA,OACA,YAAA,OACA,OAAA,KACA,UAAA,QACA,uDAAA,4CACA,aAAA,OACA,+EAAA,oEACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,sFAAA,2EACA,eAAA,IACA,+EAAA,oEACA,KAAA,QACA,wDAAA,6CACA,cAAA,OACA,gFAAA,qEACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,uFAAA,4EACA,eAAA,IACA,gFAAA,qEACA,MAAA,QACA,uDAAA,4CACA,QAAA,EACA,MAAA,KACA,+EAAA,oEACA,SAAA,SACA,IAAA,IACA,UAAA,iBACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,sFAAA,2EACA,eAAA,IACA,+EAAA,oEACA,IAAA,IACA,KAAA,IACA,UAAA,qBACA,uEAAA,4DACA,MAAA,KACA,aAAA,OACA,cAAA,OACA,QAAA,KACA,gBAAA,OACA,YAAA,OACA,yCAAA,8BACA,MAAA,QACA,MAAA,OACA,OAAA,OACA,UAAA,OACA,YAAA,OACA,mBAAA,6BAAA,QACA,QAAA,MAAA,MACA,cAAA,OACA,YAAA,KACA,OAAA,K8D/jRA,e9D0lRA,cAAA,O8D1lRA,oB9D6lRA,uBAAA,OACA,wBAAA,OACA,0BAAA,OACA,2BAAA,OACA,0BACA,UAAA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,QAAA,MACA,QAAA,IAAA,EAAA,IAAA,EACA,OAAA,EACA,MAAA,KACA,OAAA,KACA,yBACA,kCACA,IAAA,KACA,KAAA,KACA,4BACA,0CACA,QAAA,0BACA,MAAA,KACA,WAAA,KACA,SAAA,SACA,YAAA,KACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,WAAA,KACA,QAAA,IACA,YAAA,KACA,cAAA,IACA,UAAA,OACA,WAAA,IACA,+DACA,WAAA,KACA,MAAA,KACA,gEACA,WAAA,KACA,MAAA,KACA,2CACA,QAAA,GACA,aAAA,IAAA,MAAA,KACA,YAAA,IAAA,MAAA,YACA,WAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,YACA,YAAA,KACA,WAAA,KACA,SAAA,SACA,YAAA,KACA,gEACA,aAAA,IAAA,MAAA,KACA,iEACA,aAAA,IAAA,MAAA,MACA,4CACA,iBAAA,KACA,YAAA,KACA,aAAA,KAEA,kEADA,yDAEA,QAAA,EACA,QAAA,KAEA,gEADA,uDAEA,QAAA,EACA,MAAA,QASA,6CACA,QAAA,MACA,QAAA,EACA,WAAA,IAAA,IACA,yEACA,QAAA,EACA,sFACA,kBAAA,iBACA,UAAA,iBACA,4BACA,sFACA,kBAAA,kBACA,UAAA,mBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBACA,sFACA,kBAAA,kBACA,UAAA,kBACA,4BACA,sFACA,kBAAA,mBACA,UAAA,oBgElrTA,0BhEqrTA,QAAA,EACA,MAAA,KACA,iBAAA,QACA,cAAA,IACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,YAAA,KACA,WAAA,OACA,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,KACA,4DACA,iBAAA,QACA,6DACA,iBAAA,KoC97UA,YpCi8UA,QAAA,KACA,eAAA,OACA,aAAA,EACA,cAAA,EACA,cAAA,OoC37UA,qBpC87UA,gBAAA,KACA,cAAA,QACA,gCACA,QAAA,uBAAA,KACA,kBAAA,QoCj7UA,wBpCo7UA,MAAA,KACA,MAAA,eACA,WAAA,QACA,8BAAA,8BACA,QAAA,EACA,gBAAA,KACA,iBAAA,QACA,mDAAA,mDACA,iBAAA,QACA,oDAAA,oDACA,iBAAA,QACA,+BACA,MAAA,QACA,iBAAA,QoCx6UA,iBpC26UA,SAAA,SACA,QAAA,MACA,QAAA,MAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBACA,6BACA,uBAAA,QACA,wBAAA,QACA,4BACA,2BAAA,QACA,0BAAA,QACA,0BAAA,0BACA,MAAA,eACA,eAAA,KACA,iBAAA,KACA,uBACA,iBAAA,QACA,gBAAA,KACA,4CACA,iBAAA,QACA,6CACA,iBAAA,QACA,wBACA,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QACA,kCACA,iBAAA,EACA,yCACA,WAAA,KACA,iBAAA,IoCv5UI,uBpC05UJ,eAAA,IACA,oDACA,0BAAA,OACA,wBAAA,EACA,mDACA,wBAAA,OACA,0BAAA,EACA,+CACA,WAAA,EACA,yDACA,iBAAA,IACA,kBAAA,EACA,gEACA,YAAA,KACA,kBAAA,IOp9UI,yBPu9UJ,0BACA,eAAA,IACA,uDACA,0BAAA,OACA,wBAAA,EACA,sDACA,wBAAA,OACA,0BAAA,EACA,kDACA,WAAA,EACA,4DACA,iBAAA,IACA,kBAAA,EACA,mEACA,YAAA,KACA,kBAAA,KOt+UI,yBPy+UJ,0BACA,eAAA,IACA,uDACA,0BAAA,OACA,wBAAA,EACA,sDACA,wBAAA,OACA,0BAAA,EACA,kDACA,WAAA,EACA,4DACA,iBAAA,IACA,kBAAA,EACA,mEACA,YAAA,KACA,kBAAA,KOx/UI,yBP2/UJ,0BACA,eAAA,IACA,uDACA,0BAAA,OACA,wBAAA,EACA,sDACA,wBAAA,OACA,0BAAA,EACA,kDACA,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A,+DACA,iBAAA,8NACA,sCACA,iBAAA,sIACA,2DACA,iBAAA,sIACA,4DACA,iBAAA,sIACA,+CACA,iBAAA,QACA,aAAA,QACA,iBAAA,wNACA,oEACA,iBAAA,wNACA,qEACA,iBAAA,wNACA,2BACA,eAAA,KACA,OAAA,KACA,QAAA,GACA,6CAAA,8CACA,QAAA,GgB7oWA,mBhBgpWA,QAAA,aACA,aAAA,KgB5oWA,WhB+oWA,SAAA,SACA,KAAA,cACA,eAAA,KACA,yBAAA,0BACA,eAAA,KACA,OAAA,KACA,QAAA,IgBrrWA,ahBwrWA,aAAA,MACA,+BACA,MAAA,IACA,YAAA,OACA,oBAAA,KAAA,OACA,cAAA,IACA,WAAA,oBAAA,KAAA,YACA,iBAAA,sIACA,iBAAA,KACA,aAAA,KACA,uCACA,+BACA,WAAA,MACA,oDACA,iBAAA,4JACA,iBAAA,KACA,aAAA,qBACA,qDACA,iBAAA,sIACA,iBAAA,KACA,aAAA,KACA,qCACA,iBAAA,sIACA,0DACA,iBAAA,4JACA,2DACA,iBAAA,sIACA,uCACA,oBAAA,MAAA,OACA,iBAAA,QACA,aAAA,QACA,iBAAA,sIACA,4DACA,iBAAA,QACA,aAAA,QACA,6DACA,iBAAA,QACA,aAAA,QACA,4DACA,iBAAA,sIACA,6DACA,iBAAA,sIkE10WI,mBlEq5WJ,SAAA,SACA,OAAA,KACA,SAAA,OACA,yBACA,mBAAA,KACA,WAAA,KACA,SAAA,SACA,UAAA,kBACA,IAAA,EACA,MAAA,KACA,yBACA,QAAA,2BACA,SAAA,SACA,IAAA,IACA,MAAA,OACA,UAAA,iBACA,YAAA,SACA,MAAA,KACA,UAAA,OACA,eAAA,KACA,+CACA,MAAA,KACA,8CACA,MAAA,KACA,yBACA,OAAA,KACA,KAAA,EACA,MAAA,KACA,IAAA,EACA,UAAA,cACA,QAAA,EAAA,KAAA,EAAA,OACA,YAAA,OACA,SAAA,OACA,cAAA,SACA,OAAA,QACA,cAAA,IAAA,MAAA,qBACA,YAAA,KACA,eAAA,IAGA,qDADA,+CADA,gDAGA,YAAA,IACA,UAAA,KACA,YAAA,MACA,Y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CA,oCACA,WAAA,KACA,aAAA,qBACA,qCACA,WAAA,KACA,aAAA,KuB5tYA,evB+tYA,YAAA,OACA,MAAA,KACA,qBACA,MAAA,KACA,WAAA,QACA,oCACA,YAAA,OACA,MAAA,QACA,0CACA,MAAA,QACA,WAAA,QACA,qCACA,YAAA,OACA,MAAA,KACA,2CACA,MAAA,KACA,WAAA,QwEv3YA,OxE03YA,WAAA,YACA,OAAA,EACA,YAAA,OACA,eAAA,KACA,eACA,WAAA,IAAA,OAAA,KACA,oCACA,aAAA,qBACA,qCACA,aAAA,KACA,2BACA,WAAA,EACA,YACA,QAAA,KAAA,EACA,SACA,OAAA,EACA,uBACA,iBAAA,QACA,4CACA,iBAAA,QACA,6CACA,iBAAA,QACA,4BACA,OAAA,EACA,4BACA,4BACA,aAAA,IACA,cAAA,IACA,wCACA,eAAA,EACA,uCACA,YAAA,GACA,iBACA,QAAA,KAAA,EACA,mBACA,OAAA,KACA,4BACA,qBACA,OAAA,IAAA,G6B55YA,kB7B8lZA,SAAA,SACA,QAAA,KACA,YAAA,OACA,MAAA,KACA,QAAA,KAAA,QACA,UAAA,KACA,MAAA,KACA,WAAA,KACA,iBAAA,YACA,OAAA,EACA,cAAA,EACA,gBAAA,KACA,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,WAAA,CAAA,cAAA,KAAA,KACA,uCACA,kBACA,WAAA,MACA,uCACA,MAAA,QACA,wCACA,MAAA,KACA,kCACA,MAAA,KACA,iBAAA,YACA,WAAA,KACA,cAAA,IAAA,MAAA,QACA,uDACA,MAAA,QACA,iBAAA,YACA,cAAA,IAAA,MAAA,QACA,wDACA,MAAA,KACA,iBAAA,YACA,cAAA,IAAA,MAAA,QACA,yCACA,iBAAA,KACA,UAAA,cACA,MAAA,QACA,8DACA,MAAA,QACA,+DACA,MAAA,QACA,yBACA,YAAA,EACA,MAAA,QACA,OAAA,QACA,YAAA,KACA,YAAA,0BACA,QAAA,oBACA,iBAAA,KACA,kBAAA,UACA,gBAAA,QACA,WAAA,UAAA,IAAA,YACA,WAAA,OACA,YAAA,QACA,uCACA,yBACA,WAAA,MACA,wBACA,QAAA,EACA,wBACA,QAAA,EACA,aAAA,QACA,QAAA,EACA,WAAA,K6B1mZA,kB7B6mZA,cAAA,E6BzmZA,gB7B4mZA,cAAA,KACA,iBAAA,YACA,OAAA,IAAA,MAAA,KACA,qCACA,OAAA,IAAA,MAAA,qBACA,sCACA,OAAA,IAAA,MAAA,KACA,8BACA,uBAAA,OACA,wBAAA,OACA,gDACA,uBAAA,mBACA,wBAAA,mBACA,6BACA,cAAA,EACA,2BAAA,OACA,0BAAA,OACA,yDACA,2BAAA,mBACA,0BAAA,mBACA,iDACA,2BAAA,OACA,0BAAA,O6BpmZA,gB7BumZA,QAAA,KAAA,QACA,WAAA,QACA,MAAA,KACA,qCACA,MAAA,QACA,WAAA,QACA,sCACA,MAAA,KACA,WAAA,QyEj2YE,iBzEo2YF,OAAA,IAAA,MAAA,KACA,cAAA,OACA,sCACA,OAAA,IAAA,MAAA,qBACA,uCACA,OAAA,IAAA,MAAA,KACA,qCACA,aAAA,EACA,iCACA,aAAA,EACA,YAAA,EACA,cAAA,EACA,6CACA,WAAA,EACA,4CACA,cAAA,EACA,mDACA,cAAA,EkCxtZA,OlC2tZA,QAAA,OAAA,QAAA,OAAA,OACA,cAAA,SACA,OAAA,IAAA,MAAA,QACA,WAAA,KACA,MAAA,QACA,4BACA,WAAA,KACA,MAAA,KACA,6BACA,WAAA,KACA,MAAA,QACA,UACA,iBAAA,QACA,+BACA,iBAAA,QACA,gCACA,iBAAA,QACA,cAAA,YAAA,eAAA,eACA,aAAA,QACA,SAAA,SACA,qBAAA,mBAAA,sBAAA,sBACA,QAAA,GACA,SAAA,SACA,IAAA,OACA,KAAA,OACA,YAAA,0BACA,UAAA,OACA,YAAA,OACA,eACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,8BACA,2BACA,MAAA,eACA,iBACA,MAAA,KACA,gBAAA,UACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,qCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,oDACA,iDACA,MAAA,eACA,iBACA,MAAA,KACA,WAAA,KACA,aAAA,KACA,MAAA,KACA,WAAA,KACA,aAAA,eACA,gCACA,6BACA,MAAA,eACA,mBACA,MAAA,KACA,gBAAA,UACA,sCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,qDACA,kDACA,MAAA,eACA,uCACA,MAAA,KACA,WAAA,KACA,aAAA,KACA,sDACA,mDACA,MAAA,eACA,gCACA,6BACA,MAAA,eACA,sCACA,MAAA,QACA,WAAA,IACA,aAAA,QACA,qDACA,kDACA,MAAA,kBACA,uCACA,MAAA,KACA,WAAA,KACA,aAAA,eACA,sDACA,mDACA,MAAA,eACA,YACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mBACA,QAAA,OACA,MAAA,QACA,2BACA,wBACA,MAAA,eACA,cACA,MAAA,KACA,gBAAA,UACA,iCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,gDACA,6CACA,MAAA,eACA,kCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,iDACA,8CACA,MAAA,eACA,YACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,2BACA,wBACA,MAAA,eACA,cACA,MAAA,KACA,gBAAA,UACA,iCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,gDACA,6CACA,MAAA,eACA,kCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,iDACA,8CACA,MAAA,eACA,eACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,sBACA,QAAA,eACA,MAAA,QACA,8BACA,2BACA,MAAA,eACA,iBACA,MAAA,KACA,gBAAA,UACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,qCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,oDACA,iDACA,MAAA,eACA,cACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,qBACA,QAAA,iBACA,MAAA,QACA,6BACA,0BACA,MAAA,eACA,gBACA,MAAA,KACA,gBAAA,UACA,mCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,kDACA,+CACA,MAAA,eACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,eACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,sBACA,QAAA,iBACA,MAAA,QACA,8BACA,2BACA,MAAA,eACA,iBACA,MAAA,KACA,gBAAA,UACA,oCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,mDACA,gDACA,MAAA,eACA,qCACA,MAAA,KACA,WAAA,QACA,aAAA,QACA,oDACA,iDACA,MAAA,eACA,YACA,MAAA,kBACA,iCACA,MAAA,kBACA,kCACA,MAAA,kBACA,mBACA,cAAA,QACA,0BACA,QAAA,SAAA,OACA,UAAA,OACA,YAAA,OACA,MAAA,QACA,IAAA,EACA,MAAA,EACA,QAAA,GACA,SAAA,SACA,MAAA,EACA,OAAA,EACA,WAAA,IACA,iCACA,YAAA,0BACA,QAAA,QACA,MAAA,QACA,gCACA,QAAA,EACA,mBACA,cAAA,EACA,0BACA,SAAA,OACA,QAAA,MACA,yBACA,0BACA,QAAA,aACA,eAAA,Q4Bj+ZA,M5B0paA,SAAA,SACA,QAAA,KACA,eAAA,OACA,UAAA,EACA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,KACA,cAAA,OACA,2BACA,OAAA,IAAA,MAAA,qBACA,iBAAA,KACA,4BACA,OAAA,IAAA,MAAA,KACA,iBAAA,KACA,uBACA,iBAAA,KACA,aAAA,KACA,4CACA,aAAA,qBACA,iBAAA,KACA,6CACA,aAAA,KACA,iBAAA,KACA,SACA,aAAA,EACA,YAAA,EACA,kBACA,WAAA,QACA,cAAA,QACA,8BACA,iBAAA,EACA,uBAAA,mBACA,wBAAA,mBACA,6BACA,oBAAA,EACA,2BAAA,mBACA,0BAAA,mBACA,+BACA,+BACA,WAAA,E4B1paA,W5B6paA,KAAA,EAAA,EAAA,KACA,QAAA,KAAA,KACA,MAAA,KACA,gCACA,MAAA,QACA,iCACA,MAAA,K4B3paA,Y5B8paA,cAAA,M4B1paA,e5B6paA,WAAA,QACA,cAAA,EACA,YAAA,IACA,eAAA,UACA,MAAA,QACA,UAAA,OA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,MAAA,KACA,qFAAA,qFACA,WAAA,QACA,MAAA,QACA,+CACA,WAAA,KACA,OAAA,IAAA,MAAA,KACA,cAAA,IACA,iDACA,SAAA,SACA,YAAA,IACA,UAAA,EACA,YAAA,MACA,eAAA,EACA,QAAA,OAAA,OAAA,OACA,YAAA,OACA,WAAA,IAAA,IACA,cAAA,SACA,WAAA,IACA,MAAA,KASA,YAAA,IACA,UAAA,KACA,YAAA,MACA,MAAA,eACA,sEACA,MAAA,KACA,uEACA,MAAA,KACA,6DACA,WAAA,QACA,MAAA,KACA,kFACA,WAAA,QACA,MAAA,QACA,mFACA,WAAA,QACA,MAAA,KACA,sEACA,MAAA,kBACA,uEACA,MAAA,eACA,oEACA,WAAA,KACA,OAAA,IAAA,MAAA,qBACA,qEACA,WAAA,KACA,OAAA,IAAA,MAAA,KACA,iEACA,aAAA,KACA,sFACA,aAAA,qBACA,uFACA,aAAA,K2EtvcI,yB3EyvcJ,YAAA,cACA,UAAA,KACA,eAAA,eACA,YAAA,OACA,YAAA,SACA,MAAA,KACA,cAAA,SACA,aAAA,EACA,QAAA,SAAA,OACA,SAAA,SACA,WAAA,IAAA,IACA,8CACA,MAAA,QACA,+CACA,MAAA,KACA,gCACA,OAAA,KACA,WAAA,QACA,MAAA,KACA,qDACA,WAAA,QACA,MAAA,KACA,sDACA,WAAA,QACA,MAAA,KACA,kCACA,MAAA,eACA,OAAA,YACA,uDACA,MAAA,qBACA,wDACA,MAAA,eACA,2DAAA,2DACA,WAAA,QACA,MAAA,QACA,gFAAA,gFACA,WAAA,QACA,MAAA,KACA,iFAAA,iFACA,WAAA,QACA,MAAA,Q2EjycI,qC3EoycJ,YAAA,cACA,UAAA,KACA,eAAA,eACA,YAAA,OACA,WAAA,IACA,YAAA,SACA,MAAA,KACA,cAAA,SACA,YAAA,IAAA,MAAA,YACA,uBAAA,EACA,0BAAA,EACA,QAAA,SAAA,OASA,0DACA,MAAA,QACA,2DACA,MAAA,KACA,4CACA,WAAA,IACA,aAAA,QACA,MAAA,QACA,iEACA,aAAA,QACA,MAAA,KACA,kEACA,aAAA,QACA,MAAA,QACA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,cAAA,GACA,2CACA,WAAA,qBACA,4CACA,WAAA,qBACA,4BAAA,4BACA,QAAA,EACA,mCAAA,mCACA,QAAA,EACA,mCACA,WAAA,QACA,wDACA,WAAA,QACA,yDACA,WAAA,Q6EzyeA,kB7EizeA,WAAA,MACA,yBACA,kBACA,SAAA,OACA,QAAA,aACA,MAAA,O8ExyeA,mB9E0zeA,WAAA,QACA,QAAA,SACA,wCACA,WAAA,QACA,yCACA,WAAA,QACA,8BACA,OAAA,YACA,2CACA,WAAA,OACA,aAAA,IAAA,OAAA,KACA,YAAA,QACA,gEACA,aAAA,qBACA,iEACA,aAAA,KACA,wDACA,OAAA,EACA,4BACA,2CACA,OAAA,EACA,yDACA,aAAA,IAAA,OAAA,KACA,8EACA,aAAA,qBACA,+EACA,aAAA,KACA,wDACA,WAAA,MACA,qBACA,gBAAA,KACA,YAAA,I+Ev2eA,gC/E02eA,WAAA,QACA,QAAA,SACA,qDACA,WAAA,QACA,sDACA,WAAA,QACA,4BACA,6CACA,UAAA,OACA,OAAA,KACA,WAAA,IACA,2DACA,0DACA,MAAA,KACA,OAAA,EAAA,EAAA,gBACA,cAAA,iBACA,sEACA,qEACA,OAAA,GACA,8EACA,UAAA,MACA,gFACA,UAAA,MgFh4eA,sBhFm4eA,MAAA,QACA,OAAA,KAAA,IACA,UAAA,MACA,WAAA,OACA,QAAA,EACA,mCACA,QAAA,aACA,cAAA,KACA,OAAA,QACA,MAAA,KACA,OAAA,KACA,UAAA,IACA,QAAA,IAAA,EACA,WAAA,OACA,WAAA,KACA,YAAA,0BACA,QAAA,QACA,yCACA,WAAA,QACA,MAAA,KACA,6CACA,UAAA,KACA,eAAA,SACA,gCACA,QAAA,aACA,QAAA,EACA,iDACA,WAAA,IACA,OAAA,IAAA,MAAA,YACA,QAAA,QACA,OAAA,KACA,QAAA,EACA,cAAA,EACA,MAAA,QACA,uDACA,OAAA,IAAA,MAAA,YACA,MAAA,QACA,WAAA,cACA,sEACA,OAAA,IAAA,MAAA,YACA,MAAA,QACA,4EACA,OAAA,IAAA,MAAA,YACA,MAAA,QACA,uEACA,OAAA,IAAA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AAA,IACA,4BACA,UACA,QAAA,MACA,OAAA,OAAA,MiC9nfA,OjCiofA,cAAA,OACA,UAAA,QACA,YAAA,SACA,QAAA,EAAA,SACA,OAAA,SACA,UAAA,SACA,eAAA,KACA,QAAA,aACA,eAAA,SACA,OAAA,IAAA,MAAA,KACA,WAAA,OACA,eAAA,UACA,MAAA,KACA,WAAA,KACA,MAAA,KACA,4BACA,aAAA,KACA,6BACA,aAAA,KACA,4BACA,iBAAA,QACA,MAAA,KACA,6BACA,iBAAA,KACA,MAAA,KACA,aAAA,eACA,WAAA,QACA,MAAA,KACA,kCAAA,oCACA,iBAAA,QACA,MAAA,KACA,mCAAA,qCACA,iBAAA,QACA,MAAA,KACA,iBACA,WAAA,KACA,MAAA,KACA,sCACA,iBAAA,QACA,MAAA,KACA,uCACA,iBAAA,KACA,MAAA,KACA,YACA,WAAA,QACA,MAAA,KACA,iCACA,iBAAA,QACA,MAAA,KACA,kCACA,iBAAA,QACA,MAAA,KACA,YACA,WAAA,KACA,MAAA,KACA,iCACA,iBAAA,QACA,MAAA,KACA,kCACA,iBAAA,KACA,MAAA,KACA,eACA,WAAA,QACA,MAAA,KACA,oCACA,iBAAA,QACA,MAAA,KACA,qCACA,iBAAA,QACA,MAAA,KACA,cACA,WAAA,QACA,MAAA,KACA,mCACA,iBAAA,QACA,MAAA,KACA,oCACA,iBAAA,QACA,MAAA,KACA,eACA,WAAA,QACA,MAAA,KACA,oCACA,iBAAA,QACA,MAAA,KACA,qCACA,iBAAA,QACA,MAAA,KAiBA,kBACA,kBACA,kBACA,kBAnBA,WAWA,sBATA,WAEA,WAEA,WAEA,WAEA,WAUA,MApBA,UACA,UAEA,UAEA,UAEA,UAEA,UAYA,YAAA,MACA,YACA,eAAA,YACA,OAAA,EAAA,EAAA,OAAA,WACA,SAAA,SACA,QAAA,E2C3ufA,U3C8+fA,SAAA,S2C1+fA,wB3C6+fA,aAAA,M2Cz+fA,gB3C4+fA,SAAA,SACA,MAAA,KACA,SAAA,OACA,uBACA,QAAA,MACA,MAAA,KACA,QAAA,G2C3+fA,e3C8+fA,SAAA,SACA,QAAA,KACA,MA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","file":"bootstrap.css","sourcesContent":["/*!\n * Bootstrap v5.0.0-beta1 (https://getbootstrap.com/)\n * Copyright 2011-2020 The Bootstrap Authors\n * Copyright 2011-2020 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n\n// scss-docs-start import-stack\n// Configuration\n@import \"scss/functions\";\n\n@import \"../../common/scss/itcssImports/vars\";\n@import \"../../common/scss/itcssImports/mixins\";\n@import \"./settings/variables\";\n\n@import \"scss/mixins\";\n@import \"scss/utilities\";\n\n// Layout & components\n@import \"scss/root\";\n@import \"scss/reboot\";\n@import \"scss/type\";\n@import \"scss/images\";\n@import \"scss/containers\";\n@import \"scss/grid\";\n@import \"scss/tables\";\n@import \"scss/forms\";\n@import \"scss/buttons\";\n@import \"scss/transitions\";\n@import \"scss/dropdown\";\n@import \"scss/button-group\";\n@import \"scss/nav\";\n@import \"scss/navbar\";\n@import \"scss/card\";\n@import \"scss/accordion\";\n@import \"scss/breadcrumb\";\n@import \"scss/pagination\";\n@import \"scss/badge\";\n@import \"scss/alert\";\n@import \"scss/progress\";\n@import \"scss/list-group\";\n@import \"scss/close\";\n@import \"scss/toasts\";\n@import \"scss/modal\";\n@import \"scss/tooltip\";\n@import \"scss/popover\";\n@import \"scss/carousel\";\n@import \"scss/spinners\";\n\n// Helpers\n@import \"scss/helpers\";\n\n// Utilities\n@import \"scss/utilities/api\";\n// scss-docs-end import-stack \n\n$bootstrap: true;\n$foundation: false;\n@import \"../../common/scss/itcssImports/generic\";\n@import \"../../common/scss/itcssImports/base\";\n@import \"../../common/scss/itcssImports/objects\";\n@import \"../../common/scss/itcssImports/components\";\n@import \"../../common/scss/itcssImports/utils\";\n","@import url('https://fonts.googleapis.com/css2?family=Arapey&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap');\n@import url('https://fonts.googleapis.com/icon?family=Material+Icons&display=swap');","// @import \"../../assets/font/icon\"\n@import url('https://fonts.googleapis.com/icon?family=Material+Icons+Outlined');","@mixin __on-theme--dark {\n @at-root .#{$__classPrefix}__theme--dark & {\n @content;\n }\n}\n\n@mixin __on-theme--light {\n @at-root .#{$__classPrefix}__theme--light & {\n @content;\n }\n}\n\n\n@mixin animated($time: .5s, $prop: background, $prop2: text-indent){\n -webkit-animation-fill-mode: both;\n -moz-animation-fill-mode: both;\n -ms-animation-fill-mode: both;\n -o-animation-fill-mode: both;\n animation-fill-mode: both;\n -webkit-animation-duration: $time;\n -moz-animation-duration: $time;\n -ms-animation-duration: $time;\n -o-animation-duration: $time;\n animation-duration: $time;\n\n -o-transition: $prop $time ease-out, $prop2 $time ease-out;\n -ms-transition: $prop $time ease-out, $prop2 $time ease-out;\n -moz-transition: $prop $time ease-out, $prop2 $time ease-out;\n -webkit-transition: $prop $time ease-out, $prop2 $time ease-out;\n transition: $prop $time ease-out, $prop2 $time ease-out;\n}\n\n@-webkit-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);}\n 40% {-webkit-transform: translateY(30px);}\n 60% {-webkit-transform: translateY(15px);}\n}\n\n@-moz-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-moz-transform: translateY(0);}\n 40% {-moz-transform: translateY(30px);}\n 60% {-moz-transform: translateY(15px);}\n}\n\n@-ms-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-ms-transform: translateY(0);}\n 40% {-ms-transform: translateY(30px);}\n 60% {-ms-transform: translateY(15px);}\n}\n\n@-o-keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {-o-transform: translateY(0);}\n 40% {-o-transform: translateY(30px);}\n 60% {-o-transform: translateY(15px);}\n}\n@keyframes bounce {\n 0%, 20%, 50%, 80%, 100% {transform: translateY(0);}\n 40% {transform: translateY(30px);}\n 60% {transform: translateY(15px);}\n}\n\n@mixin bounce($time: .5s){\n -webkit-animation-name: bounce;\n -moz-animation-name: bounce;\n -ms-animation-name: bounce;\n -o-animation-name: bounce;\n animation-name: bounce;\n\n -webkit-animation-duration: $time;\n -moz-animation-duration: $time;\n -ms-animation-duration: $time;\n -o-animation-duration: $time;\n animation-duration: $time; \n}\n\n@mixin slideInUp($time: .5s){\n -webkit-animation-name: slideInUp;\n animation-name: slideInUp;\n\n -webkit-animation-duration: $time;\n -moz-animation-duration: $time;\n -ms-animation-duration: $time;\n -o-animation-duration: $time;\n animation-duration: $time;\n}\n\n@-webkit-keyframes slideInUp {\n from {\n -webkit-transform: translate3d(0, 30%, 0);\n transform: translate3d(0, 30%, 0);\n visibility: visible;\n opacity: 0;\n }\n\n to {\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n",null,"@mixin __shadow($distance: 3) {\n //box-shadow: 0px __remcalc($distance) __remcalc($distance) rgba(102, 110, 122, 0.1);\n}\n\n@mixin __shadow--level1 {\n @include __shadow(3);\n}\n\n@mixin __shadow--level2 {\n @include __shadow(6);\n}\n\n@mixin __shadow--level3 {\n @include __shadow(9);\n}\n\n@mixin __shadow--level4 {\n @include __shadow(12);\n}\n\n@mixin __shadow--level5 {\n @include __shadow(15);\n}\n\n\n.scielo__shadow-1{\n box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);\n}\n\n.scielo__shadow-2{\n box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);\n}\n\n.scielo__shadow-3{\n box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23);\n}\n\n.scielo__shadow-4{\n box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);\n}\n\n.scielo__shadow-5{\n box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22);\n}",":root {\n // Custom variable values only support SassScript inside `#{}`.\n @each $color, $value in $colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$variable-prefix}#{$color}: #{$value};\n }\n\n // Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$variable-prefix}gradient: #{$gradient};\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n font-size: $font-size-root;\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\nbody {\n margin: 0; // 1\n font-family: $font-family-base;\n @include font-size($font-size-base);\n font-weight: $font-weight-base;\n line-height: $line-height-base;\n color: $body-color;\n text-align: $body-text-align;\n background-color: $body-bg; // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n// 2. Set correct height and prevent the `size` attribute to make the `hr` look like an input field\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n background-color: currentColor;\n border: 0;\n opacity: $hr-opacity;\n}\n\nhr:not([size]) {\n height: $hr-height; // 2\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

`-`

` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: $headings-color;\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Duplicate behavior to the data-bs-* attribute for our tooltip plugin\n// 2. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Prevent the text-decoration to be skipped.\n\nabbr[title],\nabbr[data-bs-original-title] { // 1\n text-decoration: underline dotted; // 2\n cursor: help; // 3\n text-decoration-skip-ink: none; // 4\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: $mark-bg;\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: $link-color;\n text-decoration: $link-decoration;\n\n &:hover {\n color: $link-hover-color;\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n direction: ltr #{\"/* rtl:ignore */\"};\n unicode-bidi: bidi-override;\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: $code-color;\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`

'; + } + + ctt += ' \ + '; + + return ctt; + }, + CollectionListFill: function(data,labels,id) { + var ctt = ' \ + '; + + for(var i=0,l=data.collectionList.length;i '+data.collectionList[i].name+' ('+data.collectionList[i].Total+') \ +
'; + } + + ctt += ' \ + '; + + return ctt; + + }, + ScrollEvents: function(container,loading,labels) { + var currentPage = $(".collectionCurrentPage",container), + totalPages = $(".collectionTotalPages",container), + query = $(".collectionSearch",container), + rp = $(container).data("perpage"), + method = $(container).data("method"), + param = "method=alphabetic&rp="+rp+(query.val() != "" ? "&query="+query.val() : ""); + + $(window).off("scroll").on("scroll",function() { + if(currentPage.val() < totalPages.val()) { + $("footer").hide(); + if($(window).scrollTop() + $(window).height() == $(document).height()) { + var page = parseInt(currentPage.val()); + page++; + currentPage.val(page); + param += "&page="+page; + + Collection.JournalListFinder(param,loading,container,labels,false,false); + } + } else { + $("footer").show(); + } + }); + }, + CollapseEvents: function(container,labels) { + var method = $(container).data("method"), + query = $(".collectionSearch",container), + param = "method=alphabetic"+(query.val() != "" ? "&query="+query.val() : ""), + collapseTitle = $(".collapseTitle,.collapseTitleBlock",container); + + collapseTitle.on("click",function() { + var t = $(this), + p = t.parent(), + loading = p.find(".collectionListLoading"), + content = t.next(".collapseContent"), + cached = content.find("table tbody tr").length; + + if(content.is(":visible")) { + content.slideUp("fast"); + $(this).addClass("closed"); + } else { + if(t.is(".collapseTitleBlock")) { + content.slideDown("fast"); + loading.hide(); + $(this).removeClass("closed"); + } else { + if(cached == 0) { + var str = typeof t.data("id") != "undefined" ? t.data("id") : $("strong",this).text(); + param += "&"+method+"="+str; + Collection.JournalListFinder(param,loading,container,labels,true,false,"Collection.CollapseOpen('#"+content.attr("id")+"','#"+t.attr("id")+"')",content); + } else { + content.slideDown("fast"); + loading.hide(); + $(this).removeClass("closed"); + } + } + + } + }); + }, + CollapseOpen: function(content,title) { + $(content).slideDown("fast"); + $(title).removeClass("closed"); + } + } + Journal = { + Init: function() { + + $("#sortBy").change(function(){ + $("#sortBy option:selected" ).each(function() { + Journal.publicationSort($(this).val()); + }); + }) + + $(".scroll").on("click",function(e) { + + var d = $(this).attr("href"); + var g = d.split("#")[1]; + + if($("a[name="+g+"]").length>0){ + + var p = $("a[name="+g+"]").offset(); + $("html,body").animate({ + scrollTop: (p.top+1) + },500); + + } + }); + + }, + Bindings: function(ctn) { + if(typeof ctn == "undefined") ctn = ".journal"; + }, + publicationSort: function(valor) { + + var listas = $(".issueIndent>ul.articles"); + var qtdlista = listas.length; + + for(var t=0; t<=qtdlista; t++){ + + var ul = listas[t]; + var li = $(ul).children(); + + if(valor === 'YEAR_DESC'){ + + $(li).sort(function(a,b) { + + var dateA = parseInt($(a).data("date")), + dateB = parseInt($(b).data("date")); + + return (dateA > dateB) ? 1 : -1; + + }).each(function(){ + $(ul).append(this); + }); + + }else { + + $(li).sort(function(a,b) { + + var dateA = parseInt($(a).data("date")), + dateB = parseInt($(b).data("date")); + + return (dateA < dateB) ? 1 : -1; + + }).each(function(){ + $(ul).append(this); + }); + } + } + }, + publicatorName: function(){ + var nome = $(".namePlublisher").text(); + var qtdname = nome.length; + + if (qtdname >= 56){ + $(".namePlublisher").attr( "data-toggle", "tooltip" ); + $(".namePlublisher").attr( "title", nome ); + } + } + }; + +var Validator = { + MultipleEmails: function(val,delimiter) { + var delimiter = delimiter || ';'; + var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; + var error = true; + + var aEmails = val.split(delimiter); + + for(var i = 0; i < aEmails.length; i++) { + aEmails[i] = aEmails[i].trim(); + if(aEmails[i] == '' || filter.test(aEmails[i]) == false) + error = false; + } + + return error; + } +}; + +var Cookie = { + Get: function(cookieName,path) { + if(typeof path === "undefined") path = ""; + else path = path+"/"; + cookieName = path+cookieName; + if (document.cookie.length > 0) { + c_start = document.cookie.indexOf(cookieName + "="); + if (c_start != -1) { + c_start = c_start + cookieName.length + 1; + c_end = document.cookie.indexOf(";", c_start); + if (c_end == -1) { + c_end = document.cookie.length; + } + return unescape(document.cookie.substring(c_start, c_end)); + } + } + return ""; + }, + Set: function(cookieName, value, days, path) { + var expires; + if(typeof days !== "undefined") { + var date = new Date(); + date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); + expires = "; expires=" + date.toGMTString(); + } else + expires = ""; + if(typeof path === "undefined") path = ""; + else path = path + "/"; + + if(Cookie.Get(cookieName) != "") { + document.cookie = path+cookieName + "=" + value + "expires=Thu, 01 Jan 1970 00:00:01 GMT" + "; path=/"; + } + document.cookie = path+cookieName + "=" + value + expires + "; path=/"; + } +}; + +$(function() { + + Portal.Init(); + + if($(".searchForm").length) + SearchForm.Init(); + + if($("body.journal").length) + Journal.Init(); + + if($("body.collection, body.portal").length) + Collection.Init(); + + if($("body.portal.home").length) + $('.portal .twitter').twittie({ + dateFormat: '%b. %d, %Y', + template: '{{date}}
{{tweet}}
', + count: 3, + loadingText: 'Carregando...', + dateFormat: '%d de %B', + }); + + if($(".portal .collectionList").length) + var hash = window.location.hash; + $('.portal .collection .nav-tabs a[href="' + hash + '"]').tab('show'); + + if($(".namePlublisher").length) + Journal.publicatorName(); + +}); diff --git a/core/static/journal_about/js/modal_forms.js b/core/static/journal_about/js/modal_forms.js new file mode 100644 index 0000000..348dd8b --- /dev/null +++ b/core/static/journal_about/js/modal_forms.js @@ -0,0 +1,133 @@ +'use strict'; + +var ModalForms = { + modal_id: null, + form_id: null, + url: "/", + method: "POST", + submit_btn_id: null, + has_captcha: false, + captcha_key: null, + captcha_theme: "light", + captcha_id: null, + email_confirm_modal_id: "#modal_confirm", + success_message: null, + error_message: null, + rcaptcha: null, + + submit:function(){ + var self = this; + + $.ajax({ + type: self.method, + url: self.url, + data: $(self.form_id).serialize(), + success: function(data) + { + // Clean error message + $.each(data.fields, function(_, name){ + var field = $('#' + name); + + field.parent().removeClass("has-error"); + $('#' + name + '_error').html(''); + }); + + if (data.sent === false){ + + if (self.has_captcha === true){ + $(self.submit_btn_id).attr('disabled', 'disabled'); + self.render_captcha(); + } + + // Set error message + $.each(data.message, function(key, val){ + $('#' + key).parent().addClass("has-error"); + $('#' + key + '_error').html(val); + }); + + }else{ + $(self.modal_id).modal('toggle'); + $('.midGlyph').addClass('success'); + $('.midGlyph').html(self.success_message); + $(self.email_confirm_modal_id).modal('show'); + } + }, + error: function (data) { + $(self.modal_id).modal('toggle'); + $('.midGlyph').removeClass('success').toggleClass('unsuccess'); + $('.midGlyph').html(self.error_message); + $(self.email_confirm_modal_id).modal('show'); + } + }); + + }, + + recaptcha_callback: function() { + $(this.submit_btn_id).removeAttr('disabled'); + }, + + registry_recaptcha_modal: function(){ + var self = this; + + $(this.modal_id).on('show.bs.modal', function () { + + setTimeout(function() { + self.render_captcha(self.captcha_id, self.captcha_key, + self.captcha_theme); + }, 100); + + }); + + }, + + render_captcha: function(captcha_id, captcha_key, captcha_theme){ + + if(this.render_captcha){ + $(this.submit_btn_id).attr('disabled', 'disabled'); + } + + if (this.rcaptcha === null){ + this.rcaptcha = grecaptcha.render(captcha_id, { + sitekey: captcha_key, + theme: captcha_theme, + callback: this.recaptcha_callback.bind(this) + }); + }else{ + grecaptcha.reset(this.rcaptcha); + } + }, + + init: function(modal_id, form_id, url, method, submit_btn_id, has_captcha, + captcha_key, captcha_id, captcha_theme, email_confirm_modal_id, + success_message, error_message){ + + this.modal_id = modal_id; + this.form_id = form_id; + this.url = url; + this.method= method; + this.submit_btn_id = submit_btn_id; + this.has_captcha= has_captcha; + this.captcha_key = captcha_key; + this.captcha_theme = captcha_theme; + this.captcha_id = captcha_id; + this.email_confirm_modal_id = email_confirm_modal_id; + this.success_message = success_message; + this.error_message = error_message; + this.rcaptcha = null; + + if (this.has_captcha === true){ + this.registry_recaptcha_modal(); + } + + var self = this; + $(this.form_id).submit(function(e) { + + e.preventDefault(); + + self.submit(); + }); + + return this; + }, + +}; diff --git a/core/static/journal_about/js/moment-with-locales.js b/core/static/journal_about/js/moment-with-locales.js new file mode 100644 index 0000000..aebfa54 --- /dev/null +++ b/core/static/journal_about/js/moment-with-locales.js @@ -0,0 +1,13700 @@ +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, (function () { 'use strict'; + +var hookCallback; + +function hooks () { + return hookCallback.apply(null, arguments); +} + +// This is done to register the method called with moment() +// without creating circular dependencies. +function setHookCallback (callback) { + hookCallback = callback; +} + +function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; +} + +function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; +} + +function isObjectEmpty(obj) { + var k; + for (k in obj) { + // even if its not own property I'd still call it non-empty + return false; + } + return true; +} + +function isUndefined(input) { + return input === void 0; +} + +function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; +} + +function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; +} + +function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; +} + +function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); +} + +function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; +} + +function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); +} + +function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; +} + +function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; +} + +var some; +if (Array.prototype.some) { + some = Array.prototype.some; +} else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; +} + +var some$1 = some; + +function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some$1.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; +} + +function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; +} + +// Plugins that add properties should also add the key here (null value), +// so we can properly clone ourselves. +var momentProperties = hooks.momentProperties = []; + +function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; +} + +var updateInProgress = false; + +// Moment prototype object +function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } +} + +function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); +} + +function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } +} + +function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; +} + +// compare two arrays, return the number of differences +function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; +} + +function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } +} + +function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); +} + +var deprecations = {}; + +function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } +} + +hooks.suppressDeprecationWarnings = false; +hooks.deprecationHandler = null; + +function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; +} + +function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); +} + +function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; +} + +function Locale(config) { + if (config != null) { + this.set(config); + } +} + +var keys; + +if (Object.keys) { + keys = Object.keys; +} else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; +} + +var keys$1 = keys; + +var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' +}; + +function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; +} + +var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' +}; + +function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; +} + +var defaultInvalidDate = 'Invalid date'; + +function invalidDate () { + return this._invalidDate; +} + +var defaultOrdinal = '%d'; +var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + +function ordinal (number) { + return this._ordinal.replace('%d', number); +} + +var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + ss : '%d seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' +}; + +function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); +} + +function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); +} + +var aliases = {}; + +function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; +} + +function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; +} + +function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; +} + +var priorities = {}; + +function addUnitPriority(unit, priority) { + priorities[unit] = priority; +} + +function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; +} + +function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; +} + +function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; +} + +function set$1 (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } +} + +// MOMENTS + +function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; +} + + +function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; +} + +function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; +} + +var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + +var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + +var formatFunctions = {}; + +var formatTokenFunctions = {}; + +// token: 'M' +// padded: ['MM', 2] +// ordinal: 'Mo' +// callback: function () { this.month() + 1 } +function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } +} + +function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); +} + +function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; +} + +// format date using native date object +function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); +} + +function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; +} + +var match1 = /\d/; // 0 - 9 +var match2 = /\d\d/; // 00 - 99 +var match3 = /\d{3}/; // 000 - 999 +var match4 = /\d{4}/; // 0000 - 9999 +var match6 = /[+-]?\d{6}/; // -999999 - 999999 +var match1to2 = /\d\d?/; // 0 - 99 +var match3to4 = /\d\d\d\d?/; // 999 - 9999 +var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 +var match1to3 = /\d{1,3}/; // 0 - 999 +var match1to4 = /\d{1,4}/; // 0 - 9999 +var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + +var matchUnsigned = /\d+/; // 0 - inf +var matchSigned = /[+-]?\d+/; // -inf - inf + +var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z +var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + +var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + +// any word (or two) characters or numbers including two/three word month in arabic. +// includes scottish gaelic two word and hyphenated months +var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + +var regexes = {}; + +function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; +} + +function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); +} + +// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript +function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); +} + +function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); +} + +var tokens = {}; + +function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } +} + +function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); +} + +function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } +} + +var YEAR = 0; +var MONTH = 1; +var DATE = 2; +var HOUR = 3; +var MINUTE = 4; +var SECOND = 5; +var MILLISECOND = 6; +var WEEK = 7; +var WEEKDAY = 8; + +var indexOf; + +if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; +} else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; +} + +var indexOf$1 = indexOf; + +function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); +} + +// FORMATTING + +addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; +}); + +addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); +}); + +addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); +}); + +// ALIASES + +addUnitAlias('month', 'M'); + +// PRIORITY + +addUnitPriority('month', 8); + +// PARSING + +addRegexToken('M', match1to2); +addRegexToken('MM', match1to2, match2); +addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); +}); +addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); +}); + +addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; +}); + +addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } +}); + +// LOCALES + +var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; +var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); +function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; +} + +var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); +function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; +} + +function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } +} + +// MOMENTS + +function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; +} + +function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } +} + +function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); +} + +var defaultMonthsShortRegex = matchWord; +function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } +} + +var defaultMonthsRegex = matchWord; +function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } +} + +function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; +}); + +addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; +}); + +addFormatToken(0, ['YYYY', 4], 0, 'year'); +addFormatToken(0, ['YYYYY', 5], 0, 'year'); +addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + +// ALIASES + +addUnitAlias('year', 'y'); + +// PRIORITIES + +addUnitPriority('year', 1); + +// PARSING + +addRegexToken('Y', matchSigned); +addRegexToken('YY', match1to2, match2); +addRegexToken('YYYY', match1to4, match4); +addRegexToken('YYYYY', match1to6, match6); +addRegexToken('YYYYYY', match1to6, match6); + +addParseToken(['YYYYY', 'YYYYYY'], YEAR); +addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); +}); +addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); +}); +addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); +}); + +// HELPERS + +function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; +} + +function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; +} + +// HOOKS + +hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); +}; + +// MOMENTS + +var getSetYear = makeGetSet('FullYear', true); + +function getIsLeapYear () { + return isLeapYear(this.year()); +} + +function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date = new Date(y, m, d, h, M, s, ms); + + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; +} + +function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; +} + +// start-of-first-week - start-of-year +function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; +} + +// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday +function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; +} + +function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; +} + +function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; +} + +// FORMATTING + +addFormatToken('w', ['ww', 2], 'wo', 'week'); +addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + +// ALIASES + +addUnitAlias('week', 'w'); +addUnitAlias('isoWeek', 'W'); + +// PRIORITIES + +addUnitPriority('week', 5); +addUnitPriority('isoWeek', 5); + +// PARSING + +addRegexToken('w', match1to2); +addRegexToken('ww', match1to2, match2); +addRegexToken('W', match1to2); +addRegexToken('WW', match1to2, match2); + +addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); +}); + +// HELPERS + +// LOCALES + +function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; +} + +var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. +}; + +function localeFirstDayOfWeek () { + return this._week.dow; +} + +function localeFirstDayOfYear () { + return this._week.doy; +} + +// MOMENTS + +function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +// FORMATTING + +addFormatToken('d', 0, 'do', 'day'); + +addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); +}); + +addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); +}); + +addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); +}); + +addFormatToken('e', 0, 0, 'weekday'); +addFormatToken('E', 0, 0, 'isoWeekday'); + +// ALIASES + +addUnitAlias('day', 'd'); +addUnitAlias('weekday', 'e'); +addUnitAlias('isoWeekday', 'E'); + +// PRIORITY +addUnitPriority('day', 11); +addUnitPriority('weekday', 11); +addUnitPriority('isoWeekday', 11); + +// PARSING + +addRegexToken('d', match1to2); +addRegexToken('e', match1to2); +addRegexToken('E', match1to2); +addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); +}); +addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); +}); +addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); +}); + +addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } +}); + +addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); +}); + +// HELPERS + +function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; +} + +function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; +} + +// LOCALES + +var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); +function localeWeekdays (m, format) { + if (!m) { + return isArray(this._weekdays) ? this._weekdays : + this._weekdays['standalone']; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; +} + +var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); +function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; +} + +var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); +function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; +} + +function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } +} + +// MOMENTS + +function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } +} + +function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); +} + +function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } +} + +var defaultWeekdaysRegex = matchWord; +function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } +} + +var defaultWeekdaysShortRegex = matchWord; +function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } +} + +var defaultWeekdaysMinRegex = matchWord; +function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } +} + + +function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +function hFormat() { + return this.hours() % 12 || 12; +} + +function kFormat() { + return this.hours() || 24; +} + +addFormatToken('H', ['HH', 2], 0, 'hour'); +addFormatToken('h', ['hh', 2], 0, hFormat); +addFormatToken('k', ['kk', 2], 0, kFormat); + +addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); +}); + +addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); +}); + +addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); +} + +meridiem('a', true); +meridiem('A', false); + +// ALIASES + +addUnitAlias('hour', 'h'); + +// PRIORITY +addUnitPriority('hour', 13); + +// PARSING + +function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; +} + +addRegexToken('a', matchMeridiem); +addRegexToken('A', matchMeridiem); +addRegexToken('H', match1to2); +addRegexToken('h', match1to2); +addRegexToken('k', match1to2); +addRegexToken('HH', match1to2, match2); +addRegexToken('hh', match1to2, match2); +addRegexToken('kk', match1to2, match2); + +addRegexToken('hmm', match3to4); +addRegexToken('hmmss', match5to6); +addRegexToken('Hmm', match3to4); +addRegexToken('Hmmss', match5to6); + +addParseToken(['H', 'HH'], HOUR); +addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; +}); +addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; +}); +addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); +}); +addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); +}); + +// LOCALES + +function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); +} + +var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; +function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } +} + + +// MOMENTS + +// Setting the hour should keep the time, because the user explicitly +// specified which hour he wants. So trying to maintain the same hour (in +// a new timezone) makes sense. Adding/subtracting hours does not follow +// this rule. +var getSetHour = makeGetSet('Hours', true); + +// months +// week +// weekdays +// meridiem +var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse +}; + +// internal storage for locale config files +var locales = {}; +var localeFamilies = {}; +var globalLocale; + +function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; +} + +// pick the locale from the array +// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each +// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root +function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; +} + +function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; +} + +// This function will load locale and then set the global locale. If +// no arguments are passed in, it will simply return the current global +// locale key. +function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; +} + +function defineLocale (name, config) { + if (config !== null) { + var parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } +} + +function updateLocale(name, config) { + if (config != null) { + var locale, parentConfig = baseConfig; + // MERGE + if (locales[name] != null) { + parentConfig = locales[name]._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; +} + +// returns locale data +function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); +} + +function listLocales() { + return keys$1(locales); +} + +function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; +} + +// iso 8601 regex +// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) +var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; +var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + +var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + +var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] +]; + +// iso time formats and regexes +var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] +]; + +var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + +// date from iso format +function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } +} + +// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 +var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; + +// date and time from ref 2822 format +function configFromRFC2822(config) { + var string, match, dayFormat, + dateFormat, timeFormat, tzFormat; + var timezones = { + ' GMT': ' +0000', + ' EDT': ' -0400', + ' EST': ' -0500', + ' CDT': ' -0500', + ' CST': ' -0600', + ' MDT': ' -0600', + ' MST': ' -0700', + ' PDT': ' -0700', + ' PST': ' -0800' + }; + var military = 'YXWVUTSRQPONZABCDEFGHIKLM'; + var timezone, timezoneIndex; + + string = config._i + .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace + .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space + .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces + match = basicRfcRegex.exec(string); + + if (match) { + dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : ''; + dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY '); + timeFormat = 'HH:mm' + (match[4] ? ':ss' : ''); + + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + if (match[1]) { // day of week given + var momentDate = new Date(match[2]); + var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()]; + + if (match[1].substr(0,3) !== momentDay) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return; + } + } + + switch (match[5].length) { + case 2: // military + if (timezoneIndex === 0) { + timezone = ' +0000'; + } else { + timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12; + timezone = ((timezoneIndex < 0) ? ' -' : ' +') + + (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00'; + } + break; + case 4: // Zone + timezone = timezones[match[5]]; + break; + default: // UT or +/-9999 + timezone = timezones[' GMT']; + } + match[5] = timezone; + config._i = match.splice(1).join(''); + tzFormat = ' ZZ'; + config._f = dayFormat + dateFormat + timeFormat + tzFormat; + configFromStringAndFormat(config); + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } +} + +// date from iso format or fallback +function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); +} + +hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } +); + +// Pick the first defined of two or three arguments. +function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; +} + +function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; +} + +// convert an array to a date. +// the array should mirror the parameters below +// note: all values past the year are optional and will default to the lowest possible value. +// [year, month, day , hour, minute, second, millisecond] +function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } +} + +function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } +} + +// constant that refers to the ISO standard +hooks.ISO_8601 = function () {}; + +// constant that refers to the RFC 2822 form +hooks.RFC_2822 = function () {}; + +// date from string and format string +function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); +} + + +function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } +} + +// date from string and array of format strings +function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); +} + +function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); +} + +function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; +} + +function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; +} + +function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } +} + +function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); +} + +function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); +} + +var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } +); + +var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } +); + +// Pick a moment m from moments so that m[fn](other) is true for all +// other. This relies on the function fn to be transitive. +// +// moments should either be an array of moment objects or an array, whose +// first element is an array of moment objects. +function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; +} + +// TODO: Use [].sort instead? +function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); +} + +function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); +} + +var now = function () { + return Date.now ? Date.now() : +(new Date()); +}; + +var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + +function isDurationValid(m) { + for (var key in m) { + if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; +} + +function isValid$1() { + return this._isValid; +} + +function createInvalid$1() { + return createDuration(NaN); +} + +function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); +} + +function isDuration (obj) { + return obj instanceof Duration; +} + +function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } +} + +// FORMATTING + +function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); +} + +offset('Z', ':'); +offset('ZZ', ''); + +// PARSING + +addRegexToken('Z', matchShortOffset); +addRegexToken('ZZ', matchShortOffset); +addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); +}); + +// HELPERS + +// timezone chunker +// '+10:00' > ['10', '00'] +// '-1530' > ['-15', '30'] +var chunkOffset = /([\+\-]|\d\d)/gi; + +function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; +} + +// Return a moment from input, that is local/utc/zone equivalent to model. +function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } +} + +function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; +} + +// HOOKS + +// This function will be called whenever a moment is mutated. +// It is intended to keep the offset in sync with the timezone. +hooks.updateOffset = function () {}; + +// MOMENTS + +// keepLocalTime = true means only change the timezone, without +// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> +// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset +// +0200, so we adjust the time as needed, to be valid. +// +// Keeping the time actually adds/subtracts (one hour) +// from the actual represented time. That is why we call updateOffset +// a second time. In case it wants us to change the offset again +// _changeInProgress == true case, then we have to adjust, because +// there is no such time in the given timezone. +function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } +} + +function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } +} + +function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); +} + +function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; +} + +function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; +} + +function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; +} + +function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); +} + +function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; +} + +function isLocal () { + return this.isValid() ? !this._isUTC : false; +} + +function isUtcOffset () { + return this.isValid() ? this._isUTC : false; +} + +function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; +} + +// ASP.NET json date format regex +var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + +// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html +// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere +// and further modified to allow for strings containing both week and day +var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + +function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; +} + +createDuration.fn = Duration.prototype; +createDuration.invalid = createInvalid$1; + +function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; +} + +function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; +} + +function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; +} + +// TODO: remove 'name' arg after deprecation is removed +function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; +} + +function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } +} + +var add = createAdder(1, 'add'); +var subtract = createAdder(-1, 'subtract'); + +function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; +} + +function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); +} + +function clone () { + return new Moment(this); +} + +function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } +} + +function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } +} + +function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); +} + +function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } +} + +function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); +} + +function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); +} + +function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); +} + +function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; +} + +hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; +hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + +function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); +} + +function toISOString() { + if (!this.isValid()) { + return null; + } + var m = this.clone().utc(); + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); +} + +/** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ +function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); +} + +function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); +} + +function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); +} + +function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); +} + +// If passed a locale key, it will set the locale for this +// instance. Otherwise, it will return the locale configuration +// variables for this instance. +function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } +} + +var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } +); + +function localeData () { + return this._locale; +} + +function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; +} + +function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); +} + +function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); +} + +function unix () { + return Math.floor(this.valueOf() / 1000); +} + +function toDate () { + return new Date(this.valueOf()); +} + +function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; +} + +function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; +} + +function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; +} + +function isValid$2 () { + return isValid(this); +} + +function parsingFlags () { + return extend({}, getParsingFlags(this)); +} + +function invalidAt () { + return getParsingFlags(this).overflow; +} + +function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; +} + +// FORMATTING + +addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; +}); + +addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; +}); + +function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); +} + +addWeekYearFormatToken('gggg', 'weekYear'); +addWeekYearFormatToken('ggggg', 'weekYear'); +addWeekYearFormatToken('GGGG', 'isoWeekYear'); +addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + +// ALIASES + +addUnitAlias('weekYear', 'gg'); +addUnitAlias('isoWeekYear', 'GG'); + +// PRIORITY + +addUnitPriority('weekYear', 1); +addUnitPriority('isoWeekYear', 1); + + +// PARSING + +addRegexToken('G', matchSigned); +addRegexToken('g', matchSigned); +addRegexToken('GG', match1to2, match2); +addRegexToken('gg', match1to2, match2); +addRegexToken('GGGG', match1to4, match4); +addRegexToken('gggg', match1to4, match4); +addRegexToken('GGGGG', match1to6, match6); +addRegexToken('ggggg', match1to6, match6); + +addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); +}); + +addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); +}); + +// MOMENTS + +function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); +} + +function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); +} + +function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); +} + +function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); +} + +function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } +} + +function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; +} + +// FORMATTING + +addFormatToken('Q', 0, 'Qo', 'quarter'); + +// ALIASES + +addUnitAlias('quarter', 'Q'); + +// PRIORITY + +addUnitPriority('quarter', 7); + +// PARSING + +addRegexToken('Q', match1); +addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; +}); + +// MOMENTS + +function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); +} + +// FORMATTING + +addFormatToken('D', ['DD', 2], 'Do', 'date'); + +// ALIASES + +addUnitAlias('date', 'D'); + +// PRIOROITY +addUnitPriority('date', 9); + +// PARSING + +addRegexToken('D', match1to2); +addRegexToken('DD', match1to2, match2); +addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; +}); + +addParseToken(['D', 'DD'], DATE); +addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); +}); + +// MOMENTS + +var getSetDayOfMonth = makeGetSet('Date', true); + +// FORMATTING + +addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + +// ALIASES + +addUnitAlias('dayOfYear', 'DDD'); + +// PRIORITY +addUnitPriority('dayOfYear', 4); + +// PARSING + +addRegexToken('DDD', match1to3); +addRegexToken('DDDD', match3); +addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); +}); + +// HELPERS + +// MOMENTS + +function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); +} + +// FORMATTING + +addFormatToken('m', ['mm', 2], 0, 'minute'); + +// ALIASES + +addUnitAlias('minute', 'm'); + +// PRIORITY + +addUnitPriority('minute', 14); + +// PARSING + +addRegexToken('m', match1to2); +addRegexToken('mm', match1to2, match2); +addParseToken(['m', 'mm'], MINUTE); + +// MOMENTS + +var getSetMinute = makeGetSet('Minutes', false); + +// FORMATTING + +addFormatToken('s', ['ss', 2], 0, 'second'); + +// ALIASES + +addUnitAlias('second', 's'); + +// PRIORITY + +addUnitPriority('second', 15); + +// PARSING + +addRegexToken('s', match1to2); +addRegexToken('ss', match1to2, match2); +addParseToken(['s', 'ss'], SECOND); + +// MOMENTS + +var getSetSecond = makeGetSet('Seconds', false); + +// FORMATTING + +addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); +}); + +addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); +}); + +addFormatToken(0, ['SSS', 3], 0, 'millisecond'); +addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; +}); +addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; +}); +addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; +}); +addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; +}); +addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; +}); +addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; +}); + + +// ALIASES + +addUnitAlias('millisecond', 'ms'); + +// PRIORITY + +addUnitPriority('millisecond', 16); + +// PARSING + +addRegexToken('S', match1to3, match1); +addRegexToken('SS', match1to3, match2); +addRegexToken('SSS', match1to3, match3); + +var token; +for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); +} + +function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); +} + +for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); +} +// MOMENTS + +var getSetMillisecond = makeGetSet('Milliseconds', false); + +// FORMATTING + +addFormatToken('z', 0, 0, 'zoneAbbr'); +addFormatToken('zz', 0, 0, 'zoneName'); + +// MOMENTS + +function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; +} + +function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; +} + +var proto = Moment.prototype; + +proto.add = add; +proto.calendar = calendar$1; +proto.clone = clone; +proto.diff = diff; +proto.endOf = endOf; +proto.format = format; +proto.from = from; +proto.fromNow = fromNow; +proto.to = to; +proto.toNow = toNow; +proto.get = stringGet; +proto.invalidAt = invalidAt; +proto.isAfter = isAfter; +proto.isBefore = isBefore; +proto.isBetween = isBetween; +proto.isSame = isSame; +proto.isSameOrAfter = isSameOrAfter; +proto.isSameOrBefore = isSameOrBefore; +proto.isValid = isValid$2; +proto.lang = lang; +proto.locale = locale; +proto.localeData = localeData; +proto.max = prototypeMax; +proto.min = prototypeMin; +proto.parsingFlags = parsingFlags; +proto.set = stringSet; +proto.startOf = startOf; +proto.subtract = subtract; +proto.toArray = toArray; +proto.toObject = toObject; +proto.toDate = toDate; +proto.toISOString = toISOString; +proto.inspect = inspect; +proto.toJSON = toJSON; +proto.toString = toString; +proto.unix = unix; +proto.valueOf = valueOf; +proto.creationData = creationData; + +// Year +proto.year = getSetYear; +proto.isLeapYear = getIsLeapYear; + +// Week Year +proto.weekYear = getSetWeekYear; +proto.isoWeekYear = getSetISOWeekYear; + +// Quarter +proto.quarter = proto.quarters = getSetQuarter; + +// Month +proto.month = getSetMonth; +proto.daysInMonth = getDaysInMonth; + +// Week +proto.week = proto.weeks = getSetWeek; +proto.isoWeek = proto.isoWeeks = getSetISOWeek; +proto.weeksInYear = getWeeksInYear; +proto.isoWeeksInYear = getISOWeeksInYear; + +// Day +proto.date = getSetDayOfMonth; +proto.day = proto.days = getSetDayOfWeek; +proto.weekday = getSetLocaleDayOfWeek; +proto.isoWeekday = getSetISODayOfWeek; +proto.dayOfYear = getSetDayOfYear; + +// Hour +proto.hour = proto.hours = getSetHour; + +// Minute +proto.minute = proto.minutes = getSetMinute; + +// Second +proto.second = proto.seconds = getSetSecond; + +// Millisecond +proto.millisecond = proto.milliseconds = getSetMillisecond; + +// Offset +proto.utcOffset = getSetOffset; +proto.utc = setOffsetToUTC; +proto.local = setOffsetToLocal; +proto.parseZone = setOffsetToParsedOffset; +proto.hasAlignedHourOffset = hasAlignedHourOffset; +proto.isDST = isDaylightSavingTime; +proto.isLocal = isLocal; +proto.isUtcOffset = isUtcOffset; +proto.isUtc = isUtc; +proto.isUTC = isUtc; + +// Timezone +proto.zoneAbbr = getZoneAbbr; +proto.zoneName = getZoneName; + +// Deprecations +proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); +proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); +proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); +proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); +proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + +function createUnix (input) { + return createLocal(input * 1000); +} + +function createInZone () { + return createLocal.apply(null, arguments).parseZone(); +} + +function preParsePostFormat (string) { + return string; +} + +var proto$1 = Locale.prototype; + +proto$1.calendar = calendar; +proto$1.longDateFormat = longDateFormat; +proto$1.invalidDate = invalidDate; +proto$1.ordinal = ordinal; +proto$1.preparse = preParsePostFormat; +proto$1.postformat = preParsePostFormat; +proto$1.relativeTime = relativeTime; +proto$1.pastFuture = pastFuture; +proto$1.set = set; + +// Month +proto$1.months = localeMonths; +proto$1.monthsShort = localeMonthsShort; +proto$1.monthsParse = localeMonthsParse; +proto$1.monthsRegex = monthsRegex; +proto$1.monthsShortRegex = monthsShortRegex; + +// Week +proto$1.week = localeWeek; +proto$1.firstDayOfYear = localeFirstDayOfYear; +proto$1.firstDayOfWeek = localeFirstDayOfWeek; + +// Day of Week +proto$1.weekdays = localeWeekdays; +proto$1.weekdaysMin = localeWeekdaysMin; +proto$1.weekdaysShort = localeWeekdaysShort; +proto$1.weekdaysParse = localeWeekdaysParse; + +proto$1.weekdaysRegex = weekdaysRegex; +proto$1.weekdaysShortRegex = weekdaysShortRegex; +proto$1.weekdaysMinRegex = weekdaysMinRegex; + +// Hours +proto$1.isPM = localeIsPM; +proto$1.meridiem = localeMeridiem; + +function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); +} + +function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; +} + +// () +// (5) +// (fmt, 5) +// (fmt) +// (true) +// (true, 5) +// (true, fmt, 5) +// (true, fmt) +function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; +} + +function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); +} + +function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); +} + +function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); +} + +function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); +} + +function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); +} + +getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +// Side effect imports +hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); +hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + +var mathAbs = Math.abs; + +function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; +} + +function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); +} + +// supports only 2.0-style add(1, 's') or add(duration) +function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); +} + +// supports only 2.0-style subtract(1, 's') or subtract(duration) +function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); +} + +function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } +} + +function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; +} + +function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; +} + +function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; +} + +function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } +} + +// TODO: Use this.as('ms')? +function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); +} + +function makeAs (alias) { + return function () { + return this.as(alias); + }; +} + +var asMilliseconds = makeAs('ms'); +var asSeconds = makeAs('s'); +var asMinutes = makeAs('m'); +var asHours = makeAs('h'); +var asDays = makeAs('d'); +var asWeeks = makeAs('w'); +var asMonths = makeAs('M'); +var asYears = makeAs('y'); + +function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; +} + +function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; +} + +var milliseconds = makeGetter('milliseconds'); +var seconds = makeGetter('seconds'); +var minutes = makeGetter('minutes'); +var hours = makeGetter('hours'); +var days = makeGetter('days'); +var months = makeGetter('months'); +var years = makeGetter('years'); + +function weeks () { + return absFloor(this.days() / 7); +} + +var round = Math.round; +var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year +}; + +// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize +function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); +} + +function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); +} + +// This function allows you to set the rounding function for relative time strings +function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; +} + +// This function allows you to set a threshold for relative time strings +function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; +} + +function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); +} + +var abs$1 = Math.abs; + +function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); +} + +var proto$2 = Duration.prototype; + +proto$2.isValid = isValid$1; +proto$2.abs = abs; +proto$2.add = add$1; +proto$2.subtract = subtract$1; +proto$2.as = as; +proto$2.asMilliseconds = asMilliseconds; +proto$2.asSeconds = asSeconds; +proto$2.asMinutes = asMinutes; +proto$2.asHours = asHours; +proto$2.asDays = asDays; +proto$2.asWeeks = asWeeks; +proto$2.asMonths = asMonths; +proto$2.asYears = asYears; +proto$2.valueOf = valueOf$1; +proto$2._bubble = bubble; +proto$2.get = get$2; +proto$2.milliseconds = milliseconds; +proto$2.seconds = seconds; +proto$2.minutes = minutes; +proto$2.hours = hours; +proto$2.days = days; +proto$2.weeks = weeks; +proto$2.months = months; +proto$2.years = years; +proto$2.humanize = humanize; +proto$2.toISOString = toISOString$1; +proto$2.toString = toISOString$1; +proto$2.toJSON = toISOString$1; +proto$2.locale = locale; +proto$2.localeData = localeData; + +// Deprecations +proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); +proto$2.lang = lang; + +// Side effect imports + +// FORMATTING + +addFormatToken('X', 0, 0, 'unix'); +addFormatToken('x', 0, 0, 'valueOf'); + +// PARSING + +addRegexToken('x', matchSigned); +addRegexToken('X', matchTimestamp); +addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); +}); +addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); +}); + +// Side effect imports + +//! moment.js +//! version : 2.18.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +hooks.version = '2.18.1'; + +setHookCallback(createLocal); + +hooks.fn = proto; +hooks.min = min; +hooks.max = max; +hooks.now = now; +hooks.utc = createUTC; +hooks.unix = createUnix; +hooks.months = listMonths; +hooks.isDate = isDate; +hooks.locale = getSetGlobalLocale; +hooks.invalid = createInvalid; +hooks.duration = createDuration; +hooks.isMoment = isMoment; +hooks.weekdays = listWeekdays; +hooks.parseZone = createInZone; +hooks.localeData = getLocale; +hooks.isDuration = isDuration; +hooks.monthsShort = listMonthsShort; +hooks.weekdaysMin = listWeekdaysMin; +hooks.defineLocale = defineLocale; +hooks.updateLocale = updateLocale; +hooks.locales = listLocales; +hooks.weekdaysShort = listWeekdaysShort; +hooks.normalizeUnits = normalizeUnits; +hooks.relativeTimeRounding = getSetRelativeTimeRounding; +hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; +hooks.calendarFormat = getCalendarFormat; +hooks.prototype = proto; + +//! moment.js locale configuration +//! locale : Afrikaans [af] +//! author : Werner Mollentze : https://github.com/wernerm + +hooks.defineLocale('af', { + months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'), + weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), + weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), + meridiemParse: /vm|nm/i, + isPM : function (input) { + return /^nm$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'vm' : 'VM'; + } else { + return isLower ? 'nm' : 'NM'; + } + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Vandag om] LT', + nextDay : '[Môre om] LT', + nextWeek : 'dddd [om] LT', + lastDay : '[Gister om] LT', + lastWeek : '[Laas] dddd [om] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'oor %s', + past : '%s gelede', + s : '\'n paar sekondes', + m : '\'n minuut', + mm : '%d minute', + h : '\'n uur', + hh : '%d ure', + d : '\'n dag', + dd : '%d dae', + M : '\'n maand', + MM : '%d maande', + y : '\'n jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter + }, + week : { + dow : 1, // Maandag is die eerste dag van die week. + doy : 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Algeria) [ar-dz] +//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme + +hooks.defineLocale('ar-dz', { + months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 4 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Kuwait) [ar-kw] +//! author : Nusret Parlak: https://github.com/nusretparlak + +hooks.defineLocale('ar-kw', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Lybia) [ar-ly] +//! author : Ali Hmer: https://github.com/kikoanis + +var symbolMap = { + '1': '1', + '2': '2', + '3': '3', + '4': '4', + '5': '5', + '6': '6', + '7': '7', + '8': '8', + '9': '9', + '0': '0' +}; +var pluralForm = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; +}; +var plurals = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] +}; +var pluralize = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm(number), + str = plurals[u][pluralForm(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; +}; +var months$1 = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر' +]; + +hooks.defineLocale('ar-ly', { + months : months$1, + monthsShort : months$1, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize('s'), + m : pluralize('m'), + mm : pluralize('m'), + h : pluralize('h'), + hh : pluralize('h'), + d : pluralize('d'), + dd : pluralize('d'), + M : pluralize('M'), + MM : pluralize('M'), + y : pluralize('y'), + yy : pluralize('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Morocco) [ar-ma] +//! author : ElFadili Yassine : https://github.com/ElFadiliY +//! author : Abdel Said : https://github.com/abdelsaid + +hooks.defineLocale('ar-ma', { + months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), + weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Saudi Arabia) [ar-sa] +//! author : Suhail Alkowaileet : https://github.com/xsoh + +var symbolMap$1 = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' +}; +var numberMap = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; + +hooks.defineLocale('ar-sa', { + months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'في %s', + past : 'منذ %s', + s : 'ثوان', + m : 'دقيقة', + mm : '%d دقائق', + h : 'ساعة', + hh : '%d ساعات', + d : 'يوم', + dd : '%d أيام', + M : 'شهر', + MM : '%d أشهر', + y : 'سنة', + yy : '%d سنوات' + }, + preparse: function (string) { + return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$1[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic (Tunisia) [ar-tn] +//! author : Nader Toukabri : https://github.com/naderio + +hooks.defineLocale('ar-tn', { + months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), + weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[اليوم على الساعة] LT', + nextDay: '[غدا على الساعة] LT', + nextWeek: 'dddd [على الساعة] LT', + lastDay: '[أمس على الساعة] LT', + lastWeek: 'dddd [على الساعة] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'في %s', + past: 'منذ %s', + s: 'ثوان', + m: 'دقيقة', + mm: '%d دقائق', + h: 'ساعة', + hh: '%d ساعات', + d: 'يوم', + dd: '%d أيام', + M: 'شهر', + MM: '%d أشهر', + y: 'سنة', + yy: '%d سنوات' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Arabic [ar] +//! author : Abdel Said: https://github.com/abdelsaid +//! author : Ahmed Elkhatib +//! author : forabi https://github.com/forabi + +var symbolMap$2 = { + '1': '١', + '2': '٢', + '3': '٣', + '4': '٤', + '5': '٥', + '6': '٦', + '7': '٧', + '8': '٨', + '9': '٩', + '0': '٠' +}; +var numberMap$1 = { + '١': '1', + '٢': '2', + '٣': '3', + '٤': '4', + '٥': '5', + '٦': '6', + '٧': '7', + '٨': '8', + '٩': '9', + '٠': '0' +}; +var pluralForm$1 = function (n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; +}; +var plurals$1 = { + s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'], + m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'], + h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'], + d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'], + M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'], + y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام'] +}; +var pluralize$1 = function (u) { + return function (number, withoutSuffix, string, isFuture) { + var f = pluralForm$1(number), + str = plurals$1[u][pluralForm$1(number)]; + if (f === 2) { + str = str[withoutSuffix ? 0 : 1]; + } + return str.replace(/%d/i, number); + }; +}; +var months$2 = [ + 'كانون الثاني يناير', + 'شباط فبراير', + 'آذار مارس', + 'نيسان أبريل', + 'أيار مايو', + 'حزيران يونيو', + 'تموز يوليو', + 'آب أغسطس', + 'أيلول سبتمبر', + 'تشرين الأول أكتوبر', + 'تشرين الثاني نوفمبر', + 'كانون الأول ديسمبر' +]; + +hooks.defineLocale('ar', { + months : months$2, + monthsShort : months$2, + weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), + weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), + weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/\u200FM/\u200FYYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ص|م/, + isPM : function (input) { + return 'م' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ص'; + } else { + return 'م'; + } + }, + calendar : { + sameDay: '[اليوم عند الساعة] LT', + nextDay: '[غدًا عند الساعة] LT', + nextWeek: 'dddd [عند الساعة] LT', + lastDay: '[أمس عند الساعة] LT', + lastWeek: 'dddd [عند الساعة] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'بعد %s', + past : 'منذ %s', + s : pluralize$1('s'), + m : pluralize$1('m'), + mm : pluralize$1('m'), + h : pluralize$1('h'), + hh : pluralize$1('h'), + d : pluralize$1('d'), + dd : pluralize$1('d'), + M : pluralize$1('M'), + MM : pluralize$1('M'), + y : pluralize$1('y'), + yy : pluralize$1('y') + }, + preparse: function (string) { + return string.replace(/\u200f/g, '').replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { + return numberMap$1[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$2[match]; + }).replace(/,/g, '،'); + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Azerbaijani [az] +//! author : topchiyev : https://github.com/topchiyev + +var suffixes = { + 1: '-inci', + 5: '-inci', + 8: '-inci', + 70: '-inci', + 80: '-inci', + 2: '-nci', + 7: '-nci', + 20: '-nci', + 50: '-nci', + 3: '-üncü', + 4: '-üncü', + 100: '-üncü', + 6: '-ncı', + 9: '-uncu', + 10: '-uncu', + 30: '-uncu', + 60: '-ıncı', + 90: '-ıncı' +}; + +hooks.defineLocale('az', { + months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'), + monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), + weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'), + weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'), + weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[sabah saat] LT', + nextWeek : '[gələn həftə] dddd [saat] LT', + lastDay : '[dünən] LT', + lastWeek : '[keçən həftə] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s əvvəl', + s : 'birneçə saniyyə', + m : 'bir dəqiqə', + mm : '%d dəqiqə', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir il', + yy : '%d il' + }, + meridiemParse: /gecə|səhər|gündüz|axşam/, + isPM : function (input) { + return /^(gündüz|axşam)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'gecə'; + } else if (hour < 12) { + return 'səhər'; + } else if (hour < 17) { + return 'gündüz'; + } else { + return 'axşam'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '-ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes[a] || suffixes[b] || suffixes[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Belarusian [be] +//! author : Dmitry Demidov : https://github.com/demidov91 +//! author: Praleska: http://praleska.pro/ +//! Author : Menelion Elensúle : https://github.com/Oire + +function plural(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін', + 'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін', + 'dd': 'дзень_дні_дзён', + 'MM': 'месяц_месяцы_месяцаў', + 'yy': 'год_гады_гадоў' + }; + if (key === 'm') { + return withoutSuffix ? 'хвіліна' : 'хвіліну'; + } + else if (key === 'h') { + return withoutSuffix ? 'гадзіна' : 'гадзіну'; + } + else { + return number + ' ' + plural(format[key], +number); + } +} + +hooks.defineLocale('be', { + months : { + format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'), + standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_') + }, + monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'), + weekdays : { + format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'), + standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'), + isFormat: /\[ ?[Вв] ?(?:мінулую|наступную)? ?\] ?dddd/ + }, + weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сёння ў] LT', + nextDay: '[Заўтра ў] LT', + lastDay: '[Учора ў] LT', + nextWeek: function () { + return '[У] dddd [ў] LT'; + }, + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return '[У мінулую] dddd [ў] LT'; + case 1: + case 2: + case 4: + return '[У мінулы] dddd [ў] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'праз %s', + past : '%s таму', + s : 'некалькі секунд', + m : relativeTimeWithPlural, + mm : relativeTimeWithPlural, + h : relativeTimeWithPlural, + hh : relativeTimeWithPlural, + d : 'дзень', + dd : relativeTimeWithPlural, + M : 'месяц', + MM : relativeTimeWithPlural, + y : 'год', + yy : relativeTimeWithPlural + }, + meridiemParse: /ночы|раніцы|дня|вечара/, + isPM : function (input) { + return /^(дня|вечара)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночы'; + } else if (hour < 12) { + return 'раніцы'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечара'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы'; + case 'D': + return number + '-га'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Bulgarian [bg] +//! author : Krasen Borisov : https://github.com/kraz + +hooks.defineLocale('bg', { + months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'), + weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Днес в] LT', + nextDay : '[Утре в] LT', + nextWeek : 'dddd [в] LT', + lastDay : '[Вчера в] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[В изминалата] dddd [в] LT'; + case 1: + case 2: + case 4: + case 5: + return '[В изминалия] dddd [в] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'след %s', + past : 'преди %s', + s : 'няколко секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дни', + M : 'месец', + MM : '%d месеца', + y : 'година', + yy : '%d години' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Bengali [bn] +//! author : Kaushik Gandhi : https://github.com/kaushikgandhi + +var symbolMap$3 = { + '1': '১', + '2': '২', + '3': '৩', + '4': '৪', + '5': '৫', + '6': '৬', + '7': '৭', + '8': '৮', + '9': '৯', + '0': '০' +}; +var numberMap$2 = { + '১': '1', + '২': '2', + '৩': '3', + '৪': '4', + '৫': '5', + '৬': '6', + '৭': '7', + '৮': '8', + '৯': '9', + '০': '0' +}; + +hooks.defineLocale('bn', { + months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'), + monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'), + weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'), + weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'), + weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'), + longDateFormat : { + LT : 'A h:mm সময়', + LTS : 'A h:mm:ss সময়', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm সময়', + LLLL : 'dddd, D MMMM YYYY, A h:mm সময়' + }, + calendar : { + sameDay : '[আজ] LT', + nextDay : '[আগামীকাল] LT', + nextWeek : 'dddd, LT', + lastDay : '[গতকাল] LT', + lastWeek : '[গত] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s পরে', + past : '%s আগে', + s : 'কয়েক সেকেন্ড', + m : 'এক মিনিট', + mm : '%d মিনিট', + h : 'এক ঘন্টা', + hh : '%d ঘন্টা', + d : 'এক দিন', + dd : '%d দিন', + M : 'এক মাস', + MM : '%d মাস', + y : 'এক বছর', + yy : '%d বছর' + }, + preparse: function (string) { + return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) { + return numberMap$2[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$3[match]; + }); + }, + meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'রাত' && hour >= 4) || + (meridiem === 'দুপুর' && hour < 5) || + meridiem === 'বিকাল') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'রাত'; + } else if (hour < 10) { + return 'সকাল'; + } else if (hour < 17) { + return 'দুপুর'; + } else if (hour < 20) { + return 'বিকাল'; + } else { + return 'রাত'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Tibetan [bo] +//! author : Thupten N. Chakrishar : https://github.com/vajradog + +var symbolMap$4 = { + '1': '༡', + '2': '༢', + '3': '༣', + '4': '༤', + '5': '༥', + '6': '༦', + '7': '༧', + '8': '༨', + '9': '༩', + '0': '༠' +}; +var numberMap$3 = { + '༡': '1', + '༢': '2', + '༣': '3', + '༤': '4', + '༥': '5', + '༦': '6', + '༧': '7', + '༨': '8', + '༩': '9', + '༠': '0' +}; + +hooks.defineLocale('bo', { + months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'), + weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'), + weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[དི་རིང] LT', + nextDay : '[སང་ཉིན] LT', + nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT', + lastDay : '[ཁ་སང] LT', + lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ལ་', + past : '%s སྔན་ལ', + s : 'ལམ་སང', + m : 'སྐར་མ་གཅིག', + mm : '%d སྐར་མ', + h : 'ཆུ་ཚོད་གཅིག', + hh : '%d ཆུ་ཚོད', + d : 'ཉིན་གཅིག', + dd : '%d ཉིན་', + M : 'ཟླ་བ་གཅིག', + MM : '%d ཟླ་བ', + y : 'ལོ་གཅིག', + yy : '%d ལོ' + }, + preparse: function (string) { + return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { + return numberMap$3[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$4[match]; + }); + }, + meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'མཚན་མོ' && hour >= 4) || + (meridiem === 'ཉིན་གུང' && hour < 5) || + meridiem === 'དགོང་དག') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'མཚན་མོ'; + } else if (hour < 10) { + return 'ཞོགས་ཀས'; + } else if (hour < 17) { + return 'ཉིན་གུང'; + } else if (hour < 20) { + return 'དགོང་དག'; + } else { + return 'མཚན་མོ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Breton [br] +//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou + +function relativeTimeWithMutation(number, withoutSuffix, key) { + var format = { + 'mm': 'munutenn', + 'MM': 'miz', + 'dd': 'devezh' + }; + return number + ' ' + mutation(format[key], number); +} +function specialMutationForYears(number) { + switch (lastNumber(number)) { + case 1: + case 3: + case 4: + case 5: + case 9: + return number + ' bloaz'; + default: + return number + ' vloaz'; + } +} +function lastNumber(number) { + if (number > 9) { + return lastNumber(number % 10); + } + return number; +} +function mutation(text, number) { + if (number === 2) { + return softMutation(text); + } + return text; +} +function softMutation(text) { + var mutationTable = { + 'm': 'v', + 'b': 'v', + 'd': 'z' + }; + if (mutationTable[text.charAt(0)] === undefined) { + return text; + } + return mutationTable[text.charAt(0)] + text.substring(1); +} + +hooks.defineLocale('br', { + months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'), + monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), + weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'), + weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), + weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h[e]mm A', + LTS : 'h[e]mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [a viz] MMMM YYYY', + LLL : 'D [a viz] MMMM YYYY h[e]mm A', + LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A' + }, + calendar : { + sameDay : '[Hiziv da] LT', + nextDay : '[Warc\'hoazh da] LT', + nextWeek : 'dddd [da] LT', + lastDay : '[Dec\'h da] LT', + lastWeek : 'dddd [paset da] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'a-benn %s', + past : '%s \'zo', + s : 'un nebeud segondennoù', + m : 'ur vunutenn', + mm : relativeTimeWithMutation, + h : 'un eur', + hh : '%d eur', + d : 'un devezh', + dd : relativeTimeWithMutation, + M : 'ur miz', + MM : relativeTimeWithMutation, + y : 'ur bloaz', + yy : specialMutationForYears + }, + dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, + ordinal : function (number) { + var output = (number === 1) ? 'añ' : 'vet'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Bosnian [bs] +//! author : Nedim Cholich : https://github.com/frontyard +//! based on (hr) translation by Bojan Marković + +function translate(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } +} + +hooks.defineLocale('bs', { + months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : translate, + mm : translate, + h : translate, + hh : translate, + d : 'dan', + dd : translate, + M : 'mjesec', + MM : translate, + y : 'godinu', + yy : translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Catalan [ca] +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +hooks.defineLocale('ca', { + months : { + standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'), + format: 'de gener_de febrer_de març_d\'abril_de maig_de juny_de juliol_d\'agost_de setembre_d\'octubre_de novembre_de desembre'.split('_'), + isFormat: /D[oD]?(\s)+MMMM/ + }, + monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'), + monthsParseExact : true, + weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'), + weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), + weekdaysMin : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : '[el] D MMMM [de] YYYY', + ll : 'D MMM YYYY', + LLL : '[el] D MMMM [de] YYYY [a les] H:mm', + lll : 'D MMM YYYY, H:mm', + LLLL : '[el] dddd D MMMM [de] YYYY [a les] H:mm', + llll : 'ddd D MMM YYYY, H:mm' + }, + calendar : { + sameDay : function () { + return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextDay : function () { + return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastDay : function () { + return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'd\'aquí %s', + past : 'fa %s', + s : 'uns segons', + m : 'un minut', + mm : '%d minuts', + h : 'una hora', + hh : '%d hores', + d : 'un dia', + dd : '%d dies', + M : 'un mes', + MM : '%d mesos', + y : 'un any', + yy : '%d anys' + }, + dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, + ordinal : function (number, period) { + var output = (number === 1) ? 'r' : + (number === 2) ? 'n' : + (number === 3) ? 'r' : + (number === 4) ? 't' : 'è'; + if (period === 'w' || period === 'W') { + output = 'a'; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Czech [cs] +//! author : petrbela : https://github.com/petrbela + +var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'); +var monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'); +function plural$1(n) { + return (n > 1) && (n < 5) && (~~(n / 10) !== 1); +} +function translate$1(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'minuty' : 'minut'); + } else { + return result + 'minutami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'hodiny' : 'hodin'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'den' : 'dnem'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'dny' : 'dní'); + } else { + return result + 'dny'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'měsíce' : 'měsíců'); + } else { + return result + 'měsíci'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokem'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural$1(number) ? 'roky' : 'let'); + } else { + return result + 'lety'; + } + break; + } +} + +hooks.defineLocale('cs', { + months : months$3, + monthsShort : monthsShort, + monthsParse : (function (months, monthsShort) { + var i, _monthsParse = []; + for (i = 0; i < 12; i++) { + // use custom parser to solve problem with July (červenec) + _monthsParse[i] = new RegExp('^' + months[i] + '$|^' + monthsShort[i] + '$', 'i'); + } + return _monthsParse; + }(months$3, monthsShort)), + shortMonthsParse : (function (monthsShort) { + var i, _shortMonthsParse = []; + for (i = 0; i < 12; i++) { + _shortMonthsParse[i] = new RegExp('^' + monthsShort[i] + '$', 'i'); + } + return _shortMonthsParse; + }(monthsShort)), + longMonthsParse : (function (months) { + var i, _longMonthsParse = []; + for (i = 0; i < 12; i++) { + _longMonthsParse[i] = new RegExp('^' + months[i] + '$', 'i'); + } + return _longMonthsParse; + }(months$3)), + weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'), + weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'), + weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm', + l : 'D. M. YYYY' + }, + calendar : { + sameDay: '[dnes v] LT', + nextDay: '[zítra v] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v neděli v] LT'; + case 1: + case 2: + return '[v] dddd [v] LT'; + case 3: + return '[ve středu v] LT'; + case 4: + return '[ve čtvrtek v] LT'; + case 5: + return '[v pátek v] LT'; + case 6: + return '[v sobotu v] LT'; + } + }, + lastDay: '[včera v] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulou neděli v] LT'; + case 1: + case 2: + return '[minulé] dddd [v] LT'; + case 3: + return '[minulou středu v] LT'; + case 4: + case 5: + return '[minulý] dddd [v] LT'; + case 6: + return '[minulou sobotu v] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'před %s', + s : translate$1, + m : translate$1, + mm : translate$1, + h : translate$1, + hh : translate$1, + d : translate$1, + dd : translate$1, + M : translate$1, + MM : translate$1, + y : translate$1, + yy : translate$1 + }, + dayOfMonthOrdinalParse : /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Chuvash [cv] +//! author : Anatoly Mironov : https://github.com/mirontoli + +hooks.defineLocale('cv', { + months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'), + monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'), + weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'), + weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'), + weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]', + LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm', + LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm' + }, + calendar : { + sameDay: '[Паян] LT [сехетре]', + nextDay: '[Ыран] LT [сехетре]', + lastDay: '[Ӗнер] LT [сехетре]', + nextWeek: '[Ҫитес] dddd LT [сехетре]', + lastWeek: '[Иртнӗ] dddd LT [сехетре]', + sameElse: 'L' + }, + relativeTime : { + future : function (output) { + var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран'; + return output + affix; + }, + past : '%s каялла', + s : 'пӗр-ик ҫеккунт', + m : 'пӗр минут', + mm : '%d минут', + h : 'пӗр сехет', + hh : '%d сехет', + d : 'пӗр кун', + dd : '%d кун', + M : 'пӗр уйӑх', + MM : '%d уйӑх', + y : 'пӗр ҫул', + yy : '%d ҫул' + }, + dayOfMonthOrdinalParse: /\d{1,2}-мӗш/, + ordinal : '%d-мӗш', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Welsh [cy] +//! author : Robert Allen : https://github.com/robgallen +//! author : https://github.com/ryangreaves + +hooks.defineLocale('cy', { + months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'), + monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'), + weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'), + weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), + weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), + weekdaysParseExact : true, + // time formats are the same as en-gb + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[Heddiw am] LT', + nextDay: '[Yfory am] LT', + nextWeek: 'dddd [am] LT', + lastDay: '[Ddoe am] LT', + lastWeek: 'dddd [diwethaf am] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'mewn %s', + past: '%s yn ôl', + s: 'ychydig eiliadau', + m: 'munud', + mm: '%d munud', + h: 'awr', + hh: '%d awr', + d: 'diwrnod', + dd: '%d diwrnod', + M: 'mis', + MM: '%d mis', + y: 'blwyddyn', + yy: '%d flynedd' + }, + dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, + // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh + ordinal: function (number) { + var b = number, + output = '', + lookup = [ + '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed + 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed + ]; + if (b > 20) { + if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { + output = 'fed'; // not 30ain, 70ain or 90ain + } else { + output = 'ain'; + } + } else if (b > 0) { + output = lookup[b]; + } + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Danish [da] +//! author : Ulrik Nielsen : https://github.com/mrbase + +hooks.defineLocale('da', { + months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm' + }, + calendar : { + sameDay : '[i dag kl.] LT', + nextDay : '[i morgen kl.] LT', + nextWeek : 'på dddd [kl.] LT', + lastDay : '[i går kl.] LT', + lastWeek : '[i] dddd[s kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s siden', + s : 'få sekunder', + m : 'et minut', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dage', + M : 'en måned', + MM : '%d måneder', + y : 'et år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : German (Austria) [de-at] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Martin Groller : https://github.com/MadMG +//! author : Mikolaj Dadela : https://github.com/mik01aj + +function processRelativeTime(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('de-at', { + months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime, + mm : '%d Minuten', + h : processRelativeTime, + hh : '%d Stunden', + d : processRelativeTime, + dd : processRelativeTime, + M : processRelativeTime, + MM : processRelativeTime, + y : processRelativeTime, + yy : processRelativeTime + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : German (Switzerland) [de-ch] +//! author : sschueller : https://github.com/sschueller + +// based on: https://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de# + +function processRelativeTime$1(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('de-ch', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT: 'HH.mm', + LTS: 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH.mm', + LLLL : 'dddd, D. MMMM YYYY HH.mm' + }, + calendar : { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime$1, + mm : '%d Minuten', + h : processRelativeTime$1, + hh : '%d Stunden', + d : processRelativeTime$1, + dd : processRelativeTime$1, + M : processRelativeTime$1, + MM : processRelativeTime$1, + y : processRelativeTime$1, + yy : processRelativeTime$1 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : German [de] +//! author : lluchs : https://github.com/lluchs +//! author: Menelion Elensúle: https://github.com/Oire +//! author : Mikolaj Dadela : https://github.com/mik01aj + +function processRelativeTime$2(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eine Minute', 'einer Minute'], + 'h': ['eine Stunde', 'einer Stunde'], + 'd': ['ein Tag', 'einem Tag'], + 'dd': [number + ' Tage', number + ' Tagen'], + 'M': ['ein Monat', 'einem Monat'], + 'MM': [number + ' Monate', number + ' Monaten'], + 'y': ['ein Jahr', 'einem Jahr'], + 'yy': [number + ' Jahre', number + ' Jahren'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('de', { + months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'), + weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), + weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY HH:mm', + LLLL : 'dddd, D. MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[heute um] LT [Uhr]', + sameElse: 'L', + nextDay: '[morgen um] LT [Uhr]', + nextWeek: 'dddd [um] LT [Uhr]', + lastDay: '[gestern um] LT [Uhr]', + lastWeek: '[letzten] dddd [um] LT [Uhr]' + }, + relativeTime : { + future : 'in %s', + past : 'vor %s', + s : 'ein paar Sekunden', + m : processRelativeTime$2, + mm : '%d Minuten', + h : processRelativeTime$2, + hh : '%d Stunden', + d : processRelativeTime$2, + dd : processRelativeTime$2, + M : processRelativeTime$2, + MM : processRelativeTime$2, + y : processRelativeTime$2, + yy : processRelativeTime$2 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Maldivian [dv] +//! author : Jawish Hameed : https://github.com/jawish + +var months$4 = [ + 'ޖެނުއަރީ', + 'ފެބްރުއަރީ', + 'މާރިޗު', + 'އޭޕްރީލު', + 'މޭ', + 'ޖޫން', + 'ޖުލައި', + 'އޯގަސްޓު', + 'ސެޕްޓެމްބަރު', + 'އޮކްޓޯބަރު', + 'ނޮވެމްބަރު', + 'ޑިސެމްބަރު' +]; +var weekdays = [ + 'އާދިއްތަ', + 'ހޯމަ', + 'އަންގާރަ', + 'ބުދަ', + 'ބުރާސްފަތި', + 'ހުކުރު', + 'ހޮނިހިރު' +]; + +hooks.defineLocale('dv', { + months : months$4, + monthsShort : months$4, + weekdays : weekdays, + weekdaysShort : weekdays, + weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'), + longDateFormat : { + + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'D/M/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + meridiemParse: /މކ|މފ/, + isPM : function (input) { + return 'މފ' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'މކ'; + } else { + return 'މފ'; + } + }, + calendar : { + sameDay : '[މިއަދު] LT', + nextDay : '[މާދަމާ] LT', + nextWeek : 'dddd LT', + lastDay : '[އިއްޔެ] LT', + lastWeek : '[ފާއިތުވި] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ތެރޭގައި %s', + past : 'ކުރިން %s', + s : 'ސިކުންތުކޮޅެއް', + m : 'މިނިޓެއް', + mm : 'މިނިޓު %d', + h : 'ގަޑިއިރެއް', + hh : 'ގަޑިއިރު %d', + d : 'ދުވަހެއް', + dd : 'ދުވަސް %d', + M : 'މަހެއް', + MM : 'މަސް %d', + y : 'އަހަރެއް', + yy : 'އަހަރު %d' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 7, // Sunday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Greek [el] +//! author : Aggelos Karalias : https://github.com/mehiel + +hooks.defineLocale('el', { + monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'), + monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'), + months : function (momentToFormat, format) { + if (!momentToFormat) { + return this._monthsNominativeEl; + } else if (/D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM' + return this._monthsGenitiveEl[momentToFormat.month()]; + } else { + return this._monthsNominativeEl[momentToFormat.month()]; + } + }, + monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'), + weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'), + weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'), + weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'), + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'μμ' : 'ΜΜ'; + } else { + return isLower ? 'πμ' : 'ΠΜ'; + } + }, + isPM : function (input) { + return ((input + '').toLowerCase()[0] === 'μ'); + }, + meridiemParse : /[ΠΜ]\.?Μ?\.?/i, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendarEl : { + sameDay : '[Σήμερα {}] LT', + nextDay : '[Αύριο {}] LT', + nextWeek : 'dddd [{}] LT', + lastDay : '[Χθες {}] LT', + lastWeek : function () { + switch (this.day()) { + case 6: + return '[το προηγούμενο] dddd [{}] LT'; + default: + return '[την προηγούμενη] dddd [{}] LT'; + } + }, + sameElse : 'L' + }, + calendar : function (key, mom) { + var output = this._calendarEl[key], + hours = mom && mom.hours(); + if (isFunction(output)) { + output = output.apply(mom); + } + return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις')); + }, + relativeTime : { + future : 'σε %s', + past : '%s πριν', + s : 'λίγα δευτερόλεπτα', + m : 'ένα λεπτό', + mm : '%d λεπτά', + h : 'μία ώρα', + hh : '%d ώρες', + d : 'μία μέρα', + dd : '%d μέρες', + M : 'ένας μήνας', + MM : '%d μήνες', + y : 'ένας χρόνος', + yy : '%d χρόνια' + }, + dayOfMonthOrdinalParse: /\d{1,2}η/, + ordinal: '%dη', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (Australia) [en-au] +//! author : Jared Morse : https://github.com/jarcoal + +hooks.defineLocale('en-au', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (Canada) [en-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca + +hooks.defineLocale('en-ca', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'YYYY-MM-DD', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +//! moment.js locale configuration +//! locale : English (United Kingdom) [en-gb] +//! author : Chris Gedrim : https://github.com/chrisgedrim + +hooks.defineLocale('en-gb', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (Ireland) [en-ie] +//! author : Chris Cartlidge : https://github.com/chriscartlidge + +hooks.defineLocale('en-ie', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : English (New Zealand) [en-nz] +//! author : Luke McGregor : https://github.com/lukemcgregor + +hooks.defineLocale('en-nz', { + months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), + weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'), + weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), + weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Esperanto [eo] +//! author : Colin Dean : https://github.com/colindean +//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia +//! comment : miestasmia corrected the translation by colindean + +hooks.defineLocale('eo', { + months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec'.split('_'), + weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'), + weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'), + weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D[-a de] MMMM, YYYY', + LLL : 'D[-a de] MMMM, YYYY HH:mm', + LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm' + }, + meridiemParse: /[ap]\.t\.m/i, + isPM: function (input) { + return input.charAt(0).toLowerCase() === 'p'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'p.t.m.' : 'P.T.M.'; + } else { + return isLower ? 'a.t.m.' : 'A.T.M.'; + } + }, + calendar : { + sameDay : '[Hodiaŭ je] LT', + nextDay : '[Morgaŭ je] LT', + nextWeek : 'dddd [je] LT', + lastDay : '[Hieraŭ je] LT', + lastWeek : '[pasinta] dddd [je] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'post %s', + past : 'antaŭ %s', + s : 'sekundoj', + m : 'minuto', + mm : '%d minutoj', + h : 'horo', + hh : '%d horoj', + d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo + dd : '%d tagoj', + M : 'monato', + MM : '%d monatoj', + y : 'jaro', + yy : '%d jaroj' + }, + dayOfMonthOrdinalParse: /\d{1,2}a/, + ordinal : '%da', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Spanish (Dominican Republic) [es-do] + +var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +hooks.defineLocale('es-do', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort$1[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY h:mm A', + LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc + +var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +hooks.defineLocale('es', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot$1; + } else if (/-MMM-/.test(format)) { + return monthsShort$2[m.month()]; + } else { + return monthsShortDot$1[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Estonian [et] +//! author : Henry Kehlmann : https://github.com/madhenry +//! improvements : Illimar Tambek : https://github.com/ragulka + +function processRelativeTime$3(number, withoutSuffix, key, isFuture) { + var format = { + 's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'], + 'm' : ['ühe minuti', 'üks minut'], + 'mm': [number + ' minuti', number + ' minutit'], + 'h' : ['ühe tunni', 'tund aega', 'üks tund'], + 'hh': [number + ' tunni', number + ' tundi'], + 'd' : ['ühe päeva', 'üks päev'], + 'M' : ['kuu aja', 'kuu aega', 'üks kuu'], + 'MM': [number + ' kuu', number + ' kuud'], + 'y' : ['ühe aasta', 'aasta', 'üks aasta'], + 'yy': [number + ' aasta', number + ' aastat'] + }; + if (withoutSuffix) { + return format[key][2] ? format[key][2] : format[key][1]; + } + return isFuture ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('et', { + months : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'), + monthsShort : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'), + weekdays : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'), + weekdaysShort : 'P_E_T_K_N_R_L'.split('_'), + weekdaysMin : 'P_E_T_K_N_R_L'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Täna,] LT', + nextDay : '[Homme,] LT', + nextWeek : '[Järgmine] dddd LT', + lastDay : '[Eile,] LT', + lastWeek : '[Eelmine] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s pärast', + past : '%s tagasi', + s : processRelativeTime$3, + m : processRelativeTime$3, + mm : processRelativeTime$3, + h : processRelativeTime$3, + hh : processRelativeTime$3, + d : processRelativeTime$3, + dd : '%d päeva', + M : processRelativeTime$3, + MM : processRelativeTime$3, + y : processRelativeTime$3, + yy : processRelativeTime$3 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Basque [eu] +//! author : Eneko Illarramendi : https://github.com/eillarra + +hooks.defineLocale('eu', { + months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'), + monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'), + monthsParseExact : true, + weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'), + weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'), + weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY[ko] MMMM[ren] D[a]', + LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm', + LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', + l : 'YYYY-M-D', + ll : 'YYYY[ko] MMM D[a]', + lll : 'YYYY[ko] MMM D[a] HH:mm', + llll : 'ddd, YYYY[ko] MMM D[a] HH:mm' + }, + calendar : { + sameDay : '[gaur] LT[etan]', + nextDay : '[bihar] LT[etan]', + nextWeek : 'dddd LT[etan]', + lastDay : '[atzo] LT[etan]', + lastWeek : '[aurreko] dddd LT[etan]', + sameElse : 'L' + }, + relativeTime : { + future : '%s barru', + past : 'duela %s', + s : 'segundo batzuk', + m : 'minutu bat', + mm : '%d minutu', + h : 'ordu bat', + hh : '%d ordu', + d : 'egun bat', + dd : '%d egun', + M : 'hilabete bat', + MM : '%d hilabete', + y : 'urte bat', + yy : '%d urte' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Persian [fa] +//! author : Ebrahim Byagowi : https://github.com/ebraminio + +var symbolMap$5 = { + '1': '۱', + '2': '۲', + '3': '۳', + '4': '۴', + '5': '۵', + '6': '۶', + '7': '۷', + '8': '۸', + '9': '۹', + '0': '۰' +}; +var numberMap$4 = { + '۱': '1', + '۲': '2', + '۳': '3', + '۴': '4', + '۵': '5', + '۶': '6', + '۷': '7', + '۸': '8', + '۹': '9', + '۰': '0' +}; + +hooks.defineLocale('fa', { + months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'), + weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'), + weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + meridiemParse: /قبل از ظهر|بعد از ظهر/, + isPM: function (input) { + return /بعد از ظهر/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'قبل از ظهر'; + } else { + return 'بعد از ظهر'; + } + }, + calendar : { + sameDay : '[امروز ساعت] LT', + nextDay : '[فردا ساعت] LT', + nextWeek : 'dddd [ساعت] LT', + lastDay : '[دیروز ساعت] LT', + lastWeek : 'dddd [پیش] [ساعت] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'در %s', + past : '%s پیش', + s : 'چند ثانیه', + m : 'یک دقیقه', + mm : '%d دقیقه', + h : 'یک ساعت', + hh : '%d ساعت', + d : 'یک روز', + dd : '%d روز', + M : 'یک ماه', + MM : '%d ماه', + y : 'یک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/[۰-۹]/g, function (match) { + return numberMap$4[match]; + }).replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$5[match]; + }).replace(/,/g, '،'); + }, + dayOfMonthOrdinalParse: /\d{1,2}م/, + ordinal : '%dم', + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Finnish [fi] +//! author : Tarmo Aidantausta : https://github.com/bleadof + +var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '); +var numbersFuture = [ + 'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', + numbersPast[7], numbersPast[8], numbersPast[9] + ]; +function translate$2(number, withoutSuffix, key, isFuture) { + var result = ''; + switch (key) { + case 's': + return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; + case 'm': + return isFuture ? 'minuutin' : 'minuutti'; + case 'mm': + result = isFuture ? 'minuutin' : 'minuuttia'; + break; + case 'h': + return isFuture ? 'tunnin' : 'tunti'; + case 'hh': + result = isFuture ? 'tunnin' : 'tuntia'; + break; + case 'd': + return isFuture ? 'päivän' : 'päivä'; + case 'dd': + result = isFuture ? 'päivän' : 'päivää'; + break; + case 'M': + return isFuture ? 'kuukauden' : 'kuukausi'; + case 'MM': + result = isFuture ? 'kuukauden' : 'kuukautta'; + break; + case 'y': + return isFuture ? 'vuoden' : 'vuosi'; + case 'yy': + result = isFuture ? 'vuoden' : 'vuotta'; + break; + } + result = verbalNumber(number, isFuture) + ' ' + result; + return result; +} +function verbalNumber(number, isFuture) { + return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number; +} + +hooks.defineLocale('fi', { + months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'), + monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'), + weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'), + weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'), + weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'Do MMMM[ta] YYYY', + LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm', + LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', + l : 'D.M.YYYY', + ll : 'Do MMM YYYY', + lll : 'Do MMM YYYY, [klo] HH.mm', + llll : 'ddd, Do MMM YYYY, [klo] HH.mm' + }, + calendar : { + sameDay : '[tänään] [klo] LT', + nextDay : '[huomenna] [klo] LT', + nextWeek : 'dddd [klo] LT', + lastDay : '[eilen] [klo] LT', + lastWeek : '[viime] dddd[na] [klo] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s päästä', + past : '%s sitten', + s : translate$2, + m : translate$2, + mm : translate$2, + h : translate$2, + hh : translate$2, + d : translate$2, + dd : translate$2, + M : translate$2, + MM : translate$2, + y : translate$2, + yy : translate$2 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Faroese [fo] +//! author : Ragnar Johannesen : https://github.com/ragnar123 + +hooks.defineLocale('fo', { + months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), + weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), + weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D. MMMM, YYYY HH:mm' + }, + calendar : { + sameDay : '[Í dag kl.] LT', + nextDay : '[Í morgin kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[Í gjár kl.] LT', + lastWeek : '[síðstu] dddd [kl] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'um %s', + past : '%s síðani', + s : 'fá sekund', + m : 'ein minutt', + mm : '%d minuttir', + h : 'ein tími', + hh : '%d tímar', + d : 'ein dagur', + dd : '%d dagar', + M : 'ein mánaði', + MM : '%d mánaðir', + y : 'eitt ár', + yy : '%d ár' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : French (Canada) [fr-ca] +//! author : Jonathan Abourbih : https://github.com/jonbca + +hooks.defineLocale('fr-ca', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Aujourd’hui à] LT', + nextDay : '[Demain à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[Hier à] LT', + lastWeek : 'dddd [dernier à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, + ordinal : function (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + } +}); + +//! moment.js locale configuration +//! locale : French (Switzerland) [fr-ch] +//! author : Gaspard Bucher : https://github.com/gaspard + +hooks.defineLocale('fr-ch', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Aujourd’hui à] LT', + nextDay : '[Demain à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[Hier à] LT', + lastWeek : 'dddd [dernier à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, + ordinal : function (number, period) { + switch (period) { + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'D': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : French [fr] +//! author : John Fischer : https://github.com/jfroffice + +hooks.defineLocale('fr', { + months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), + monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), + monthsParseExact : true, + weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), + weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), + weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Aujourd’hui à] LT', + nextDay : '[Demain à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[Hier à] LT', + lastWeek : 'dddd [dernier à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dans %s', + past : 'il y a %s', + s : 'quelques secondes', + m : 'une minute', + mm : '%d minutes', + h : 'une heure', + hh : '%d heures', + d : 'un jour', + dd : '%d jours', + M : 'un mois', + MM : '%d mois', + y : 'un an', + yy : '%d ans' + }, + dayOfMonthOrdinalParse: /\d{1,2}(er|)/, + ordinal : function (number, period) { + switch (period) { + // TODO: Return 'e' when day of month > 1. Move this case inside + // block for masculine words below. + // See https://github.com/moment/moment/issues/3375 + case 'D': + return number + (number === 1 ? 'er' : ''); + + // Words with masculine grammatical gender: mois, trimestre, jour + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + return number + (number === 1 ? 'er' : 'e'); + + // Words with feminine grammatical gender: semaine + case 'w': + case 'W': + return number + (number === 1 ? 're' : 'e'); + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Frisian [fy] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v + +var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'); +var monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'); + +hooks.defineLocale('fy', { + months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots[m.month()]; + } else { + return monthsShortWithDots[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'), + weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'), + weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[hjoed om] LT', + nextDay: '[moarn om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[juster om] LT', + lastWeek: '[ôfrûne] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'oer %s', + past : '%s lyn', + s : 'in pear sekonden', + m : 'ien minút', + mm : '%d minuten', + h : 'ien oere', + hh : '%d oeren', + d : 'ien dei', + dd : '%d dagen', + M : 'ien moanne', + MM : '%d moannen', + y : 'ien jier', + yy : '%d jierren' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Scottish Gaelic [gd] +//! author : Jon Ashdown : https://github.com/jonashdown + +var months$5 = [ + 'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd' +]; + +var monthsShort$3 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh']; + +var weekdays$1 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne']; + +var weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis']; + +var weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa']; + +hooks.defineLocale('gd', { + months : months$5, + monthsShort : monthsShort$3, + monthsParseExact : true, + weekdays : weekdays$1, + weekdaysShort : weekdaysShort, + weekdaysMin : weekdaysMin, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[An-diugh aig] LT', + nextDay : '[A-màireach aig] LT', + nextWeek : 'dddd [aig] LT', + lastDay : '[An-dè aig] LT', + lastWeek : 'dddd [seo chaidh] [aig] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ann an %s', + past : 'bho chionn %s', + s : 'beagan diogan', + m : 'mionaid', + mm : '%d mionaidean', + h : 'uair', + hh : '%d uairean', + d : 'latha', + dd : '%d latha', + M : 'mìos', + MM : '%d mìosan', + y : 'bliadhna', + yy : '%d bliadhna' + }, + dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/, + ordinal : function (number) { + var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Galician [gl] +//! author : Juan G. Hurtado : https://github.com/juanghurtado + +hooks.defineLocale('gl', { + months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'), + monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextDay : function () { + return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT'; + }, + nextWeek : function () { + return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + lastDay : function () { + return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT'; + }, + lastWeek : function () { + return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : function (str) { + if (str.indexOf('un') === 0) { + return 'n' + str; + } + return 'en ' + str; + }, + past : 'hai %s', + s : 'uns segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'unha hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Konkani Latin script [gom-latn] +//! author : The Discoverer : https://github.com/WikiDiscoverer + +function processRelativeTime$4(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['thodde secondanim', 'thodde second'], + 'm': ['eka mintan', 'ek minute'], + 'mm': [number + ' mintanim', number + ' mintam'], + 'h': ['eka horan', 'ek hor'], + 'hh': [number + ' horanim', number + ' hor'], + 'd': ['eka disan', 'ek dis'], + 'dd': [number + ' disanim', number + ' dis'], + 'M': ['eka mhoinean', 'ek mhoino'], + 'MM': [number + ' mhoineanim', number + ' mhoine'], + 'y': ['eka vorsan', 'ek voros'], + 'yy': [number + ' vorsanim', number + ' vorsam'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} + +hooks.defineLocale('gom-latn', { + months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'), + monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'), + weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), + weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'A h:mm [vazta]', + LTS : 'A h:mm:ss [vazta]', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY A h:mm [vazta]', + LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]', + llll: 'ddd, D MMM YYYY, A h:mm [vazta]' + }, + calendar : { + sameDay: '[Aiz] LT', + nextDay: '[Faleam] LT', + nextWeek: '[Ieta to] dddd[,] LT', + lastDay: '[Kal] LT', + lastWeek: '[Fatlo] dddd[,] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s', + past : '%s adim', + s : processRelativeTime$4, + m : processRelativeTime$4, + mm : processRelativeTime$4, + h : processRelativeTime$4, + hh : processRelativeTime$4, + d : processRelativeTime$4, + dd : processRelativeTime$4, + M : processRelativeTime$4, + MM : processRelativeTime$4, + y : processRelativeTime$4, + yy : processRelativeTime$4 + }, + dayOfMonthOrdinalParse : /\d{1,2}(er)/, + ordinal : function (number, period) { + switch (period) { + // the ordinal 'er' only applies to day of the month + case 'D': + return number + 'er'; + default: + case 'M': + case 'Q': + case 'DDD': + case 'd': + case 'w': + case 'W': + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + }, + meridiemParse: /rati|sokalli|donparam|sanje/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'rati') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'sokalli') { + return hour; + } else if (meridiem === 'donparam') { + return hour > 12 ? hour : hour + 12; + } else if (meridiem === 'sanje') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'rati'; + } else if (hour < 12) { + return 'sokalli'; + } else if (hour < 16) { + return 'donparam'; + } else if (hour < 20) { + return 'sanje'; + } else { + return 'rati'; + } + } +}); + +//! moment.js locale configuration +//! locale : Hebrew [he] +//! author : Tomer Cohen : https://github.com/tomer +//! author : Moshe Simantov : https://github.com/DevelopmentIL +//! author : Tal Ater : https://github.com/TalAter + +hooks.defineLocale('he', { + months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'), + monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'), + weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'), + weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'), + weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [ב]MMMM YYYY', + LLL : 'D [ב]MMMM YYYY HH:mm', + LLLL : 'dddd, D [ב]MMMM YYYY HH:mm', + l : 'D/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay : '[היום ב־]LT', + nextDay : '[מחר ב־]LT', + nextWeek : 'dddd [בשעה] LT', + lastDay : '[אתמול ב־]LT', + lastWeek : '[ביום] dddd [האחרון בשעה] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'בעוד %s', + past : 'לפני %s', + s : 'מספר שניות', + m : 'דקה', + mm : '%d דקות', + h : 'שעה', + hh : function (number) { + if (number === 2) { + return 'שעתיים'; + } + return number + ' שעות'; + }, + d : 'יום', + dd : function (number) { + if (number === 2) { + return 'יומיים'; + } + return number + ' ימים'; + }, + M : 'חודש', + MM : function (number) { + if (number === 2) { + return 'חודשיים'; + } + return number + ' חודשים'; + }, + y : 'שנה', + yy : function (number) { + if (number === 2) { + return 'שנתיים'; + } else if (number % 10 === 0 && number !== 10) { + return number + ' שנה'; + } + return number + ' שנים'; + } + }, + meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i, + isPM : function (input) { + return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 5) { + return 'לפנות בוקר'; + } else if (hour < 10) { + return 'בבוקר'; + } else if (hour < 12) { + return isLower ? 'לפנה"צ' : 'לפני הצהריים'; + } else if (hour < 18) { + return isLower ? 'אחה"צ' : 'אחרי הצהריים'; + } else { + return 'בערב'; + } + } +}); + +//! moment.js locale configuration +//! locale : Hindi [hi] +//! author : Mayank Singhal : https://github.com/mayanksinghal + +var symbolMap$6 = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap$5 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +hooks.defineLocale('hi', { + months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'), + monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'), + monthsParseExact: true, + weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm बजे', + LTS : 'A h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, A h:mm बजे' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[कल] LT', + nextWeek : 'dddd, LT', + lastDay : '[कल] LT', + lastWeek : '[पिछले] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s में', + past : '%s पहले', + s : 'कुछ ही क्षण', + m : 'एक मिनट', + mm : '%d मिनट', + h : 'एक घंटा', + hh : '%d घंटे', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महीने', + MM : '%d महीने', + y : 'एक वर्ष', + yy : '%d वर्ष' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap$5[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$6[match]; + }); + }, + // Hindi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. + meridiemParse: /रात|सुबह|दोपहर|शाम/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सुबह') { + return hour; + } else if (meridiem === 'दोपहर') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'शाम') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'रात'; + } else if (hour < 10) { + return 'सुबह'; + } else if (hour < 17) { + return 'दोपहर'; + } else if (hour < 20) { + return 'शाम'; + } else { + return 'रात'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Croatian [hr] +//! author : Bojan Marković : https://github.com/bmarkovic + +function translate$3(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'jedna minuta' : 'jedne minute'; + case 'mm': + if (number === 1) { + result += 'minuta'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'minute'; + } else { + result += 'minuta'; + } + return result; + case 'h': + return withoutSuffix ? 'jedan sat' : 'jednog sata'; + case 'hh': + if (number === 1) { + result += 'sat'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'sata'; + } else { + result += 'sati'; + } + return result; + case 'dd': + if (number === 1) { + result += 'dan'; + } else { + result += 'dana'; + } + return result; + case 'MM': + if (number === 1) { + result += 'mjesec'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'mjeseca'; + } else { + result += 'mjeseci'; + } + return result; + case 'yy': + if (number === 1) { + result += 'godina'; + } else if (number === 2 || number === 3 || number === 4) { + result += 'godine'; + } else { + result += 'godina'; + } + return result; + } +} + +hooks.defineLocale('hr', { + months : { + format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'), + standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_') + }, + monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'), + monthsParseExact: true, + weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danas u] LT', + nextDay : '[sutra u] LT', + nextWeek : function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[jučer u] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + return '[prošlu] dddd [u] LT'; + case 6: + return '[prošle] [subote] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prošli] dddd [u] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'par sekundi', + m : translate$3, + mm : translate$3, + h : translate$3, + hh : translate$3, + d : 'dan', + dd : translate$3, + M : 'mjesec', + MM : translate$3, + y : 'godinu', + yy : translate$3 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Hungarian [hu] +//! author : Adam Brunner : https://github.com/adambrunner + +var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' '); +function translate$4(number, withoutSuffix, key, isFuture) { + var num = number, + suffix; + switch (key) { + case 's': + return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce'; + case 'm': + return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'mm': + return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); + case 'h': + return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'hh': + return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); + case 'd': + return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'dd': + return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); + case 'M': + return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'MM': + return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); + case 'y': + return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); + case 'yy': + return num + (isFuture || withoutSuffix ? ' év' : ' éve'); + } + return ''; +} +function week(isFuture) { + return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]'; +} + +hooks.defineLocale('hu', { + months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'), + monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'), + weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'), + weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), + weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'YYYY.MM.DD.', + LL : 'YYYY. MMMM D.', + LLL : 'YYYY. MMMM D. H:mm', + LLLL : 'YYYY. MMMM D., dddd H:mm' + }, + meridiemParse: /de|du/i, + isPM: function (input) { + return input.charAt(1).toLowerCase() === 'u'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower === true ? 'de' : 'DE'; + } else { + return isLower === true ? 'du' : 'DU'; + } + }, + calendar : { + sameDay : '[ma] LT[-kor]', + nextDay : '[holnap] LT[-kor]', + nextWeek : function () { + return week.call(this, true); + }, + lastDay : '[tegnap] LT[-kor]', + lastWeek : function () { + return week.call(this, false); + }, + sameElse : 'L' + }, + relativeTime : { + future : '%s múlva', + past : '%s', + s : translate$4, + m : translate$4, + mm : translate$4, + h : translate$4, + hh : translate$4, + d : translate$4, + dd : translate$4, + M : translate$4, + MM : translate$4, + y : translate$4, + yy : translate$4 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Armenian [hy-am] +//! author : Armendarabyan : https://github.com/armendarabyan + +hooks.defineLocale('hy-am', { + months : { + format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'), + standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_') + }, + monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'), + weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'), + weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY թ.', + LLL : 'D MMMM YYYY թ., HH:mm', + LLLL : 'dddd, D MMMM YYYY թ., HH:mm' + }, + calendar : { + sameDay: '[այսօր] LT', + nextDay: '[վաղը] LT', + lastDay: '[երեկ] LT', + nextWeek: function () { + return 'dddd [օրը ժամը] LT'; + }, + lastWeek: function () { + return '[անցած] dddd [օրը ժամը] LT'; + }, + sameElse: 'L' + }, + relativeTime : { + future : '%s հետո', + past : '%s առաջ', + s : 'մի քանի վայրկյան', + m : 'րոպե', + mm : '%d րոպե', + h : 'ժամ', + hh : '%d ժամ', + d : 'օր', + dd : '%d օր', + M : 'ամիս', + MM : '%d ամիս', + y : 'տարի', + yy : '%d տարի' + }, + meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/, + isPM: function (input) { + return /^(ցերեկվա|երեկոյան)$/.test(input); + }, + meridiem : function (hour) { + if (hour < 4) { + return 'գիշերվա'; + } else if (hour < 12) { + return 'առավոտվա'; + } else if (hour < 17) { + return 'ցերեկվա'; + } else { + return 'երեկոյան'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/, + ordinal: function (number, period) { + switch (period) { + case 'DDD': + case 'w': + case 'W': + case 'DDDo': + if (number === 1) { + return number + '-ին'; + } + return number + '-րդ'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Indonesian [id] +//! author : Mohammad Satrio Utomo : https://github.com/tyok +//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan + +hooks.defineLocale('id', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|siang|sore|malam/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'siang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sore' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'siang'; + } else if (hours < 19) { + return 'sore'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Besok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kemarin pukul] LT', + lastWeek : 'dddd [lalu pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lalu', + s : 'beberapa detik', + m : 'semenit', + mm : '%d menit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Icelandic [is] +//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik + +function plural$2(n) { + if (n % 100 === 11) { + return true; + } else if (n % 10 === 1) { + return false; + } + return true; +} +function translate$5(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum'; + case 'm': + return withoutSuffix ? 'mínúta' : 'mínútu'; + case 'mm': + if (plural$2(number)) { + return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum'); + } else if (withoutSuffix) { + return result + 'mínúta'; + } + return result + 'mínútu'; + case 'hh': + if (plural$2(number)) { + return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum'); + } + return result + 'klukkustund'; + case 'd': + if (withoutSuffix) { + return 'dagur'; + } + return isFuture ? 'dag' : 'degi'; + case 'dd': + if (plural$2(number)) { + if (withoutSuffix) { + return result + 'dagar'; + } + return result + (isFuture ? 'daga' : 'dögum'); + } else if (withoutSuffix) { + return result + 'dagur'; + } + return result + (isFuture ? 'dag' : 'degi'); + case 'M': + if (withoutSuffix) { + return 'mánuður'; + } + return isFuture ? 'mánuð' : 'mánuði'; + case 'MM': + if (plural$2(number)) { + if (withoutSuffix) { + return result + 'mánuðir'; + } + return result + (isFuture ? 'mánuði' : 'mánuðum'); + } else if (withoutSuffix) { + return result + 'mánuður'; + } + return result + (isFuture ? 'mánuð' : 'mánuði'); + case 'y': + return withoutSuffix || isFuture ? 'ár' : 'ári'; + case 'yy': + if (plural$2(number)) { + return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); + } + return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); + } +} + +hooks.defineLocale('is', { + months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'), + weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'), + weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'), + weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm' + }, + calendar : { + sameDay : '[í dag kl.] LT', + nextDay : '[á morgun kl.] LT', + nextWeek : 'dddd [kl.] LT', + lastDay : '[í gær kl.] LT', + lastWeek : '[síðasta] dddd [kl.] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'eftir %s', + past : 'fyrir %s síðan', + s : translate$5, + m : translate$5, + mm : translate$5, + h : 'klukkustund', + hh : translate$5, + d : translate$5, + dd : translate$5, + M : translate$5, + MM : translate$5, + y : translate$5, + yy : translate$5 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Italian [it] +//! author : Lorenzo : https://github.com/aliem +//! author: Mattia Larentis: https://github.com/nostalgiaz + +hooks.defineLocale('it', { + months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'), + monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), + weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'), + weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'), + weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Oggi alle] LT', + nextDay: '[Domani alle] LT', + nextWeek: 'dddd [alle] LT', + lastDay: '[Ieri alle] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[la scorsa] dddd [alle] LT'; + default: + return '[lo scorso] dddd [alle] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : function (s) { + return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s; + }, + past : '%s fa', + s : 'alcuni secondi', + m : 'un minuto', + mm : '%d minuti', + h : 'un\'ora', + hh : '%d ore', + d : 'un giorno', + dd : '%d giorni', + M : 'un mese', + MM : '%d mesi', + y : 'un anno', + yy : '%d anni' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Japanese [ja] +//! author : LI Long : https://github.com/baryon + +hooks.defineLocale('ja', { + months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), + weekdaysShort : '日_月_火_水_木_金_土'.split('_'), + weekdaysMin : '日_月_火_水_木_金_土'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY年M月D日', + LLL : 'YYYY年M月D日 HH:mm', + LLLL : 'YYYY年M月D日 HH:mm dddd', + l : 'YYYY/MM/DD', + ll : 'YYYY年M月D日', + lll : 'YYYY年M月D日 HH:mm', + llll : 'YYYY年M月D日 HH:mm dddd' + }, + meridiemParse: /午前|午後/i, + isPM : function (input) { + return input === '午後'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return '午前'; + } else { + return '午後'; + } + }, + calendar : { + sameDay : '[今日] LT', + nextDay : '[明日] LT', + nextWeek : '[来週]dddd LT', + lastDay : '[昨日] LT', + lastWeek : '[前週]dddd LT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse : /\d{1,2}日/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + default: + return number; + } + }, + relativeTime : { + future : '%s後', + past : '%s前', + s : '数秒', + m : '1分', + mm : '%d分', + h : '1時間', + hh : '%d時間', + d : '1日', + dd : '%d日', + M : '1ヶ月', + MM : '%dヶ月', + y : '1年', + yy : '%d年' + } +}); + +//! moment.js locale configuration +//! locale : Javanese [jv] +//! author : Rony Lantip : https://github.com/lantip +//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa + +hooks.defineLocale('jv', { + months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'), + monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), + weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), + weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), + weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /enjing|siyang|sonten|ndalu/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'enjing') { + return hour; + } else if (meridiem === 'siyang') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'sonten' || meridiem === 'ndalu') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'enjing'; + } else if (hours < 15) { + return 'siyang'; + } else if (hours < 19) { + return 'sonten'; + } else { + return 'ndalu'; + } + }, + calendar : { + sameDay : '[Dinten puniko pukul] LT', + nextDay : '[Mbenjang pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kala wingi pukul] LT', + lastWeek : 'dddd [kepengker pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'wonten ing %s', + past : '%s ingkang kepengker', + s : 'sawetawis detik', + m : 'setunggal menit', + mm : '%d menit', + h : 'setunggal jam', + hh : '%d jam', + d : 'sedinten', + dd : '%d dinten', + M : 'sewulan', + MM : '%d wulan', + y : 'setaun', + yy : '%d taun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Georgian [ka] +//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili + +hooks.defineLocale('ka', { + months : { + standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'), + format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_') + }, + monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'), + weekdays : { + standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'), + format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'), + isFormat: /(წინა|შემდეგ)/ + }, + weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'), + weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[დღეს] LT[-ზე]', + nextDay : '[ხვალ] LT[-ზე]', + lastDay : '[გუშინ] LT[-ზე]', + nextWeek : '[შემდეგ] dddd LT[-ზე]', + lastWeek : '[წინა] dddd LT-ზე', + sameElse : 'L' + }, + relativeTime : { + future : function (s) { + return (/(წამი|წუთი|საათი|წელი)/).test(s) ? + s.replace(/ი$/, 'ში') : + s + 'ში'; + }, + past : function (s) { + if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) { + return s.replace(/(ი|ე)$/, 'ის უკან'); + } + if ((/წელი/).test(s)) { + return s.replace(/წელი$/, 'წლის უკან'); + } + }, + s : 'რამდენიმე წამი', + m : 'წუთი', + mm : '%d წუთი', + h : 'საათი', + hh : '%d საათი', + d : 'დღე', + dd : '%d დღე', + M : 'თვე', + MM : '%d თვე', + y : 'წელი', + yy : '%d წელი' + }, + dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/, + ordinal : function (number) { + if (number === 0) { + return number; + } + if (number === 1) { + return number + '-ლი'; + } + if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) { + return 'მე-' + number; + } + return number + '-ე'; + }, + week : { + dow : 1, + doy : 7 + } +}); + +//! moment.js locale configuration +//! locale : Kazakh [kk] +//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan + +var suffixes$1 = { + 0: '-ші', + 1: '-ші', + 2: '-ші', + 3: '-ші', + 4: '-ші', + 5: '-ші', + 6: '-шы', + 7: '-ші', + 8: '-ші', + 9: '-шы', + 10: '-шы', + 20: '-шы', + 30: '-шы', + 40: '-шы', + 50: '-ші', + 60: '-шы', + 70: '-ші', + 80: '-ші', + 90: '-шы', + 100: '-ші' +}; + +hooks.defineLocale('kk', { + months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'), + monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'), + weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'), + weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'), + weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Бүгін сағат] LT', + nextDay : '[Ертең сағат] LT', + nextWeek : 'dddd [сағат] LT', + lastDay : '[Кеше сағат] LT', + lastWeek : '[Өткен аптаның] dddd [сағат] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ішінде', + past : '%s бұрын', + s : 'бірнеше секунд', + m : 'бір минут', + mm : '%d минут', + h : 'бір сағат', + hh : '%d сағат', + d : 'бір күн', + dd : '%d күн', + M : 'бір ай', + MM : '%d ай', + y : 'бір жыл', + yy : '%d жыл' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Cambodian [km] +//! author : Kruy Vanna : https://github.com/kruyvanna + +hooks.defineLocale('km', { + months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), + weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS : 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd, D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ថ្ងៃនេះ ម៉ោង] LT', + nextDay: '[ស្អែក ម៉ោង] LT', + nextWeek: 'dddd [ម៉ោង] LT', + lastDay: '[ម្សិលមិញ ម៉ោង] LT', + lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', + sameElse: 'L' + }, + relativeTime: { + future: '%sទៀត', + past: '%sមុន', + s: 'ប៉ុន្មានវិនាទី', + m: 'មួយនាទី', + mm: '%d នាទី', + h: 'មួយម៉ោង', + hh: '%d ម៉ោង', + d: 'មួយថ្ងៃ', + dd: '%d ថ្ងៃ', + M: 'មួយខែ', + MM: '%d ខែ', + y: 'មួយឆ្នាំ', + yy: '%d ឆ្នាំ' + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Kannada [kn] +//! author : Rajeev Naik : https://github.com/rajeevnaikte + +var symbolMap$7 = { + '1': '೧', + '2': '೨', + '3': '೩', + '4': '೪', + '5': '೫', + '6': '೬', + '7': '೭', + '8': '೮', + '9': '೯', + '0': '೦' +}; +var numberMap$6 = { + '೧': '1', + '೨': '2', + '೩': '3', + '೪': '4', + '೫': '5', + '೬': '6', + '೭': '7', + '೮': '8', + '೯': '9', + '೦': '0' +}; + +hooks.defineLocale('kn', { + months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'), + monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ'.split('_'), + monthsParseExact: true, + weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'), + weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'), + weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[ಇಂದು] LT', + nextDay : '[ನಾಳೆ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ನಿನ್ನೆ] LT', + lastWeek : '[ಕೊನೆಯ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ನಂತರ', + past : '%s ಹಿಂದೆ', + s : 'ಕೆಲವು ಕ್ಷಣಗಳು', + m : 'ಒಂದು ನಿಮಿಷ', + mm : '%d ನಿಮಿಷ', + h : 'ಒಂದು ಗಂಟೆ', + hh : '%d ಗಂಟೆ', + d : 'ಒಂದು ದಿನ', + dd : '%d ದಿನ', + M : 'ಒಂದು ತಿಂಗಳು', + MM : '%d ತಿಂಗಳು', + y : 'ಒಂದು ವರ್ಷ', + yy : '%d ವರ್ಷ' + }, + preparse: function (string) { + return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) { + return numberMap$6[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$7[match]; + }); + }, + meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ರಾತ್ರಿ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') { + return hour; + } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ಸಂಜೆ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ರಾತ್ರಿ'; + } else if (hour < 10) { + return 'ಬೆಳಿಗ್ಗೆ'; + } else if (hour < 17) { + return 'ಮಧ್ಯಾಹ್ನ'; + } else if (hour < 20) { + return 'ಸಂಜೆ'; + } else { + return 'ರಾತ್ರಿ'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/, + ordinal : function (number) { + return number + 'ನೇ'; + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Korean [ko] +//! author : Kyungwook, Park : https://github.com/kyungw00k +//! author : Jeeeyul Lee + +hooks.defineLocale('ko', { + months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), + weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), + weekdaysShort : '일_월_화_수_목_금_토'.split('_'), + weekdaysMin : '일_월_화_수_목_금_토'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'YYYY.MM.DD', + LL : 'YYYY년 MMMM D일', + LLL : 'YYYY년 MMMM D일 A h:mm', + LLLL : 'YYYY년 MMMM D일 dddd A h:mm', + l : 'YYYY.MM.DD', + ll : 'YYYY년 MMMM D일', + lll : 'YYYY년 MMMM D일 A h:mm', + llll : 'YYYY년 MMMM D일 dddd A h:mm' + }, + calendar : { + sameDay : '오늘 LT', + nextDay : '내일 LT', + nextWeek : 'dddd LT', + lastDay : '어제 LT', + lastWeek : '지난주 dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s 후', + past : '%s 전', + s : '몇 초', + ss : '%d초', + m : '1분', + mm : '%d분', + h : '한 시간', + hh : '%d시간', + d : '하루', + dd : '%d일', + M : '한 달', + MM : '%d달', + y : '일 년', + yy : '%d년' + }, + dayOfMonthOrdinalParse : /\d{1,2}일/, + ordinal : '%d일', + meridiemParse : /오전|오후/, + isPM : function (token) { + return token === '오후'; + }, + meridiem : function (hour, minute, isUpper) { + return hour < 12 ? '오전' : '오후'; + } +}); + +//! moment.js locale configuration +//! locale : Kyrgyz [ky] +//! author : Chyngyz Arystan uulu : https://github.com/chyngyz + + +var suffixes$2 = { + 0: '-чү', + 1: '-чи', + 2: '-чи', + 3: '-чү', + 4: '-чү', + 5: '-чи', + 6: '-чы', + 7: '-чи', + 8: '-чи', + 9: '-чу', + 10: '-чу', + 20: '-чы', + 30: '-чу', + 40: '-чы', + 50: '-чү', + 60: '-чы', + 70: '-чи', + 80: '-чи', + 90: '-чу', + 100: '-чү' +}; + +hooks.defineLocale('ky', { + months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), + monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'), + weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'), + weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Бүгүн саат] LT', + nextDay : '[Эртең саат] LT', + nextWeek : 'dddd [саат] LT', + lastDay : '[Кече саат] LT', + lastWeek : '[Өткен аптанын] dddd [күнү] [саат] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ичинде', + past : '%s мурун', + s : 'бирнече секунд', + m : 'бир мүнөт', + mm : '%d мүнөт', + h : 'бир саат', + hh : '%d саат', + d : 'бир күн', + dd : '%d күн', + M : 'бир ай', + MM : '%d ай', + y : 'бир жыл', + yy : '%d жыл' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/, + ordinal : function (number) { + var a = number % 10, + b = number >= 100 ? 100 : null; + return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Luxembourgish [lb] +//! author : mweimerskirch : https://github.com/mweimerskirch +//! author : David Raison : https://github.com/kwisatz + +function processRelativeTime$5(number, withoutSuffix, key, isFuture) { + var format = { + 'm': ['eng Minutt', 'enger Minutt'], + 'h': ['eng Stonn', 'enger Stonn'], + 'd': ['een Dag', 'engem Dag'], + 'M': ['ee Mount', 'engem Mount'], + 'y': ['ee Joer', 'engem Joer'] + }; + return withoutSuffix ? format[key][0] : format[key][1]; +} +function processFutureTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'a ' + string; + } + return 'an ' + string; +} +function processPastTime(string) { + var number = string.substr(0, string.indexOf(' ')); + if (eifelerRegelAppliesToNumber(number)) { + return 'viru ' + string; + } + return 'virun ' + string; +} +/** + * Returns true if the word before the given number loses the '-n' ending. + * e.g. 'an 10 Deeg' but 'a 5 Deeg' + * + * @param number {integer} + * @returns {boolean} + */ +function eifelerRegelAppliesToNumber(number) { + number = parseInt(number, 10); + if (isNaN(number)) { + return false; + } + if (number < 0) { + // Negative Number --> always true + return true; + } else if (number < 10) { + // Only 1 digit + if (4 <= number && number <= 7) { + return true; + } + return false; + } else if (number < 100) { + // 2 digits + var lastDigit = number % 10, firstDigit = number / 10; + if (lastDigit === 0) { + return eifelerRegelAppliesToNumber(firstDigit); + } + return eifelerRegelAppliesToNumber(lastDigit); + } else if (number < 10000) { + // 3 or 4 digits --> recursively check first digit + while (number >= 10) { + number = number / 10; + } + return eifelerRegelAppliesToNumber(number); + } else { + // Anything larger than 4 digits: recursively check first n-3 digits + number = number / 1000; + return eifelerRegelAppliesToNumber(number); + } +} + +hooks.defineLocale('lb', { + months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'), + monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'), + monthsParseExact : true, + weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'), + weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), + weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm [Auer]', + LTS: 'H:mm:ss [Auer]', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm [Auer]', + LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]' + }, + calendar: { + sameDay: '[Haut um] LT', + sameElse: 'L', + nextDay: '[Muer um] LT', + nextWeek: 'dddd [um] LT', + lastDay: '[Gëschter um] LT', + lastWeek: function () { + // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule + switch (this.day()) { + case 2: + case 4: + return '[Leschten] dddd [um] LT'; + default: + return '[Leschte] dddd [um] LT'; + } + } + }, + relativeTime : { + future : processFutureTime, + past : processPastTime, + s : 'e puer Sekonnen', + m : processRelativeTime$5, + mm : '%d Minutten', + h : processRelativeTime$5, + hh : '%d Stonnen', + d : processRelativeTime$5, + dd : '%d Deeg', + M : processRelativeTime$5, + MM : '%d Méint', + y : processRelativeTime$5, + yy : '%d Joer' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal: '%d.', + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Lao [lo] +//! author : Ryan Hart : https://github.com/ryanhart2 + +hooks.defineLocale('lo', { + months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'), + weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'), + weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'ວັນdddd D MMMM YYYY HH:mm' + }, + meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/, + isPM: function (input) { + return input === 'ຕອນແລງ'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ຕອນເຊົ້າ'; + } else { + return 'ຕອນແລງ'; + } + }, + calendar : { + sameDay : '[ມື້ນີ້ເວລາ] LT', + nextDay : '[ມື້ອື່ນເວລາ] LT', + nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT', + lastDay : '[ມື້ວານນີ້ເວລາ] LT', + lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ອີກ %s', + past : '%sຜ່ານມາ', + s : 'ບໍ່ເທົ່າໃດວິນາທີ', + m : '1 ນາທີ', + mm : '%d ນາທີ', + h : '1 ຊົ່ວໂມງ', + hh : '%d ຊົ່ວໂມງ', + d : '1 ມື້', + dd : '%d ມື້', + M : '1 ເດືອນ', + MM : '%d ເດືອນ', + y : '1 ປີ', + yy : '%d ປີ' + }, + dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/, + ordinal : function (number) { + return 'ທີ່' + number; + } +}); + +//! moment.js locale configuration +//! locale : Lithuanian [lt] +//! author : Mindaugas Mozūras : https://github.com/mmozuras + +var units = { + 'm' : 'minutė_minutės_minutę', + 'mm': 'minutės_minučių_minutes', + 'h' : 'valanda_valandos_valandą', + 'hh': 'valandos_valandų_valandas', + 'd' : 'diena_dienos_dieną', + 'dd': 'dienos_dienų_dienas', + 'M' : 'mėnuo_mėnesio_mėnesį', + 'MM': 'mėnesiai_mėnesių_mėnesius', + 'y' : 'metai_metų_metus', + 'yy': 'metai_metų_metus' +}; +function translateSeconds(number, withoutSuffix, key, isFuture) { + if (withoutSuffix) { + return 'kelios sekundės'; + } else { + return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; + } +} +function translateSingular(number, withoutSuffix, key, isFuture) { + return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]); +} +function special(number) { + return number % 10 === 0 || (number > 10 && number < 20); +} +function forms(key) { + return units[key].split('_'); +} +function translate$6(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + if (number === 1) { + return result + translateSingular(number, withoutSuffix, key[0], isFuture); + } else if (withoutSuffix) { + return result + (special(number) ? forms(key)[1] : forms(key)[0]); + } else { + if (isFuture) { + return result + forms(key)[1]; + } else { + return result + (special(number) ? forms(key)[1] : forms(key)[2]); + } + } +} +hooks.defineLocale('lt', { + months : { + format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'), + standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'), + isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/ + }, + monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), + weekdays : { + format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'), + standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'), + isFormat: /dddd HH:mm/ + }, + weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'), + weekdaysMin : 'S_P_A_T_K_Pn_Š'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'YYYY [m.] MMMM D [d.]', + LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', + l : 'YYYY-MM-DD', + ll : 'YYYY [m.] MMMM D [d.]', + lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]', + llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]' + }, + calendar : { + sameDay : '[Šiandien] LT', + nextDay : '[Rytoj] LT', + nextWeek : 'dddd LT', + lastDay : '[Vakar] LT', + lastWeek : '[Praėjusį] dddd LT', + sameElse : 'L' + }, + relativeTime : { + future : 'po %s', + past : 'prieš %s', + s : translateSeconds, + m : translateSingular, + mm : translate$6, + h : translateSingular, + hh : translate$6, + d : translateSingular, + dd : translate$6, + M : translateSingular, + MM : translate$6, + y : translateSingular, + yy : translate$6 + }, + dayOfMonthOrdinalParse: /\d{1,2}-oji/, + ordinal : function (number) { + return number + '-oji'; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Latvian [lv] +//! author : Kristaps Karlsons : https://github.com/skakri +//! author : Jānis Elmeris : https://github.com/JanisE + +var units$1 = { + 'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'), + 'h': 'stundas_stundām_stunda_stundas'.split('_'), + 'hh': 'stundas_stundām_stunda_stundas'.split('_'), + 'd': 'dienas_dienām_diena_dienas'.split('_'), + 'dd': 'dienas_dienām_diena_dienas'.split('_'), + 'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'), + 'y': 'gada_gadiem_gads_gadi'.split('_'), + 'yy': 'gada_gadiem_gads_gadi'.split('_') +}; +/** + * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. + */ +function format$1(forms, number, withoutSuffix) { + if (withoutSuffix) { + // E.g. "21 minūte", "3 minūtes". + return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; + } else { + // E.g. "21 minūtes" as in "pēc 21 minūtes". + // E.g. "3 minūtēm" as in "pēc 3 minūtēm". + return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; + } +} +function relativeTimeWithPlural$1(number, withoutSuffix, key) { + return number + ' ' + format$1(units$1[key], number, withoutSuffix); +} +function relativeTimeWithSingular(number, withoutSuffix, key) { + return format$1(units$1[key], number, withoutSuffix); +} +function relativeSeconds(number, withoutSuffix) { + return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm'; +} + +hooks.defineLocale('lv', { + months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'), + weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY.', + LL : 'YYYY. [gada] D. MMMM', + LLL : 'YYYY. [gada] D. MMMM, HH:mm', + LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm' + }, + calendar : { + sameDay : '[Šodien pulksten] LT', + nextDay : '[Rīt pulksten] LT', + nextWeek : 'dddd [pulksten] LT', + lastDay : '[Vakar pulksten] LT', + lastWeek : '[Pagājušā] dddd [pulksten] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'pēc %s', + past : 'pirms %s', + s : relativeSeconds, + m : relativeTimeWithSingular, + mm : relativeTimeWithPlural$1, + h : relativeTimeWithSingular, + hh : relativeTimeWithPlural$1, + d : relativeTimeWithSingular, + dd : relativeTimeWithPlural$1, + M : relativeTimeWithSingular, + MM : relativeTimeWithPlural$1, + y : relativeTimeWithSingular, + yy : relativeTimeWithPlural$1 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Montenegrin [me] +//! author : Miodrag Nikač : https://github.com/miodragnikac + +var translator = { + words: { //Different grammatical cases + m: ['jedan minut', 'jednog minuta'], + mm: ['minut', 'minuta', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mjesec', 'mjeseca', 'mjeseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator.correctGrammaticalCase(number, wordKey); + } + } +}; + +hooks.defineLocale('me', { + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact : true, + weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'), + weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sjutra u] LT', + + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedjelju] [u] LT'; + case 3: + return '[u] [srijedu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedjelje] [u] LT', + '[prošlog] [ponedjeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srijede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'prije %s', + s : 'nekoliko sekundi', + m : translator.translate, + mm : translator.translate, + h : translator.translate, + hh : translator.translate, + d : 'dan', + dd : translator.translate, + M : 'mjesec', + MM : translator.translate, + y : 'godinu', + yy : translator.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Maori [mi] +//! author : John Corrigan : https://github.com/johnideal + +hooks.defineLocale('mi', { + months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'), + monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'), + monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, + monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, + weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'), + weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'), + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY [i] HH:mm', + LLLL: 'dddd, D MMMM YYYY [i] HH:mm' + }, + calendar: { + sameDay: '[i teie mahana, i] LT', + nextDay: '[apopo i] LT', + nextWeek: 'dddd [i] LT', + lastDay: '[inanahi i] LT', + lastWeek: 'dddd [whakamutunga i] LT', + sameElse: 'L' + }, + relativeTime: { + future: 'i roto i %s', + past: '%s i mua', + s: 'te hēkona ruarua', + m: 'he meneti', + mm: '%d meneti', + h: 'te haora', + hh: '%d haora', + d: 'he ra', + dd: '%d ra', + M: 'he marama', + MM: '%d marama', + y: 'he tau', + yy: '%d tau' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal: '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Macedonian [mk] +//! author : Borislav Mickov : https://github.com/B0k0 + +hooks.defineLocale('mk', { + months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'), + monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'), + weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'), + weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'), + weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'D.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[Денес во] LT', + nextDay : '[Утре во] LT', + nextWeek : '[Во] dddd [во] LT', + lastDay : '[Вчера во] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + case 3: + case 6: + return '[Изминатата] dddd [во] LT'; + case 1: + case 2: + case 4: + case 5: + return '[Изминатиот] dddd [во] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'после %s', + past : 'пред %s', + s : 'неколку секунди', + m : 'минута', + mm : '%d минути', + h : 'час', + hh : '%d часа', + d : 'ден', + dd : '%d дена', + M : 'месец', + MM : '%d месеци', + y : 'година', + yy : '%d години' + }, + dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/, + ordinal : function (number) { + var lastDigit = number % 10, + last2Digits = number % 100; + if (number === 0) { + return number + '-ев'; + } else if (last2Digits === 0) { + return number + '-ен'; + } else if (last2Digits > 10 && last2Digits < 20) { + return number + '-ти'; + } else if (lastDigit === 1) { + return number + '-ви'; + } else if (lastDigit === 2) { + return number + '-ри'; + } else if (lastDigit === 7 || lastDigit === 8) { + return number + '-ми'; + } else { + return number + '-ти'; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Malayalam [ml] +//! author : Floyd Pink : https://github.com/floydpink + +hooks.defineLocale('ml', { + months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'), + monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'), + monthsParseExact : true, + weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'), + weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'), + weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'), + longDateFormat : { + LT : 'A h:mm -നു', + LTS : 'A h:mm:ss -നു', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm -നു', + LLLL : 'dddd, D MMMM YYYY, A h:mm -നു' + }, + calendar : { + sameDay : '[ഇന്ന്] LT', + nextDay : '[നാളെ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ഇന്നലെ] LT', + lastWeek : '[കഴിഞ്ഞ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s കഴിഞ്ഞ്', + past : '%s മുൻപ്', + s : 'അൽപ നിമിഷങ്ങൾ', + m : 'ഒരു മിനിറ്റ്', + mm : '%d മിനിറ്റ്', + h : 'ഒരു മണിക്കൂർ', + hh : '%d മണിക്കൂർ', + d : 'ഒരു ദിവസം', + dd : '%d ദിവസം', + M : 'ഒരു മാസം', + MM : '%d മാസം', + y : 'ഒരു വർഷം', + yy : '%d വർഷം' + }, + meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if ((meridiem === 'രാത്രി' && hour >= 4) || + meridiem === 'ഉച്ച കഴിഞ്ഞ്' || + meridiem === 'വൈകുന്നേരം') { + return hour + 12; + } else { + return hour; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'രാത്രി'; + } else if (hour < 12) { + return 'രാവിലെ'; + } else if (hour < 17) { + return 'ഉച്ച കഴിഞ്ഞ്'; + } else if (hour < 20) { + return 'വൈകുന്നേരം'; + } else { + return 'രാത്രി'; + } + } +}); + +//! moment.js locale configuration +//! locale : Marathi [mr] +//! author : Harshad Kale : https://github.com/kalehv +//! author : Vivek Athalye : https://github.com/vnathalye + +var symbolMap$8 = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap$7 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +function relativeTimeMr(number, withoutSuffix, string, isFuture) +{ + var output = ''; + if (withoutSuffix) { + switch (string) { + case 's': output = 'काही सेकंद'; break; + case 'm': output = 'एक मिनिट'; break; + case 'mm': output = '%d मिनिटे'; break; + case 'h': output = 'एक तास'; break; + case 'hh': output = '%d तास'; break; + case 'd': output = 'एक दिवस'; break; + case 'dd': output = '%d दिवस'; break; + case 'M': output = 'एक महिना'; break; + case 'MM': output = '%d महिने'; break; + case 'y': output = 'एक वर्ष'; break; + case 'yy': output = '%d वर्षे'; break; + } + } + else { + switch (string) { + case 's': output = 'काही सेकंदां'; break; + case 'm': output = 'एका मिनिटा'; break; + case 'mm': output = '%d मिनिटां'; break; + case 'h': output = 'एका तासा'; break; + case 'hh': output = '%d तासां'; break; + case 'd': output = 'एका दिवसा'; break; + case 'dd': output = '%d दिवसां'; break; + case 'M': output = 'एका महिन्या'; break; + case 'MM': output = '%d महिन्यां'; break; + case 'y': output = 'एका वर्षा'; break; + case 'yy': output = '%d वर्षां'; break; + } + } + return output.replace(/%d/i, number); +} + +hooks.defineLocale('mr', { + months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'), + monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'), + monthsParseExact : true, + weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'), + weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'), + weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'), + longDateFormat : { + LT : 'A h:mm वाजता', + LTS : 'A h:mm:ss वाजता', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm वाजता', + LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता' + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[उद्या] LT', + nextWeek : 'dddd, LT', + lastDay : '[काल] LT', + lastWeek: '[मागील] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future: '%sमध्ये', + past: '%sपूर्वी', + s: relativeTimeMr, + m: relativeTimeMr, + mm: relativeTimeMr, + h: relativeTimeMr, + hh: relativeTimeMr, + d: relativeTimeMr, + dd: relativeTimeMr, + M: relativeTimeMr, + MM: relativeTimeMr, + y: relativeTimeMr, + yy: relativeTimeMr + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap$7[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$8[match]; + }); + }, + meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'रात्री') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'सकाळी') { + return hour; + } else if (meridiem === 'दुपारी') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'सायंकाळी') { + return hour + 12; + } + }, + meridiem: function (hour, minute, isLower) { + if (hour < 4) { + return 'रात्री'; + } else if (hour < 10) { + return 'सकाळी'; + } else if (hour < 17) { + return 'दुपारी'; + } else if (hour < 20) { + return 'सायंकाळी'; + } else { + return 'रात्री'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Malay [ms-my] +//! note : DEPRECATED, the correct one is [ms] +//! author : Weldan Jamili : https://github.com/weldan + +hooks.defineLocale('ms-my', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Malay [ms] +//! author : Weldan Jamili : https://github.com/weldan + +hooks.defineLocale('ms', { + months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), + weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), + weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), + weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [pukul] HH.mm', + LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm' + }, + meridiemParse: /pagi|tengahari|petang|malam/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'pagi') { + return hour; + } else if (meridiem === 'tengahari') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'petang' || meridiem === 'malam') { + return hour + 12; + } + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'pagi'; + } else if (hours < 15) { + return 'tengahari'; + } else if (hours < 19) { + return 'petang'; + } else { + return 'malam'; + } + }, + calendar : { + sameDay : '[Hari ini pukul] LT', + nextDay : '[Esok pukul] LT', + nextWeek : 'dddd [pukul] LT', + lastDay : '[Kelmarin pukul] LT', + lastWeek : 'dddd [lepas pukul] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'dalam %s', + past : '%s yang lepas', + s : 'beberapa saat', + m : 'seminit', + mm : '%d minit', + h : 'sejam', + hh : '%d jam', + d : 'sehari', + dd : '%d hari', + M : 'sebulan', + MM : '%d bulan', + y : 'setahun', + yy : '%d tahun' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Burmese [my] +//! author : Squar team, mysquar.com +//! author : David Rossellat : https://github.com/gholadr +//! author : Tin Aung Lin : https://github.com/thanyawzinmin + +var symbolMap$9 = { + '1': '၁', + '2': '၂', + '3': '၃', + '4': '၄', + '5': '၅', + '6': '၆', + '7': '၇', + '8': '၈', + '9': '၉', + '0': '၀' +}; +var numberMap$8 = { + '၁': '1', + '၂': '2', + '၃': '3', + '၄': '4', + '၅': '5', + '၆': '6', + '၇': '7', + '၈': '8', + '၉': '9', + '၀': '0' +}; + +hooks.defineLocale('my', { + months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'), + monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'), + weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'), + weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'), + + longDateFormat: { + LT: 'HH:mm', + LTS: 'HH:mm:ss', + L: 'DD/MM/YYYY', + LL: 'D MMMM YYYY', + LLL: 'D MMMM YYYY HH:mm', + LLLL: 'dddd D MMMM YYYY HH:mm' + }, + calendar: { + sameDay: '[ယနေ.] LT [မှာ]', + nextDay: '[မနက်ဖြန်] LT [မှာ]', + nextWeek: 'dddd LT [မှာ]', + lastDay: '[မနေ.က] LT [မှာ]', + lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]', + sameElse: 'L' + }, + relativeTime: { + future: 'လာမည့် %s မှာ', + past: 'လွန်ခဲ့သော %s က', + s: 'စက္ကန်.အနည်းငယ်', + m: 'တစ်မိနစ်', + mm: '%d မိနစ်', + h: 'တစ်နာရီ', + hh: '%d နာရီ', + d: 'တစ်ရက်', + dd: '%d ရက်', + M: 'တစ်လ', + MM: '%d လ', + y: 'တစ်နှစ်', + yy: '%d နှစ်' + }, + preparse: function (string) { + return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) { + return numberMap$8[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$9[match]; + }); + }, + week: { + dow: 1, // Monday is the first day of the week. + doy: 4 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Norwegian Bokmål [nb] +//! authors : Espen Hovlandsdal : https://github.com/rexxars +//! Sigurd Gartmann : https://github.com/sigurdga + +hooks.defineLocale('nb', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'), + monthsParseExact : true, + weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), + weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'), + weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] HH:mm', + LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' + }, + calendar : { + sameDay: '[i dag kl.] LT', + nextDay: '[i morgen kl.] LT', + nextWeek: 'dddd [kl.] LT', + lastDay: '[i går kl.] LT', + lastWeek: '[forrige] dddd [kl.] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s siden', + s : 'noen sekunder', + m : 'ett minutt', + mm : '%d minutter', + h : 'en time', + hh : '%d timer', + d : 'en dag', + dd : '%d dager', + M : 'en måned', + MM : '%d måneder', + y : 'ett år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Nepalese [ne] +//! author : suvash : https://github.com/suvash + +var symbolMap$10 = { + '1': '१', + '2': '२', + '3': '३', + '4': '४', + '5': '५', + '6': '६', + '7': '७', + '8': '८', + '9': '९', + '0': '०' +}; +var numberMap$9 = { + '१': '1', + '२': '2', + '३': '3', + '४': '4', + '५': '5', + '६': '6', + '७': '7', + '८': '8', + '९': '9', + '०': '0' +}; + +hooks.defineLocale('ne', { + months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'), + monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'), + monthsParseExact : true, + weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'), + weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'), + weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'Aको h:mm बजे', + LTS : 'Aको h:mm:ss बजे', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, Aको h:mm बजे', + LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे' + }, + preparse: function (string) { + return string.replace(/[१२३४५६७८९०]/g, function (match) { + return numberMap$9[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$10[match]; + }); + }, + meridiemParse: /राति|बिहान|दिउँसो|साँझ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'राति') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'बिहान') { + return hour; + } else if (meridiem === 'दिउँसो') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'साँझ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 3) { + return 'राति'; + } else if (hour < 12) { + return 'बिहान'; + } else if (hour < 16) { + return 'दिउँसो'; + } else if (hour < 20) { + return 'साँझ'; + } else { + return 'राति'; + } + }, + calendar : { + sameDay : '[आज] LT', + nextDay : '[भोलि] LT', + nextWeek : '[आउँदो] dddd[,] LT', + lastDay : '[हिजो] LT', + lastWeek : '[गएको] dddd[,] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%sमा', + past : '%s अगाडि', + s : 'केही क्षण', + m : 'एक मिनेट', + mm : '%d मिनेट', + h : 'एक घण्टा', + hh : '%d घण्टा', + d : 'एक दिन', + dd : '%d दिन', + M : 'एक महिना', + MM : '%d महिना', + y : 'एक बर्ष', + yy : '%d बर्ष' + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Dutch (Belgium) [nl-be] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj + +var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); +var monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + +var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; +var monthsRegex$1 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + +hooks.defineLocale('nl-be', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots$1; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots$1[m.month()]; + } else { + return monthsShortWithDots$1[m.month()]; + } + }, + + monthsRegex: monthsRegex$1, + monthsShortRegex: monthsRegex$1, + monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse : monthsParse, + longMonthsParse : monthsParse, + shortMonthsParse : monthsParse, + + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Dutch [nl] +//! author : Joris Röling : https://github.com/jorisroling +//! author : Jacob Middag : https://github.com/middagj + +var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'); +var monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'); + +var monthsParse$1 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i]; +var monthsRegex$2 = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; + +hooks.defineLocale('nl', { + months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortWithDots$2; + } else if (/-MMM-/.test(format)) { + return monthsShortWithoutDots$2[m.month()]; + } else { + return monthsShortWithDots$2[m.month()]; + } + }, + + monthsRegex: monthsRegex$2, + monthsShortRegex: monthsRegex$2, + monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i, + monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, + + monthsParse : monthsParse$1, + longMonthsParse : monthsParse$1, + shortMonthsParse : monthsParse$1, + + weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'), + weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'), + weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD-MM-YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[vandaag om] LT', + nextDay: '[morgen om] LT', + nextWeek: 'dddd [om] LT', + lastDay: '[gisteren om] LT', + lastWeek: '[afgelopen] dddd [om] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'over %s', + past : '%s geleden', + s : 'een paar seconden', + m : 'één minuut', + mm : '%d minuten', + h : 'één uur', + hh : '%d uur', + d : 'één dag', + dd : '%d dagen', + M : 'één maand', + MM : '%d maanden', + y : 'één jaar', + yy : '%d jaar' + }, + dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, + ordinal : function (number) { + return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Nynorsk [nn] +//! author : https://github.com/mechuwind + +hooks.defineLocale('nn', { + months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), + monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), + weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), + weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), + weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY [kl.] H:mm', + LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm' + }, + calendar : { + sameDay: '[I dag klokka] LT', + nextDay: '[I morgon klokka] LT', + nextWeek: 'dddd [klokka] LT', + lastDay: '[I går klokka] LT', + lastWeek: '[Føregåande] dddd [klokka] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : '%s sidan', + s : 'nokre sekund', + m : 'eit minutt', + mm : '%d minutt', + h : 'ein time', + hh : '%d timar', + d : 'ein dag', + dd : '%d dagar', + M : 'ein månad', + MM : '%d månader', + y : 'eit år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Punjabi (India) [pa-in] +//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit + +var symbolMap$11 = { + '1': '੧', + '2': '੨', + '3': '੩', + '4': '੪', + '5': '੫', + '6': '੬', + '7': '੭', + '8': '੮', + '9': '੯', + '0': '੦' +}; +var numberMap$10 = { + '੧': '1', + '੨': '2', + '੩': '3', + '੪': '4', + '੫': '5', + '੬': '6', + '੭': '7', + '੮': '8', + '੯': '9', + '੦': '0' +}; + +hooks.defineLocale('pa-in', { + // There are months name as per Nanakshahi Calender but they are not used as rigidly in modern Punjabi. + months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'), + weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'), + weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'), + longDateFormat : { + LT : 'A h:mm ਵਜੇ', + LTS : 'A h:mm:ss ਵਜੇ', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm ਵਜੇ', + LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ' + }, + calendar : { + sameDay : '[ਅਜ] LT', + nextDay : '[ਕਲ] LT', + nextWeek : 'dddd, LT', + lastDay : '[ਕਲ] LT', + lastWeek : '[ਪਿਛਲੇ] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s ਵਿੱਚ', + past : '%s ਪਿਛਲੇ', + s : 'ਕੁਝ ਸਕਿੰਟ', + m : 'ਇਕ ਮਿੰਟ', + mm : '%d ਮਿੰਟ', + h : 'ਇੱਕ ਘੰਟਾ', + hh : '%d ਘੰਟੇ', + d : 'ਇੱਕ ਦਿਨ', + dd : '%d ਦਿਨ', + M : 'ਇੱਕ ਮਹੀਨਾ', + MM : '%d ਮਹੀਨੇ', + y : 'ਇੱਕ ਸਾਲ', + yy : '%d ਸਾਲ' + }, + preparse: function (string) { + return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) { + return numberMap$10[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$11[match]; + }); + }, + // Punjabi notation for meridiems are quite fuzzy in practice. While there exists + // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. + meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ਰਾਤ') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ਸਵੇਰ') { + return hour; + } else if (meridiem === 'ਦੁਪਹਿਰ') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'ਸ਼ਾਮ') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ਰਾਤ'; + } else if (hour < 10) { + return 'ਸਵੇਰ'; + } else if (hour < 17) { + return 'ਦੁਪਹਿਰ'; + } else if (hour < 20) { + return 'ਸ਼ਾਮ'; + } else { + return 'ਰਾਤ'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Polish [pl] +//! author : Rafal Hirsz : https://github.com/evoL + +var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'); +var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'); +function plural$3(n) { + return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1); +} +function translate$7(number, withoutSuffix, key) { + var result = number + ' '; + switch (key) { + case 'm': + return withoutSuffix ? 'minuta' : 'minutę'; + case 'mm': + return result + (plural$3(number) ? 'minuty' : 'minut'); + case 'h': + return withoutSuffix ? 'godzina' : 'godzinę'; + case 'hh': + return result + (plural$3(number) ? 'godziny' : 'godzin'); + case 'MM': + return result + (plural$3(number) ? 'miesiące' : 'miesięcy'); + case 'yy': + return result + (plural$3(number) ? 'lata' : 'lat'); + } +} + +hooks.defineLocale('pl', { + months : function (momentToFormat, format) { + if (!momentToFormat) { + return monthsNominative; + } else if (format === '') { + // Hack: if format empty we know this is used to generate + // RegExp by moment. Give then back both valid forms of months + // in RegExp ready format. + return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')'; + } else if (/D MMMM/.test(format)) { + return monthsSubjective[momentToFormat.month()]; + } else { + return monthsNominative[momentToFormat.month()]; + } + }, + monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), + weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'), + weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'), + weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Dziś o] LT', + nextDay: '[Jutro o] LT', + nextWeek: '[W] dddd [o] LT', + lastDay: '[Wczoraj o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[W zeszłą niedzielę o] LT'; + case 3: + return '[W zeszłą środę o] LT'; + case 6: + return '[W zeszłą sobotę o] LT'; + default: + return '[W zeszły] dddd [o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : '%s temu', + s : 'kilka sekund', + m : translate$7, + mm : translate$7, + h : translate$7, + hh : translate$7, + d : '1 dzień', + dd : '%d dni', + M : 'miesiąc', + MM : translate$7, + y : 'rok', + yy : translate$7 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +hooks.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº' +}); + +//! moment.js locale configuration +//! locale : Portuguese [pt] +//! author : Jefferson : https://github.com/jalex79 + +hooks.defineLocale('pt', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : 'há %s', + s : 'segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Romanian [ro] +//! author : Vlad Gurdiga : https://github.com/gurdiga +//! author : Valentin Agachi : https://github.com/avaly + +function relativeTimeWithPlural$2(number, withoutSuffix, key) { + var format = { + 'mm': 'minute', + 'hh': 'ore', + 'dd': 'zile', + 'MM': 'luni', + 'yy': 'ani' + }, + separator = ' '; + if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { + separator = ' de '; + } + return number + separator + format[key]; +} + +hooks.defineLocale('ro', { + months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'), + monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'), + weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), + weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY H:mm', + LLLL : 'dddd, D MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[azi la] LT', + nextDay: '[mâine la] LT', + nextWeek: 'dddd [la] LT', + lastDay: '[ieri la] LT', + lastWeek: '[fosta] dddd [la] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'peste %s', + past : '%s în urmă', + s : 'câteva secunde', + m : 'un minut', + mm : relativeTimeWithPlural$2, + h : 'o oră', + hh : relativeTimeWithPlural$2, + d : 'o zi', + dd : relativeTimeWithPlural$2, + M : 'o lună', + MM : relativeTimeWithPlural$2, + y : 'un an', + yy : relativeTimeWithPlural$2 + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Russian [ru] +//! author : Viktorminator : https://github.com/Viktorminator +//! Author : Menelion Elensúle : https://github.com/Oire +//! author : Коренберг Марк : https://github.com/socketpair + +function plural$4(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural$3(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут', + 'hh': 'час_часа_часов', + 'dd': 'день_дня_дней', + 'MM': 'месяц_месяца_месяцев', + 'yy': 'год_года_лет' + }; + if (key === 'm') { + return withoutSuffix ? 'минута' : 'минуту'; + } + else { + return number + ' ' + plural$4(format[key], +number); + } +} +var monthsParse$2 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; + +// http://new.gramota.ru/spravka/rules/139-prop : § 103 +// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 +// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 +hooks.defineLocale('ru', { + months : { + format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'), + standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_') + }, + monthsShort : { + // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ? + format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'), + standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_') + }, + weekdays : { + standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'), + format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'), + isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/ + }, + weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'), + monthsParse : monthsParse$2, + longMonthsParse : monthsParse$2, + shortMonthsParse : monthsParse$2, + + // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки + monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + + // копия предыдущего + monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i, + + // полные названия с падежами + monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i, + + // Выражение, которое соотвествует только сокращённым формам + monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY г.', + LLL : 'D MMMM YYYY г., HH:mm', + LLLL : 'dddd, D MMMM YYYY г., HH:mm' + }, + calendar : { + sameDay: '[Сегодня в] LT', + nextDay: '[Завтра в] LT', + lastDay: '[Вчера в] LT', + nextWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В следующее] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В следующий] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В следующую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + lastWeek: function (now) { + if (now.week() !== this.week()) { + switch (this.day()) { + case 0: + return '[В прошлое] dddd [в] LT'; + case 1: + case 2: + case 4: + return '[В прошлый] dddd [в] LT'; + case 3: + case 5: + case 6: + return '[В прошлую] dddd [в] LT'; + } + } else { + if (this.day() === 2) { + return '[Во] dddd [в] LT'; + } else { + return '[В] dddd [в] LT'; + } + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'через %s', + past : '%s назад', + s : 'несколько секунд', + m : relativeTimeWithPlural$3, + mm : relativeTimeWithPlural$3, + h : 'час', + hh : relativeTimeWithPlural$3, + d : 'день', + dd : relativeTimeWithPlural$3, + M : 'месяц', + MM : relativeTimeWithPlural$3, + y : 'год', + yy : relativeTimeWithPlural$3 + }, + meridiemParse: /ночи|утра|дня|вечера/i, + isPM : function (input) { + return /^(дня|вечера)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночи'; + } else if (hour < 12) { + return 'утра'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечера'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + return number + '-й'; + case 'D': + return number + '-го'; + case 'w': + case 'W': + return number + '-я'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Sindhi [sd] +//! author : Narain Sagar : https://github.com/narainsagar + +var months$6 = [ + 'جنوري', + 'فيبروري', + 'مارچ', + 'اپريل', + 'مئي', + 'جون', + 'جولاءِ', + 'آگسٽ', + 'سيپٽمبر', + 'آڪٽوبر', + 'نومبر', + 'ڊسمبر' +]; +var days$1 = [ + 'آچر', + 'سومر', + 'اڱارو', + 'اربع', + 'خميس', + 'جمع', + 'ڇنڇر' +]; + +hooks.defineLocale('sd', { + months : months$6, + monthsShort : months$6, + weekdays : days$1, + weekdaysShort : days$1, + weekdaysMin : days$1, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd، D MMMM YYYY HH:mm' + }, + meridiemParse: /صبح|شام/, + isPM : function (input) { + return 'شام' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar : { + sameDay : '[اڄ] LT', + nextDay : '[سڀاڻي] LT', + nextWeek : 'dddd [اڳين هفتي تي] LT', + lastDay : '[ڪالهه] LT', + lastWeek : '[گزريل هفتي] dddd [تي] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s پوء', + past : '%s اڳ', + s : 'چند سيڪنڊ', + m : 'هڪ منٽ', + mm : '%d منٽ', + h : 'هڪ ڪلاڪ', + hh : '%d ڪلاڪ', + d : 'هڪ ڏينهن', + dd : '%d ڏينهن', + M : 'هڪ مهينو', + MM : '%d مهينا', + y : 'هڪ سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Northern Sami [se] +//! authors : Bård Rolstad Henriksen : https://github.com/karamell + + +hooks.defineLocale('se', { + months : 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'), + monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'), + weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'), + weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'), + weekdaysMin : 's_v_m_g_d_b_L'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'MMMM D. [b.] YYYY', + LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm', + LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm' + }, + calendar : { + sameDay: '[otne ti] LT', + nextDay: '[ihttin ti] LT', + nextWeek: 'dddd [ti] LT', + lastDay: '[ikte ti] LT', + lastWeek: '[ovddit] dddd [ti] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s geažes', + past : 'maŋit %s', + s : 'moadde sekunddat', + m : 'okta minuhta', + mm : '%d minuhtat', + h : 'okta diimmu', + hh : '%d diimmut', + d : 'okta beaivi', + dd : '%d beaivvit', + M : 'okta mánnu', + MM : '%d mánut', + y : 'okta jahki', + yy : '%d jagit' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Sinhalese [si] +//! author : Sampath Sitinamaluwa : https://github.com/sampathsris + +/*jshint -W100*/ +hooks.defineLocale('si', { + months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'), + monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'), + weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'), + weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'), + weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'a h:mm', + LTS : 'a h:mm:ss', + L : 'YYYY/MM/DD', + LL : 'YYYY MMMM D', + LLL : 'YYYY MMMM D, a h:mm', + LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss' + }, + calendar : { + sameDay : '[අද] LT[ට]', + nextDay : '[හෙට] LT[ට]', + nextWeek : 'dddd LT[ට]', + lastDay : '[ඊයේ] LT[ට]', + lastWeek : '[පසුගිය] dddd LT[ට]', + sameElse : 'L' + }, + relativeTime : { + future : '%sකින්', + past : '%sකට පෙර', + s : 'තත්පර කිහිපය', + m : 'මිනිත්තුව', + mm : 'මිනිත්තු %d', + h : 'පැය', + hh : 'පැය %d', + d : 'දිනය', + dd : 'දින %d', + M : 'මාසය', + MM : 'මාස %d', + y : 'වසර', + yy : 'වසර %d' + }, + dayOfMonthOrdinalParse: /\d{1,2} වැනි/, + ordinal : function (number) { + return number + ' වැනි'; + }, + meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./, + isPM : function (input) { + return input === 'ප.ව.' || input === 'පස් වරු'; + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'ප.ව.' : 'පස් වරු'; + } else { + return isLower ? 'පෙ.ව.' : 'පෙර වරු'; + } + } +}); + +//! moment.js locale configuration +//! locale : Slovak [sk] +//! author : Martin Minka : https://github.com/k2s +//! based on work of petrbela : https://github.com/petrbela + +var months$7 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'); +var monthsShort$4 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); +function plural$5(n) { + return (n > 1) && (n < 5); +} +function translate$8(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': // a few seconds / in a few seconds / a few seconds ago + return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami'; + case 'm': // a minute / in a minute / a minute ago + return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou'); + case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'minúty' : 'minút'); + } else { + return result + 'minútami'; + } + break; + case 'h': // an hour / in an hour / an hour ago + return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou'); + case 'hh': // 9 hours / in 9 hours / 9 hours ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'hodiny' : 'hodín'); + } else { + return result + 'hodinami'; + } + break; + case 'd': // a day / in a day / a day ago + return (withoutSuffix || isFuture) ? 'deň' : 'dňom'; + case 'dd': // 9 days / in 9 days / 9 days ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'dni' : 'dní'); + } else { + return result + 'dňami'; + } + break; + case 'M': // a month / in a month / a month ago + return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom'; + case 'MM': // 9 months / in 9 months / 9 months ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'mesiace' : 'mesiacov'); + } else { + return result + 'mesiacmi'; + } + break; + case 'y': // a year / in a year / a year ago + return (withoutSuffix || isFuture) ? 'rok' : 'rokom'; + case 'yy': // 9 years / in 9 years / 9 years ago + if (withoutSuffix || isFuture) { + return result + (plural$5(number) ? 'roky' : 'rokov'); + } else { + return result + 'rokmi'; + } + break; + } +} + +hooks.defineLocale('sk', { + months : months$7, + monthsShort : monthsShort$4, + weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'), + weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'), + weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'), + longDateFormat : { + LT: 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd D. MMMM YYYY H:mm' + }, + calendar : { + sameDay: '[dnes o] LT', + nextDay: '[zajtra o] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[v nedeľu o] LT'; + case 1: + case 2: + return '[v] dddd [o] LT'; + case 3: + return '[v stredu o] LT'; + case 4: + return '[vo štvrtok o] LT'; + case 5: + return '[v piatok o] LT'; + case 6: + return '[v sobotu o] LT'; + } + }, + lastDay: '[včera o] LT', + lastWeek: function () { + switch (this.day()) { + case 0: + return '[minulú nedeľu o] LT'; + case 1: + case 2: + return '[minulý] dddd [o] LT'; + case 3: + return '[minulú stredu o] LT'; + case 4: + case 5: + return '[minulý] dddd [o] LT'; + case 6: + return '[minulú sobotu o] LT'; + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pred %s', + s : translate$8, + m : translate$8, + mm : translate$8, + h : translate$8, + hh : translate$8, + d : translate$8, + dd : translate$8, + M : translate$8, + MM : translate$8, + y : translate$8, + yy : translate$8 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Slovenian [sl] +//! author : Robert Sedovšek : https://github.com/sedovsek + +function processRelativeTime$6(number, withoutSuffix, key, isFuture) { + var result = number + ' '; + switch (key) { + case 's': + return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami'; + case 'm': + return withoutSuffix ? 'ena minuta' : 'eno minuto'; + case 'mm': + if (number === 1) { + result += withoutSuffix ? 'minuta' : 'minuto'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'minute' : 'minutami'; + } else { + result += withoutSuffix || isFuture ? 'minut' : 'minutami'; + } + return result; + case 'h': + return withoutSuffix ? 'ena ura' : 'eno uro'; + case 'hh': + if (number === 1) { + result += withoutSuffix ? 'ura' : 'uro'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'uri' : 'urama'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'ure' : 'urami'; + } else { + result += withoutSuffix || isFuture ? 'ur' : 'urami'; + } + return result; + case 'd': + return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; + case 'dd': + if (number === 1) { + result += withoutSuffix || isFuture ? 'dan' : 'dnem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; + } else { + result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; + } + return result; + case 'M': + return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; + case 'MM': + if (number === 1) { + result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; + } else { + result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; + } + return result; + case 'y': + return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; + case 'yy': + if (number === 1) { + result += withoutSuffix || isFuture ? 'leto' : 'letom'; + } else if (number === 2) { + result += withoutSuffix || isFuture ? 'leti' : 'letoma'; + } else if (number < 5) { + result += withoutSuffix || isFuture ? 'leta' : 'leti'; + } else { + result += withoutSuffix || isFuture ? 'let' : 'leti'; + } + return result; + } +} + +hooks.defineLocale('sl', { + months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'), + monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'), + weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'), + weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM YYYY', + LLL : 'D. MMMM YYYY H:mm', + LLLL : 'dddd, D. MMMM YYYY H:mm' + }, + calendar : { + sameDay : '[danes ob] LT', + nextDay : '[jutri ob] LT', + + nextWeek : function () { + switch (this.day()) { + case 0: + return '[v] [nedeljo] [ob] LT'; + case 3: + return '[v] [sredo] [ob] LT'; + case 6: + return '[v] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[v] dddd [ob] LT'; + } + }, + lastDay : '[včeraj ob] LT', + lastWeek : function () { + switch (this.day()) { + case 0: + return '[prejšnjo] [nedeljo] [ob] LT'; + case 3: + return '[prejšnjo] [sredo] [ob] LT'; + case 6: + return '[prejšnjo] [soboto] [ob] LT'; + case 1: + case 2: + case 4: + case 5: + return '[prejšnji] dddd [ob] LT'; + } + }, + sameElse : 'L' + }, + relativeTime : { + future : 'čez %s', + past : 'pred %s', + s : processRelativeTime$6, + m : processRelativeTime$6, + mm : processRelativeTime$6, + h : processRelativeTime$6, + hh : processRelativeTime$6, + d : processRelativeTime$6, + dd : processRelativeTime$6, + M : processRelativeTime$6, + MM : processRelativeTime$6, + y : processRelativeTime$6, + yy : processRelativeTime$6 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Albanian [sq] +//! author : Flakërim Ismani : https://github.com/flakerimi +//! author : Menelion Elensúle : https://github.com/Oire +//! author : Oerd Cukalla : https://github.com/oerd + +hooks.defineLocale('sq', { + months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'), + monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), + weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'), + weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), + weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'), + weekdaysParseExact : true, + meridiemParse: /PD|MD/, + isPM: function (input) { + return input.charAt(0) === 'M'; + }, + meridiem : function (hours, minutes, isLower) { + return hours < 12 ? 'PD' : 'MD'; + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[Sot në] LT', + nextDay : '[Nesër në] LT', + nextWeek : 'dddd [në] LT', + lastDay : '[Dje në] LT', + lastWeek : 'dddd [e kaluar në] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'në %s', + past : '%s më parë', + s : 'disa sekonda', + m : 'një minutë', + mm : '%d minuta', + h : 'një orë', + hh : '%d orë', + d : 'një ditë', + dd : '%d ditë', + M : 'një muaj', + MM : '%d muaj', + y : 'një vit', + yy : '%d vite' + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Serbian Cyrillic [sr-cyrl] +//! author : Milan Janačković : https://github.com/milan-j + +var translator$1 = { + words: { //Different grammatical cases + m: ['један минут', 'једне минуте'], + mm: ['минут', 'минуте', 'минута'], + h: ['један сат', 'једног сата'], + hh: ['сат', 'сата', 'сати'], + dd: ['дан', 'дана', 'дана'], + MM: ['месец', 'месеца', 'месеци'], + yy: ['година', 'године', 'година'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator$1.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey); + } + } +}; + +hooks.defineLocale('sr-cyrl', { + months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'), + monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'), + monthsParseExact: true, + weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'), + weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'), + weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[данас у] LT', + nextDay: '[сутра у] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[у] [недељу] [у] LT'; + case 3: + return '[у] [среду] [у] LT'; + case 6: + return '[у] [суботу] [у] LT'; + case 1: + case 2: + case 4: + case 5: + return '[у] dddd [у] LT'; + } + }, + lastDay : '[јуче у] LT', + lastWeek : function () { + var lastWeekDays = [ + '[прошле] [недеље] [у] LT', + '[прошлог] [понедељка] [у] LT', + '[прошлог] [уторка] [у] LT', + '[прошле] [среде] [у] LT', + '[прошлог] [четвртка] [у] LT', + '[прошлог] [петка] [у] LT', + '[прошле] [суботе] [у] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'за %s', + past : 'пре %s', + s : 'неколико секунди', + m : translator$1.translate, + mm : translator$1.translate, + h : translator$1.translate, + hh : translator$1.translate, + d : 'дан', + dd : translator$1.translate, + M : 'месец', + MM : translator$1.translate, + y : 'годину', + yy : translator$1.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Serbian [sr] +//! author : Milan Janačković : https://github.com/milan-j + +var translator$2 = { + words: { //Different grammatical cases + m: ['jedan minut', 'jedne minute'], + mm: ['minut', 'minute', 'minuta'], + h: ['jedan sat', 'jednog sata'], + hh: ['sat', 'sata', 'sati'], + dd: ['dan', 'dana', 'dana'], + MM: ['mesec', 'meseca', 'meseci'], + yy: ['godina', 'godine', 'godina'] + }, + correctGrammaticalCase: function (number, wordKey) { + return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]); + }, + translate: function (number, withoutSuffix, key) { + var wordKey = translator$2.words[key]; + if (key.length === 1) { + return withoutSuffix ? wordKey[0] : wordKey[1]; + } else { + return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey); + } + } +}; + +hooks.defineLocale('sr', { + months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'), + monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'), + monthsParseExact: true, + weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'), + weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'), + weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'), + weekdaysParseExact : true, + longDateFormat: { + LT: 'H:mm', + LTS : 'H:mm:ss', + L: 'DD.MM.YYYY', + LL: 'D. MMMM YYYY', + LLL: 'D. MMMM YYYY H:mm', + LLLL: 'dddd, D. MMMM YYYY H:mm' + }, + calendar: { + sameDay: '[danas u] LT', + nextDay: '[sutra u] LT', + nextWeek: function () { + switch (this.day()) { + case 0: + return '[u] [nedelju] [u] LT'; + case 3: + return '[u] [sredu] [u] LT'; + case 6: + return '[u] [subotu] [u] LT'; + case 1: + case 2: + case 4: + case 5: + return '[u] dddd [u] LT'; + } + }, + lastDay : '[juče u] LT', + lastWeek : function () { + var lastWeekDays = [ + '[prošle] [nedelje] [u] LT', + '[prošlog] [ponedeljka] [u] LT', + '[prošlog] [utorka] [u] LT', + '[prošle] [srede] [u] LT', + '[prošlog] [četvrtka] [u] LT', + '[prošlog] [petka] [u] LT', + '[prošle] [subote] [u] LT' + ]; + return lastWeekDays[this.day()]; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'za %s', + past : 'pre %s', + s : 'nekoliko sekundi', + m : translator$2.translate, + mm : translator$2.translate, + h : translator$2.translate, + hh : translator$2.translate, + d : 'dan', + dd : translator$2.translate, + M : 'mesec', + MM : translator$2.translate, + y : 'godinu', + yy : translator$2.translate + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : siSwati [ss] +//! author : Nicolai Davies : https://github.com/nicolaidavies + + +hooks.defineLocale('ss', { + months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'), + monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), + weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'), + weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), + weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Namuhla nga] LT', + nextDay : '[Kusasa nga] LT', + nextWeek : 'dddd [nga] LT', + lastDay : '[Itolo nga] LT', + lastWeek : 'dddd [leliphelile] [nga] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'nga %s', + past : 'wenteka nga %s', + s : 'emizuzwana lomcane', + m : 'umzuzu', + mm : '%d emizuzu', + h : 'lihora', + hh : '%d emahora', + d : 'lilanga', + dd : '%d emalanga', + M : 'inyanga', + MM : '%d tinyanga', + y : 'umnyaka', + yy : '%d iminyaka' + }, + meridiemParse: /ekuseni|emini|entsambama|ebusuku/, + meridiem : function (hours, minutes, isLower) { + if (hours < 11) { + return 'ekuseni'; + } else if (hours < 15) { + return 'emini'; + } else if (hours < 19) { + return 'entsambama'; + } else { + return 'ebusuku'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'ekuseni') { + return hour; + } else if (meridiem === 'emini') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { + if (hour === 0) { + return 0; + } + return hour + 12; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : '%d', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Swedish [sv] +//! author : Jens Alm : https://github.com/ulmus + +hooks.defineLocale('sv', { + months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'), + monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), + weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), + weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'), + weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY-MM-DD', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY [kl.] HH:mm', + LLLL : 'dddd D MMMM YYYY [kl.] HH:mm', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Idag] LT', + nextDay: '[Imorgon] LT', + lastDay: '[Igår] LT', + nextWeek: '[På] dddd LT', + lastWeek: '[I] dddd[s] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'om %s', + past : 'för %s sedan', + s : 'några sekunder', + m : 'en minut', + mm : '%d minuter', + h : 'en timme', + hh : '%d timmar', + d : 'en dag', + dd : '%d dagar', + M : 'en månad', + MM : '%d månader', + y : 'ett år', + yy : '%d år' + }, + dayOfMonthOrdinalParse: /\d{1,2}(e|a)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'e' : + (b === 1) ? 'a' : + (b === 2) ? 'a' : + (b === 3) ? 'e' : 'e'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Swahili [sw] +//! author : Fahad Kassim : https://github.com/fadsel + +hooks.defineLocale('sw', { + months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'), + monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), + weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'), + weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), + weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[leo saa] LT', + nextDay : '[kesho saa] LT', + nextWeek : '[wiki ijayo] dddd [saat] LT', + lastDay : '[jana] LT', + lastWeek : '[wiki iliyopita] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s baadaye', + past : 'tokea %s', + s : 'hivi punde', + m : 'dakika moja', + mm : 'dakika %d', + h : 'saa limoja', + hh : 'masaa %d', + d : 'siku moja', + dd : 'masiku %d', + M : 'mwezi mmoja', + MM : 'miezi %d', + y : 'mwaka mmoja', + yy : 'miaka %d' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Tamil [ta] +//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 + +var symbolMap$12 = { + '1': '௧', + '2': '௨', + '3': '௩', + '4': '௪', + '5': '௫', + '6': '௬', + '7': '௭', + '8': '௮', + '9': '௯', + '0': '௦' +}; +var numberMap$11 = { + '௧': '1', + '௨': '2', + '௩': '3', + '௪': '4', + '௫': '5', + '௬': '6', + '௭': '7', + '௮': '8', + '௯': '9', + '௦': '0' +}; + +hooks.defineLocale('ta', { + months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'), + weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'), + weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'), + weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, HH:mm', + LLLL : 'dddd, D MMMM YYYY, HH:mm' + }, + calendar : { + sameDay : '[இன்று] LT', + nextDay : '[நாளை] LT', + nextWeek : 'dddd, LT', + lastDay : '[நேற்று] LT', + lastWeek : '[கடந்த வாரம்] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s இல்', + past : '%s முன்', + s : 'ஒரு சில விநாடிகள்', + m : 'ஒரு நிமிடம்', + mm : '%d நிமிடங்கள்', + h : 'ஒரு மணி நேரம்', + hh : '%d மணி நேரம்', + d : 'ஒரு நாள்', + dd : '%d நாட்கள்', + M : 'ஒரு மாதம்', + MM : '%d மாதங்கள்', + y : 'ஒரு வருடம்', + yy : '%d ஆண்டுகள்' + }, + dayOfMonthOrdinalParse: /\d{1,2}வது/, + ordinal : function (number) { + return number + 'வது'; + }, + preparse: function (string) { + return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) { + return numberMap$11[match]; + }); + }, + postformat: function (string) { + return string.replace(/\d/g, function (match) { + return symbolMap$12[match]; + }); + }, + // refer http://ta.wikipedia.org/s/1er1 + meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/, + meridiem : function (hour, minute, isLower) { + if (hour < 2) { + return ' யாமம்'; + } else if (hour < 6) { + return ' வைகறை'; // வைகறை + } else if (hour < 10) { + return ' காலை'; // காலை + } else if (hour < 14) { + return ' நண்பகல்'; // நண்பகல் + } else if (hour < 18) { + return ' எற்பாடு'; // எற்பாடு + } else if (hour < 22) { + return ' மாலை'; // மாலை + } else { + return ' யாமம்'; + } + }, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'யாமம்') { + return hour < 2 ? hour : hour + 12; + } else if (meridiem === 'வைகறை' || meridiem === 'காலை') { + return hour; + } else if (meridiem === 'நண்பகல்') { + return hour >= 10 ? hour : hour + 12; + } else { + return hour + 12; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Telugu [te] +//! author : Krishna Chaitanya Thota : https://github.com/kcthota + +hooks.defineLocale('te', { + months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'), + monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'), + monthsParseExact : true, + weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'), + weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'), + weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'), + longDateFormat : { + LT : 'A h:mm', + LTS : 'A h:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY, A h:mm', + LLLL : 'dddd, D MMMM YYYY, A h:mm' + }, + calendar : { + sameDay : '[నేడు] LT', + nextDay : '[రేపు] LT', + nextWeek : 'dddd, LT', + lastDay : '[నిన్న] LT', + lastWeek : '[గత] dddd, LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s లో', + past : '%s క్రితం', + s : 'కొన్ని క్షణాలు', + m : 'ఒక నిమిషం', + mm : '%d నిమిషాలు', + h : 'ఒక గంట', + hh : '%d గంటలు', + d : 'ఒక రోజు', + dd : '%d రోజులు', + M : 'ఒక నెల', + MM : '%d నెలలు', + y : 'ఒక సంవత్సరం', + yy : '%d సంవత్సరాలు' + }, + dayOfMonthOrdinalParse : /\d{1,2}వ/, + ordinal : '%dవ', + meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === 'రాత్రి') { + return hour < 4 ? hour : hour + 12; + } else if (meridiem === 'ఉదయం') { + return hour; + } else if (meridiem === 'మధ్యాహ్నం') { + return hour >= 10 ? hour : hour + 12; + } else if (meridiem === 'సాయంత్రం') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'రాత్రి'; + } else if (hour < 10) { + return 'ఉదయం'; + } else if (hour < 17) { + return 'మధ్యాహ్నం'; + } else if (hour < 20) { + return 'సాయంత్రం'; + } else { + return 'రాత్రి'; + } + }, + week : { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Tetun Dili (East Timor) [tet] +//! author : Joshua Brooks : https://github.com/joshbrooks +//! author : Onorio De J. Afonso : https://github.com/marobo + +hooks.defineLocale('tet', { + months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu'.split('_'), + weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sext_Sab'.split('_'), + weekdaysMin : 'Do_Seg_Te_Ku_Ki_Sex_Sa'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Ohin iha] LT', + nextDay: '[Aban iha] LT', + nextWeek: 'dddd [iha] LT', + lastDay: '[Horiseik iha] LT', + lastWeek: 'dddd [semana kotuk] [iha] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'iha %s', + past : '%s liuba', + s : 'minutu balun', + m : 'minutu ida', + mm : 'minutus %d', + h : 'horas ida', + hh : 'horas %d', + d : 'loron ida', + dd : 'loron %d', + M : 'fulan ida', + MM : 'fulan %d', + y : 'tinan ida', + yy : 'tinan %d' + }, + dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Thai [th] +//! author : Kridsada Thanabulpong : https://github.com/sirn + +hooks.defineLocale('th', { + months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'), + monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'), + monthsParseExact: true, + weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'), + weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference + weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY เวลา H:mm', + LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm' + }, + meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/, + isPM: function (input) { + return input === 'หลังเที่ยง'; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'ก่อนเที่ยง'; + } else { + return 'หลังเที่ยง'; + } + }, + calendar : { + sameDay : '[วันนี้ เวลา] LT', + nextDay : '[พรุ่งนี้ เวลา] LT', + nextWeek : 'dddd[หน้า เวลา] LT', + lastDay : '[เมื่อวานนี้ เวลา] LT', + lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'อีก %s', + past : '%sที่แล้ว', + s : 'ไม่กี่วินาที', + m : '1 นาที', + mm : '%d นาที', + h : '1 ชั่วโมง', + hh : '%d ชั่วโมง', + d : '1 วัน', + dd : '%d วัน', + M : '1 เดือน', + MM : '%d เดือน', + y : '1 ปี', + yy : '%d ปี' + } +}); + +//! moment.js locale configuration +//! locale : Tagalog (Philippines) [tl-ph] +//! author : Dan Hagman : https://github.com/hagmandan + +hooks.defineLocale('tl-ph', { + months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'), + monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), + weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'), + weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), + weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'MM/D/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY HH:mm', + LLLL : 'dddd, MMMM DD, YYYY HH:mm' + }, + calendar : { + sameDay: 'LT [ngayong araw]', + nextDay: '[Bukas ng] LT', + nextWeek: 'LT [sa susunod na] dddd', + lastDay: 'LT [kahapon]', + lastWeek: 'LT [noong nakaraang] dddd', + sameElse: 'L' + }, + relativeTime : { + future : 'sa loob ng %s', + past : '%s ang nakalipas', + s : 'ilang segundo', + m : 'isang minuto', + mm : '%d minuto', + h : 'isang oras', + hh : '%d oras', + d : 'isang araw', + dd : '%d araw', + M : 'isang buwan', + MM : '%d buwan', + y : 'isang taon', + yy : '%d taon' + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Klingon [tlh] +//! author : Dominika Kruk : https://github.com/amaranthrose + +var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); + +function translateFuture(output) { + var time = output; + time = (output.indexOf('jaj') !== -1) ? + time.slice(0, -3) + 'leS' : + (output.indexOf('jar') !== -1) ? + time.slice(0, -3) + 'waQ' : + (output.indexOf('DIS') !== -1) ? + time.slice(0, -3) + 'nem' : + time + ' pIq'; + return time; +} + +function translatePast(output) { + var time = output; + time = (output.indexOf('jaj') !== -1) ? + time.slice(0, -3) + 'Hu’' : + (output.indexOf('jar') !== -1) ? + time.slice(0, -3) + 'wen' : + (output.indexOf('DIS') !== -1) ? + time.slice(0, -3) + 'ben' : + time + ' ret'; + return time; +} + +function translate$9(number, withoutSuffix, string, isFuture) { + var numberNoun = numberAsNoun(number); + switch (string) { + case 'mm': + return numberNoun + ' tup'; + case 'hh': + return numberNoun + ' rep'; + case 'dd': + return numberNoun + ' jaj'; + case 'MM': + return numberNoun + ' jar'; + case 'yy': + return numberNoun + ' DIS'; + } +} + +function numberAsNoun(number) { + var hundred = Math.floor((number % 1000) / 100), + ten = Math.floor((number % 100) / 10), + one = number % 10, + word = ''; + if (hundred > 0) { + word += numbersNouns[hundred] + 'vatlh'; + } + if (ten > 0) { + word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH'; + } + if (one > 0) { + word += ((word !== '') ? ' ' : '') + numbersNouns[one]; + } + return (word === '') ? 'pagh' : word; +} + +hooks.defineLocale('tlh', { + months : 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'), + monthsShort : 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'), + monthsParseExact : true, + weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[DaHjaj] LT', + nextDay: '[wa’leS] LT', + nextWeek: 'LLL', + lastDay: '[wa’Hu’] LT', + lastWeek: 'LLL', + sameElse: 'L' + }, + relativeTime : { + future : translateFuture, + past : translatePast, + s : 'puS lup', + m : 'wa’ tup', + mm : translate$9, + h : 'wa’ rep', + hh : translate$9, + d : 'wa’ jaj', + dd : translate$9, + M : 'wa’ jar', + MM : translate$9, + y : 'wa’ DIS', + yy : translate$9 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Turkish [tr] +//! authors : Erhan Gundogan : https://github.com/erhangundogan, +//! Burak Yiğit Kaya: https://github.com/BYK + +var suffixes$3 = { + 1: '\'inci', + 5: '\'inci', + 8: '\'inci', + 70: '\'inci', + 80: '\'inci', + 2: '\'nci', + 7: '\'nci', + 20: '\'nci', + 50: '\'nci', + 3: '\'üncü', + 4: '\'üncü', + 100: '\'üncü', + 6: '\'ncı', + 9: '\'uncu', + 10: '\'uncu', + 30: '\'uncu', + 60: '\'ıncı', + 90: '\'ıncı' +}; + +hooks.defineLocale('tr', { + months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'), + monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'), + weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'), + weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'), + weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[bugün saat] LT', + nextDay : '[yarın saat] LT', + nextWeek : '[haftaya] dddd [saat] LT', + lastDay : '[dün] LT', + lastWeek : '[geçen hafta] dddd [saat] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s sonra', + past : '%s önce', + s : 'birkaç saniye', + m : 'bir dakika', + mm : '%d dakika', + h : 'bir saat', + hh : '%d saat', + d : 'bir gün', + dd : '%d gün', + M : 'bir ay', + MM : '%d ay', + y : 'bir yıl', + yy : '%d yıl' + }, + dayOfMonthOrdinalParse: /\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/, + ordinal : function (number) { + if (number === 0) { // special case for zero + return number + '\'ıncı'; + } + var a = number % 10, + b = number % 100 - a, + c = number >= 100 ? 100 : null; + return number + (suffixes$3[a] || suffixes$3[b] || suffixes$3[c]); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Talossan [tzl] +//! author : Robin van der Vliet : https://github.com/robin0van0der0v +//! author : Iustì Canun + +// After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. +// This is currently too difficult (maybe even impossible) to add. +hooks.defineLocale('tzl', { + months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'), + monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), + weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), + weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), + weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), + longDateFormat : { + LT : 'HH.mm', + LTS : 'HH.mm.ss', + L : 'DD.MM.YYYY', + LL : 'D. MMMM [dallas] YYYY', + LLL : 'D. MMMM [dallas] YYYY HH.mm', + LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm' + }, + meridiemParse: /d\'o|d\'a/i, + isPM : function (input) { + return 'd\'o' === input.toLowerCase(); + }, + meridiem : function (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'd\'o' : 'D\'O'; + } else { + return isLower ? 'd\'a' : 'D\'A'; + } + }, + calendar : { + sameDay : '[oxhi à] LT', + nextDay : '[demà à] LT', + nextWeek : 'dddd [à] LT', + lastDay : '[ieiri à] LT', + lastWeek : '[sür el] dddd [lasteu à] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'osprei %s', + past : 'ja%s', + s : processRelativeTime$7, + m : processRelativeTime$7, + mm : processRelativeTime$7, + h : processRelativeTime$7, + hh : processRelativeTime$7, + d : processRelativeTime$7, + dd : processRelativeTime$7, + M : processRelativeTime$7, + MM : processRelativeTime$7, + y : processRelativeTime$7, + yy : processRelativeTime$7 + }, + dayOfMonthOrdinalParse: /\d{1,2}\./, + ordinal : '%d.', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +function processRelativeTime$7(number, withoutSuffix, key, isFuture) { + var format = { + 's': ['viensas secunds', '\'iensas secunds'], + 'm': ['\'n míut', '\'iens míut'], + 'mm': [number + ' míuts', '' + number + ' míuts'], + 'h': ['\'n þora', '\'iensa þora'], + 'hh': [number + ' þoras', '' + number + ' þoras'], + 'd': ['\'n ziua', '\'iensa ziua'], + 'dd': [number + ' ziuas', '' + number + ' ziuas'], + 'M': ['\'n mes', '\'iens mes'], + 'MM': [number + ' mesen', '' + number + ' mesen'], + 'y': ['\'n ar', '\'iens ar'], + 'yy': [number + ' ars', '' + number + ' ars'] + }; + return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]); +} + +//! moment.js locale configuration +//! locale : Central Atlas Tamazight Latin [tzm-latn] +//! author : Abdel Said : https://github.com/abdelsaid + +hooks.defineLocale('tzm-latn', { + months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), + weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[asdkh g] LT', + nextDay: '[aska g] LT', + nextWeek: 'dddd [g] LT', + lastDay: '[assant g] LT', + lastWeek: 'dddd [g] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'dadkh s yan %s', + past : 'yan %s', + s : 'imik', + m : 'minuḍ', + mm : '%d minuḍ', + h : 'saɛa', + hh : '%d tassaɛin', + d : 'ass', + dd : '%d ossan', + M : 'ayowr', + MM : '%d iyyirn', + y : 'asgas', + yy : '%d isgasn' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Central Atlas Tamazight [tzm] +//! author : Abdel Said : https://github.com/abdelsaid + +hooks.defineLocale('tzm', { + months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), + weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS: 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd D MMMM YYYY HH:mm' + }, + calendar : { + sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', + nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', + nextWeek: 'dddd [ⴴ] LT', + lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', + lastWeek: 'dddd [ⴴ] LT', + sameElse: 'L' + }, + relativeTime : { + future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', + past : 'ⵢⴰⵏ %s', + s : 'ⵉⵎⵉⴽ', + m : 'ⵎⵉⵏⵓⴺ', + mm : '%d ⵎⵉⵏⵓⴺ', + h : 'ⵙⴰⵄⴰ', + hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', + d : 'ⴰⵙⵙ', + dd : '%d oⵙⵙⴰⵏ', + M : 'ⴰⵢoⵓⵔ', + MM : '%d ⵉⵢⵢⵉⵔⵏ', + y : 'ⴰⵙⴳⴰⵙ', + yy : '%d ⵉⵙⴳⴰⵙⵏ' + }, + week : { + dow : 6, // Saturday is the first day of the week. + doy : 12 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Ukrainian [uk] +//! author : zemlanin : https://github.com/zemlanin +//! Author : Menelion Elensúle : https://github.com/Oire + +function plural$6(word, num) { + var forms = word.split('_'); + return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]); +} +function relativeTimeWithPlural$4(number, withoutSuffix, key) { + var format = { + 'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин', + 'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин', + 'dd': 'день_дні_днів', + 'MM': 'місяць_місяці_місяців', + 'yy': 'рік_роки_років' + }; + if (key === 'm') { + return withoutSuffix ? 'хвилина' : 'хвилину'; + } + else if (key === 'h') { + return withoutSuffix ? 'година' : 'годину'; + } + else { + return number + ' ' + plural$6(format[key], +number); + } +} +function weekdaysCaseReplace(m, format) { + var weekdays = { + 'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'), + 'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'), + 'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_') + }; + + if (!m) { + return weekdays['nominative']; + } + + var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ? + 'accusative' : + ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ? + 'genitive' : + 'nominative'); + return weekdays[nounCase][m.day()]; +} +function processHoursFunction(str) { + return function () { + return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; + }; +} + +hooks.defineLocale('uk', { + months : { + 'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'), + 'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_') + }, + monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'), + weekdays : weekdaysCaseReplace, + weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD.MM.YYYY', + LL : 'D MMMM YYYY р.', + LLL : 'D MMMM YYYY р., HH:mm', + LLLL : 'dddd, D MMMM YYYY р., HH:mm' + }, + calendar : { + sameDay: processHoursFunction('[Сьогодні '), + nextDay: processHoursFunction('[Завтра '), + lastDay: processHoursFunction('[Вчора '), + nextWeek: processHoursFunction('[У] dddd ['), + lastWeek: function () { + switch (this.day()) { + case 0: + case 3: + case 5: + case 6: + return processHoursFunction('[Минулої] dddd [').call(this); + case 1: + case 2: + case 4: + return processHoursFunction('[Минулого] dddd [').call(this); + } + }, + sameElse: 'L' + }, + relativeTime : { + future : 'за %s', + past : '%s тому', + s : 'декілька секунд', + m : relativeTimeWithPlural$4, + mm : relativeTimeWithPlural$4, + h : 'годину', + hh : relativeTimeWithPlural$4, + d : 'день', + dd : relativeTimeWithPlural$4, + M : 'місяць', + MM : relativeTimeWithPlural$4, + y : 'рік', + yy : relativeTimeWithPlural$4 + }, + // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason + meridiemParse: /ночі|ранку|дня|вечора/, + isPM: function (input) { + return /^(дня|вечора)$/.test(input); + }, + meridiem : function (hour, minute, isLower) { + if (hour < 4) { + return 'ночі'; + } else if (hour < 12) { + return 'ранку'; + } else if (hour < 17) { + return 'дня'; + } else { + return 'вечора'; + } + }, + dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, + ordinal: function (number, period) { + switch (period) { + case 'M': + case 'd': + case 'DDD': + case 'w': + case 'W': + return number + '-й'; + case 'D': + return number + '-го'; + default: + return number; + } + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Urdu [ur] +//! author : Sawood Alam : https://github.com/ibnesayeed +//! author : Zack : https://github.com/ZackVision + +var months$8 = [ + 'جنوری', + 'فروری', + 'مارچ', + 'اپریل', + 'مئی', + 'جون', + 'جولائی', + 'اگست', + 'ستمبر', + 'اکتوبر', + 'نومبر', + 'دسمبر' +]; +var days$2 = [ + 'اتوار', + 'پیر', + 'منگل', + 'بدھ', + 'جمعرات', + 'جمعہ', + 'ہفتہ' +]; + +hooks.defineLocale('ur', { + months : months$8, + monthsShort : months$8, + weekdays : days$2, + weekdaysShort : days$2, + weekdaysMin : days$2, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd، D MMMM YYYY HH:mm' + }, + meridiemParse: /صبح|شام/, + isPM : function (input) { + return 'شام' === input; + }, + meridiem : function (hour, minute, isLower) { + if (hour < 12) { + return 'صبح'; + } + return 'شام'; + }, + calendar : { + sameDay : '[آج بوقت] LT', + nextDay : '[کل بوقت] LT', + nextWeek : 'dddd [بوقت] LT', + lastDay : '[گذشتہ روز بوقت] LT', + lastWeek : '[گذشتہ] dddd [بوقت] LT', + sameElse : 'L' + }, + relativeTime : { + future : '%s بعد', + past : '%s قبل', + s : 'چند سیکنڈ', + m : 'ایک منٹ', + mm : '%d منٹ', + h : 'ایک گھنٹہ', + hh : '%d گھنٹے', + d : 'ایک دن', + dd : '%d دن', + M : 'ایک ماہ', + MM : '%d ماہ', + y : 'ایک سال', + yy : '%d سال' + }, + preparse: function (string) { + return string.replace(/،/g, ','); + }, + postformat: function (string) { + return string.replace(/,/g, '،'); + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Uzbek Latin [uz-latn] +//! author : Rasulbek Mirzayev : github.com/Rasulbeeek + +hooks.defineLocale('uz-latn', { + months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'), + monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), + weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'), + weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), + weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' + }, + calendar : { + sameDay : '[Bugun soat] LT [da]', + nextDay : '[Ertaga] LT [da]', + nextWeek : 'dddd [kuni soat] LT [da]', + lastDay : '[Kecha soat] LT [da]', + lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]', + sameElse : 'L' + }, + relativeTime : { + future : 'Yaqin %s ichida', + past : 'Bir necha %s oldin', + s : 'soniya', + m : 'bir daqiqa', + mm : '%d daqiqa', + h : 'bir soat', + hh : '%d soat', + d : 'bir kun', + dd : '%d kun', + M : 'bir oy', + MM : '%d oy', + y : 'bir yil', + yy : '%d yil' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 1st is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Uzbek [uz] +//! author : Sardor Muminov : https://github.com/muminoff + +hooks.defineLocale('uz', { + months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'), + monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), + weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), + weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), + weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'D MMMM YYYY, dddd HH:mm' + }, + calendar : { + sameDay : '[Бугун соат] LT [да]', + nextDay : '[Эртага] LT [да]', + nextWeek : 'dddd [куни соат] LT [да]', + lastDay : '[Кеча соат] LT [да]', + lastWeek : '[Утган] dddd [куни соат] LT [да]', + sameElse : 'L' + }, + relativeTime : { + future : 'Якин %s ичида', + past : 'Бир неча %s олдин', + s : 'фурсат', + m : 'бир дакика', + mm : '%d дакика', + h : 'бир соат', + hh : '%d соат', + d : 'бир кун', + dd : '%d кун', + M : 'бир ой', + MM : '%d ой', + y : 'бир йил', + yy : '%d йил' + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 7 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Vietnamese [vi] +//! author : Bang Nguyen : https://github.com/bangnk + +hooks.defineLocale('vi', { + months : 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'), + monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'), + monthsParseExact : true, + weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'), + weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'), + weekdaysParseExact : true, + meridiemParse: /sa|ch/i, + isPM : function (input) { + return /^ch$/i.test(input); + }, + meridiem : function (hours, minutes, isLower) { + if (hours < 12) { + return isLower ? 'sa' : 'SA'; + } else { + return isLower ? 'ch' : 'CH'; + } + }, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D MMMM [năm] YYYY', + LLL : 'D MMMM [năm] YYYY HH:mm', + LLLL : 'dddd, D MMMM [năm] YYYY HH:mm', + l : 'DD/M/YYYY', + ll : 'D MMM YYYY', + lll : 'D MMM YYYY HH:mm', + llll : 'ddd, D MMM YYYY HH:mm' + }, + calendar : { + sameDay: '[Hôm nay lúc] LT', + nextDay: '[Ngày mai lúc] LT', + nextWeek: 'dddd [tuần tới lúc] LT', + lastDay: '[Hôm qua lúc] LT', + lastWeek: 'dddd [tuần rồi lúc] LT', + sameElse: 'L' + }, + relativeTime : { + future : '%s tới', + past : '%s trước', + s : 'vài giây', + m : 'một phút', + mm : '%d phút', + h : 'một giờ', + hh : '%d giờ', + d : 'một ngày', + dd : '%d ngày', + M : 'một tháng', + MM : '%d tháng', + y : 'một năm', + yy : '%d năm' + }, + dayOfMonthOrdinalParse: /\d{1,2}/, + ordinal : function (number) { + return number; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Pseudo [x-pseudo] +//! author : Andrew Hood : https://github.com/andrewhood125 + +hooks.defineLocale('x-pseudo', { + months : 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'), + monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'), + monthsParseExact : true, + weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'), + weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'), + weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY HH:mm', + LLLL : 'dddd, D MMMM YYYY HH:mm' + }, + calendar : { + sameDay : '[T~ódá~ý át] LT', + nextDay : '[T~ómó~rró~w át] LT', + nextWeek : 'dddd [át] LT', + lastDay : '[Ý~ést~érdá~ý át] LT', + lastWeek : '[L~ást] dddd [át] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'í~ñ %s', + past : '%s á~gó', + s : 'á ~féw ~sécó~ñds', + m : 'á ~míñ~úté', + mm : '%d m~íñú~tés', + h : 'á~ñ hó~úr', + hh : '%d h~óúrs', + d : 'á ~dáý', + dd : '%d d~áýs', + M : 'á ~móñ~th', + MM : '%d m~óñt~hs', + y : 'á ~ýéár', + yy : '%d ý~éárs' + }, + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (~~(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + }, + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Yoruba Nigeria [yo] +//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe + +hooks.defineLocale('yo', { + months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'), + monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'), + weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'), + weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'), + weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'), + longDateFormat : { + LT : 'h:mm A', + LTS : 'h:mm:ss A', + L : 'DD/MM/YYYY', + LL : 'D MMMM YYYY', + LLL : 'D MMMM YYYY h:mm A', + LLLL : 'dddd, D MMMM YYYY h:mm A' + }, + calendar : { + sameDay : '[Ònì ni] LT', + nextDay : '[Ọ̀la ni] LT', + nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT', + lastDay : '[Àna ni] LT', + lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT', + sameElse : 'L' + }, + relativeTime : { + future : 'ní %s', + past : '%s kọjá', + s : 'ìsẹjú aayá die', + m : 'ìsẹjú kan', + mm : 'ìsẹjú %d', + h : 'wákati kan', + hh : 'wákati %d', + d : 'ọjọ́ kan', + dd : 'ọjọ́ %d', + M : 'osù kan', + MM : 'osù %d', + y : 'ọdún kan', + yy : 'ọdún %d' + }, + dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/, + ordinal : 'ọjọ́ %d', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Chinese (China) [zh-cn] +//! author : suupic : https://github.com/suupic +//! author : Zeno Zeng : https://github.com/zenozeng + +hooks.defineLocale('zh-cn', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日Ah点mm分', + LLLL : 'YYYY年MMMD日ddddAh点mm分', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour: function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || + meridiem === '上午') { + return hour; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } else { + // '中午' + return hour >= 11 ? hour : hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/, + ordinal : function (number, period) { + switch (period) { + case 'd': + case 'D': + case 'DDD': + return number + '日'; + case 'M': + return number + '月'; + case 'w': + case 'W': + return number + '周'; + default: + return number; + } + }, + relativeTime : { + future : '%s内', + past : '%s前', + s : '几秒', + m : '1 分钟', + mm : '%d 分钟', + h : '1 小时', + hh : '%d 小时', + d : '1 天', + dd : '%d 天', + M : '1 个月', + MM : '%d 个月', + y : '1 年', + yy : '%d 年' + }, + week : { + // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效 + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +//! moment.js locale configuration +//! locale : Chinese (Hong Kong) [zh-hk] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris +//! author : Konstantin : https://github.com/skfd + +hooks.defineLocale('zh-hk', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日 HH:mm', + LLLL : 'YYYY年MMMD日dddd HH:mm', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 年', + yy : '%d 年' + } +}); + +//! moment.js locale configuration +//! locale : Chinese (Taiwan) [zh-tw] +//! author : Ben : https://github.com/ben-lin +//! author : Chris Lam : https://github.com/hehachris + +hooks.defineLocale('zh-tw', { + months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'), + monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), + weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'), + weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'), + weekdaysMin : '日_一_二_三_四_五_六'.split('_'), + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'YYYY年MMMD日', + LL : 'YYYY年MMMD日', + LLL : 'YYYY年MMMD日 HH:mm', + LLLL : 'YYYY年MMMD日dddd HH:mm', + l : 'YYYY年MMMD日', + ll : 'YYYY年MMMD日', + lll : 'YYYY年MMMD日 HH:mm', + llll : 'YYYY年MMMD日dddd HH:mm' + }, + meridiemParse: /凌晨|早上|上午|中午|下午|晚上/, + meridiemHour : function (hour, meridiem) { + if (hour === 12) { + hour = 0; + } + if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') { + return hour; + } else if (meridiem === '中午') { + return hour >= 11 ? hour : hour + 12; + } else if (meridiem === '下午' || meridiem === '晚上') { + return hour + 12; + } + }, + meridiem : function (hour, minute, isLower) { + var hm = hour * 100 + minute; + if (hm < 600) { + return '凌晨'; + } else if (hm < 900) { + return '早上'; + } else if (hm < 1130) { + return '上午'; + } else if (hm < 1230) { + return '中午'; + } else if (hm < 1800) { + return '下午'; + } else { + return '晚上'; + } + }, + calendar : { + sameDay : '[今天]LT', + nextDay : '[明天]LT', + nextWeek : '[下]ddddLT', + lastDay : '[昨天]LT', + lastWeek : '[上]ddddLT', + sameElse : 'L' + }, + dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/, + ordinal : function (number, period) { + switch (period) { + case 'd' : + case 'D' : + case 'DDD' : + return number + '日'; + case 'M' : + return number + '月'; + case 'w' : + case 'W' : + return number + '週'; + default : + return number; + } + }, + relativeTime : { + future : '%s內', + past : '%s前', + s : '幾秒', + m : '1 分鐘', + mm : '%d 分鐘', + h : '1 小時', + hh : '%d 小時', + d : '1 天', + dd : '%d 天', + M : '1 個月', + MM : '%d 個月', + y : '1 年', + yy : '%d 年' + } +}); + +hooks.locale('en'); + +return hooks; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/moment.js b/core/static/journal_about/js/moment.js new file mode 100644 index 0000000..9fe0066 --- /dev/null +++ b/core/static/journal_about/js/moment.js @@ -0,0 +1,4463 @@ +//! moment.js +//! version : 2.18.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + global.moment = factory() +}(this, (function () { 'use strict'; + +var hookCallback; + +function hooks () { + return hookCallback.apply(null, arguments); +} + +// This is done to register the method called with moment() +// without creating circular dependencies. +function setHookCallback (callback) { + hookCallback = callback; +} + +function isArray(input) { + return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; +} + +function isObject(input) { + // IE8 will treat undefined and null as object if it wasn't for + // input != null + return input != null && Object.prototype.toString.call(input) === '[object Object]'; +} + +function isObjectEmpty(obj) { + var k; + for (k in obj) { + // even if its not own property I'd still call it non-empty + return false; + } + return true; +} + +function isUndefined(input) { + return input === void 0; +} + +function isNumber(input) { + return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; +} + +function isDate(input) { + return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; +} + +function map(arr, fn) { + var res = [], i; + for (i = 0; i < arr.length; ++i) { + res.push(fn(arr[i], i)); + } + return res; +} + +function hasOwnProp(a, b) { + return Object.prototype.hasOwnProperty.call(a, b); +} + +function extend(a, b) { + for (var i in b) { + if (hasOwnProp(b, i)) { + a[i] = b[i]; + } + } + + if (hasOwnProp(b, 'toString')) { + a.toString = b.toString; + } + + if (hasOwnProp(b, 'valueOf')) { + a.valueOf = b.valueOf; + } + + return a; +} + +function createUTC (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, true).utc(); +} + +function defaultParsingFlags() { + // We need to deep clone this object. + return { + empty : false, + unusedTokens : [], + unusedInput : [], + overflow : -2, + charsLeftOver : 0, + nullInput : false, + invalidMonth : null, + invalidFormat : false, + userInvalidated : false, + iso : false, + parsedDateParts : [], + meridiem : null, + rfc2822 : false, + weekdayMismatch : false + }; +} + +function getParsingFlags(m) { + if (m._pf == null) { + m._pf = defaultParsingFlags(); + } + return m._pf; +} + +var some; +if (Array.prototype.some) { + some = Array.prototype.some; +} else { + some = function (fun) { + var t = Object(this); + var len = t.length >>> 0; + + for (var i = 0; i < len; i++) { + if (i in t && fun.call(this, t[i], i, t)) { + return true; + } + } + + return false; + }; +} + +var some$1 = some; + +function isValid(m) { + if (m._isValid == null) { + var flags = getParsingFlags(m); + var parsedParts = some$1.call(flags.parsedDateParts, function (i) { + return i != null; + }); + var isNowValid = !isNaN(m._d.getTime()) && + flags.overflow < 0 && + !flags.empty && + !flags.invalidMonth && + !flags.invalidWeekday && + !flags.nullInput && + !flags.invalidFormat && + !flags.userInvalidated && + (!flags.meridiem || (flags.meridiem && parsedParts)); + + if (m._strict) { + isNowValid = isNowValid && + flags.charsLeftOver === 0 && + flags.unusedTokens.length === 0 && + flags.bigHour === undefined; + } + + if (Object.isFrozen == null || !Object.isFrozen(m)) { + m._isValid = isNowValid; + } + else { + return isNowValid; + } + } + return m._isValid; +} + +function createInvalid (flags) { + var m = createUTC(NaN); + if (flags != null) { + extend(getParsingFlags(m), flags); + } + else { + getParsingFlags(m).userInvalidated = true; + } + + return m; +} + +// Plugins that add properties should also add the key here (null value), +// so we can properly clone ourselves. +var momentProperties = hooks.momentProperties = []; + +function copyConfig(to, from) { + var i, prop, val; + + if (!isUndefined(from._isAMomentObject)) { + to._isAMomentObject = from._isAMomentObject; + } + if (!isUndefined(from._i)) { + to._i = from._i; + } + if (!isUndefined(from._f)) { + to._f = from._f; + } + if (!isUndefined(from._l)) { + to._l = from._l; + } + if (!isUndefined(from._strict)) { + to._strict = from._strict; + } + if (!isUndefined(from._tzm)) { + to._tzm = from._tzm; + } + if (!isUndefined(from._isUTC)) { + to._isUTC = from._isUTC; + } + if (!isUndefined(from._offset)) { + to._offset = from._offset; + } + if (!isUndefined(from._pf)) { + to._pf = getParsingFlags(from); + } + if (!isUndefined(from._locale)) { + to._locale = from._locale; + } + + if (momentProperties.length > 0) { + for (i = 0; i < momentProperties.length; i++) { + prop = momentProperties[i]; + val = from[prop]; + if (!isUndefined(val)) { + to[prop] = val; + } + } + } + + return to; +} + +var updateInProgress = false; + +// Moment prototype object +function Moment(config) { + copyConfig(this, config); + this._d = new Date(config._d != null ? config._d.getTime() : NaN); + if (!this.isValid()) { + this._d = new Date(NaN); + } + // Prevent infinite loop in case updateOffset creates new moment + // objects. + if (updateInProgress === false) { + updateInProgress = true; + hooks.updateOffset(this); + updateInProgress = false; + } +} + +function isMoment (obj) { + return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); +} + +function absFloor (number) { + if (number < 0) { + // -0 -> 0 + return Math.ceil(number) || 0; + } else { + return Math.floor(number); + } +} + +function toInt(argumentForCoercion) { + var coercedNumber = +argumentForCoercion, + value = 0; + + if (coercedNumber !== 0 && isFinite(coercedNumber)) { + value = absFloor(coercedNumber); + } + + return value; +} + +// compare two arrays, return the number of differences +function compareArrays(array1, array2, dontConvert) { + var len = Math.min(array1.length, array2.length), + lengthDiff = Math.abs(array1.length - array2.length), + diffs = 0, + i; + for (i = 0; i < len; i++) { + if ((dontConvert && array1[i] !== array2[i]) || + (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { + diffs++; + } + } + return diffs + lengthDiff; +} + +function warn(msg) { + if (hooks.suppressDeprecationWarnings === false && + (typeof console !== 'undefined') && console.warn) { + console.warn('Deprecation warning: ' + msg); + } +} + +function deprecate(msg, fn) { + var firstTime = true; + + return extend(function () { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(null, msg); + } + if (firstTime) { + var args = []; + var arg; + for (var i = 0; i < arguments.length; i++) { + arg = ''; + if (typeof arguments[i] === 'object') { + arg += '\n[' + i + '] '; + for (var key in arguments[0]) { + arg += key + ': ' + arguments[0][key] + ', '; + } + arg = arg.slice(0, -2); // Remove trailing comma and space + } else { + arg = arguments[i]; + } + args.push(arg); + } + warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); + firstTime = false; + } + return fn.apply(this, arguments); + }, fn); +} + +var deprecations = {}; + +function deprecateSimple(name, msg) { + if (hooks.deprecationHandler != null) { + hooks.deprecationHandler(name, msg); + } + if (!deprecations[name]) { + warn(msg); + deprecations[name] = true; + } +} + +hooks.suppressDeprecationWarnings = false; +hooks.deprecationHandler = null; + +function isFunction(input) { + return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; +} + +function set (config) { + var prop, i; + for (i in config) { + prop = config[i]; + if (isFunction(prop)) { + this[i] = prop; + } else { + this['_' + i] = prop; + } + } + this._config = config; + // Lenient ordinal parsing accepts just a number in addition to + // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. + // TODO: Remove "ordinalParse" fallback in next major release. + this._dayOfMonthOrdinalParseLenient = new RegExp( + (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + + '|' + (/\d{1,2}/).source); +} + +function mergeConfigs(parentConfig, childConfig) { + var res = extend({}, parentConfig), prop; + for (prop in childConfig) { + if (hasOwnProp(childConfig, prop)) { + if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { + res[prop] = {}; + extend(res[prop], parentConfig[prop]); + extend(res[prop], childConfig[prop]); + } else if (childConfig[prop] != null) { + res[prop] = childConfig[prop]; + } else { + delete res[prop]; + } + } + } + for (prop in parentConfig) { + if (hasOwnProp(parentConfig, prop) && + !hasOwnProp(childConfig, prop) && + isObject(parentConfig[prop])) { + // make sure changes to properties don't modify parent config + res[prop] = extend({}, res[prop]); + } + } + return res; +} + +function Locale(config) { + if (config != null) { + this.set(config); + } +} + +var keys; + +if (Object.keys) { + keys = Object.keys; +} else { + keys = function (obj) { + var i, res = []; + for (i in obj) { + if (hasOwnProp(obj, i)) { + res.push(i); + } + } + return res; + }; +} + +var keys$1 = keys; + +var defaultCalendar = { + sameDay : '[Today at] LT', + nextDay : '[Tomorrow at] LT', + nextWeek : 'dddd [at] LT', + lastDay : '[Yesterday at] LT', + lastWeek : '[Last] dddd [at] LT', + sameElse : 'L' +}; + +function calendar (key, mom, now) { + var output = this._calendar[key] || this._calendar['sameElse']; + return isFunction(output) ? output.call(mom, now) : output; +} + +var defaultLongDateFormat = { + LTS : 'h:mm:ss A', + LT : 'h:mm A', + L : 'MM/DD/YYYY', + LL : 'MMMM D, YYYY', + LLL : 'MMMM D, YYYY h:mm A', + LLLL : 'dddd, MMMM D, YYYY h:mm A' +}; + +function longDateFormat (key) { + var format = this._longDateFormat[key], + formatUpper = this._longDateFormat[key.toUpperCase()]; + + if (format || !formatUpper) { + return format; + } + + this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { + return val.slice(1); + }); + + return this._longDateFormat[key]; +} + +var defaultInvalidDate = 'Invalid date'; + +function invalidDate () { + return this._invalidDate; +} + +var defaultOrdinal = '%d'; +var defaultDayOfMonthOrdinalParse = /\d{1,2}/; + +function ordinal (number) { + return this._ordinal.replace('%d', number); +} + +var defaultRelativeTime = { + future : 'in %s', + past : '%s ago', + s : 'a few seconds', + ss : '%d seconds', + m : 'a minute', + mm : '%d minutes', + h : 'an hour', + hh : '%d hours', + d : 'a day', + dd : '%d days', + M : 'a month', + MM : '%d months', + y : 'a year', + yy : '%d years' +}; + +function relativeTime (number, withoutSuffix, string, isFuture) { + var output = this._relativeTime[string]; + return (isFunction(output)) ? + output(number, withoutSuffix, string, isFuture) : + output.replace(/%d/i, number); +} + +function pastFuture (diff, output) { + var format = this._relativeTime[diff > 0 ? 'future' : 'past']; + return isFunction(format) ? format(output) : format.replace(/%s/i, output); +} + +var aliases = {}; + +function addUnitAlias (unit, shorthand) { + var lowerCase = unit.toLowerCase(); + aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; +} + +function normalizeUnits(units) { + return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; +} + +function normalizeObjectUnits(inputObject) { + var normalizedInput = {}, + normalizedProp, + prop; + + for (prop in inputObject) { + if (hasOwnProp(inputObject, prop)) { + normalizedProp = normalizeUnits(prop); + if (normalizedProp) { + normalizedInput[normalizedProp] = inputObject[prop]; + } + } + } + + return normalizedInput; +} + +var priorities = {}; + +function addUnitPriority(unit, priority) { + priorities[unit] = priority; +} + +function getPrioritizedUnits(unitsObj) { + var units = []; + for (var u in unitsObj) { + units.push({unit: u, priority: priorities[u]}); + } + units.sort(function (a, b) { + return a.priority - b.priority; + }); + return units; +} + +function makeGetSet (unit, keepTime) { + return function (value) { + if (value != null) { + set$1(this, unit, value); + hooks.updateOffset(this, keepTime); + return this; + } else { + return get(this, unit); + } + }; +} + +function get (mom, unit) { + return mom.isValid() ? + mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; +} + +function set$1 (mom, unit, value) { + if (mom.isValid()) { + mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); + } +} + +// MOMENTS + +function stringGet (units) { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](); + } + return this; +} + + +function stringSet (units, value) { + if (typeof units === 'object') { + units = normalizeObjectUnits(units); + var prioritized = getPrioritizedUnits(units); + for (var i = 0; i < prioritized.length; i++) { + this[prioritized[i].unit](units[prioritized[i].unit]); + } + } else { + units = normalizeUnits(units); + if (isFunction(this[units])) { + return this[units](value); + } + } + return this; +} + +function zeroFill(number, targetLength, forceSign) { + var absNumber = '' + Math.abs(number), + zerosToFill = targetLength - absNumber.length, + sign = number >= 0; + return (sign ? (forceSign ? '+' : '') : '-') + + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; +} + +var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; + +var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; + +var formatFunctions = {}; + +var formatTokenFunctions = {}; + +// token: 'M' +// padded: ['MM', 2] +// ordinal: 'Mo' +// callback: function () { this.month() + 1 } +function addFormatToken (token, padded, ordinal, callback) { + var func = callback; + if (typeof callback === 'string') { + func = function () { + return this[callback](); + }; + } + if (token) { + formatTokenFunctions[token] = func; + } + if (padded) { + formatTokenFunctions[padded[0]] = function () { + return zeroFill(func.apply(this, arguments), padded[1], padded[2]); + }; + } + if (ordinal) { + formatTokenFunctions[ordinal] = function () { + return this.localeData().ordinal(func.apply(this, arguments), token); + }; + } +} + +function removeFormattingTokens(input) { + if (input.match(/\[[\s\S]/)) { + return input.replace(/^\[|\]$/g, ''); + } + return input.replace(/\\/g, ''); +} + +function makeFormatFunction(format) { + var array = format.match(formattingTokens), i, length; + + for (i = 0, length = array.length; i < length; i++) { + if (formatTokenFunctions[array[i]]) { + array[i] = formatTokenFunctions[array[i]]; + } else { + array[i] = removeFormattingTokens(array[i]); + } + } + + return function (mom) { + var output = '', i; + for (i = 0; i < length; i++) { + output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; + } + return output; + }; +} + +// format date using native date object +function formatMoment(m, format) { + if (!m.isValid()) { + return m.localeData().invalidDate(); + } + + format = expandFormat(format, m.localeData()); + formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); + + return formatFunctions[format](m); +} + +function expandFormat(format, locale) { + var i = 5; + + function replaceLongDateFormatTokens(input) { + return locale.longDateFormat(input) || input; + } + + localFormattingTokens.lastIndex = 0; + while (i >= 0 && localFormattingTokens.test(format)) { + format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); + localFormattingTokens.lastIndex = 0; + i -= 1; + } + + return format; +} + +var match1 = /\d/; // 0 - 9 +var match2 = /\d\d/; // 00 - 99 +var match3 = /\d{3}/; // 000 - 999 +var match4 = /\d{4}/; // 0000 - 9999 +var match6 = /[+-]?\d{6}/; // -999999 - 999999 +var match1to2 = /\d\d?/; // 0 - 99 +var match3to4 = /\d\d\d\d?/; // 999 - 9999 +var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 +var match1to3 = /\d{1,3}/; // 0 - 999 +var match1to4 = /\d{1,4}/; // 0 - 9999 +var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 + +var matchUnsigned = /\d+/; // 0 - inf +var matchSigned = /[+-]?\d+/; // -inf - inf + +var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z +var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z + +var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 + +// any word (or two) characters or numbers including two/three word month in arabic. +// includes scottish gaelic two word and hyphenated months +var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i; + + +var regexes = {}; + +function addRegexToken (token, regex, strictRegex) { + regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { + return (isStrict && strictRegex) ? strictRegex : regex; + }; +} + +function getParseRegexForToken (token, config) { + if (!hasOwnProp(regexes, token)) { + return new RegExp(unescapeFormat(token)); + } + + return regexes[token](config._strict, config._locale); +} + +// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript +function unescapeFormat(s) { + return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { + return p1 || p2 || p3 || p4; + })); +} + +function regexEscape(s) { + return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); +} + +var tokens = {}; + +function addParseToken (token, callback) { + var i, func = callback; + if (typeof token === 'string') { + token = [token]; + } + if (isNumber(callback)) { + func = function (input, array) { + array[callback] = toInt(input); + }; + } + for (i = 0; i < token.length; i++) { + tokens[token[i]] = func; + } +} + +function addWeekParseToken (token, callback) { + addParseToken(token, function (input, array, config, token) { + config._w = config._w || {}; + callback(input, config._w, config, token); + }); +} + +function addTimeToArrayFromToken(token, input, config) { + if (input != null && hasOwnProp(tokens, token)) { + tokens[token](input, config._a, config, token); + } +} + +var YEAR = 0; +var MONTH = 1; +var DATE = 2; +var HOUR = 3; +var MINUTE = 4; +var SECOND = 5; +var MILLISECOND = 6; +var WEEK = 7; +var WEEKDAY = 8; + +var indexOf; + +if (Array.prototype.indexOf) { + indexOf = Array.prototype.indexOf; +} else { + indexOf = function (o) { + // I know + var i; + for (i = 0; i < this.length; ++i) { + if (this[i] === o) { + return i; + } + } + return -1; + }; +} + +var indexOf$1 = indexOf; + +function daysInMonth(year, month) { + return new Date(Date.UTC(year, month + 1, 0)).getUTCDate(); +} + +// FORMATTING + +addFormatToken('M', ['MM', 2], 'Mo', function () { + return this.month() + 1; +}); + +addFormatToken('MMM', 0, 0, function (format) { + return this.localeData().monthsShort(this, format); +}); + +addFormatToken('MMMM', 0, 0, function (format) { + return this.localeData().months(this, format); +}); + +// ALIASES + +addUnitAlias('month', 'M'); + +// PRIORITY + +addUnitPriority('month', 8); + +// PARSING + +addRegexToken('M', match1to2); +addRegexToken('MM', match1to2, match2); +addRegexToken('MMM', function (isStrict, locale) { + return locale.monthsShortRegex(isStrict); +}); +addRegexToken('MMMM', function (isStrict, locale) { + return locale.monthsRegex(isStrict); +}); + +addParseToken(['M', 'MM'], function (input, array) { + array[MONTH] = toInt(input) - 1; +}); + +addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { + var month = config._locale.monthsParse(input, token, config._strict); + // if we didn't find a month name, mark the date as invalid. + if (month != null) { + array[MONTH] = month; + } else { + getParsingFlags(config).invalidMonth = input; + } +}); + +// LOCALES + +var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; +var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); +function localeMonths (m, format) { + if (!m) { + return isArray(this._months) ? this._months : + this._months['standalone']; + } + return isArray(this._months) ? this._months[m.month()] : + this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; +} + +var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); +function localeMonthsShort (m, format) { + if (!m) { + return isArray(this._monthsShort) ? this._monthsShort : + this._monthsShort['standalone']; + } + return isArray(this._monthsShort) ? this._monthsShort[m.month()] : + this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; +} + +function handleStrictParse(monthName, format, strict) { + var i, ii, mom, llc = monthName.toLocaleLowerCase(); + if (!this._monthsParse) { + // this is not used + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + for (i = 0; i < 12; ++i) { + mom = createUTC([2000, i]); + this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); + this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'MMM') { + ii = indexOf$1.call(this._shortMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._longMonthsParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._longMonthsParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortMonthsParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeMonthsParse (monthName, format, strict) { + var i, mom, regex; + + if (this._monthsParseExact) { + return handleStrictParse.call(this, monthName, format, strict); + } + + if (!this._monthsParse) { + this._monthsParse = []; + this._longMonthsParse = []; + this._shortMonthsParse = []; + } + + // TODO: add sorting + // Sorting makes sure if one month (or abbr) is a prefix of another + // see sorting in computeMonthsParse + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + if (strict && !this._longMonthsParse[i]) { + this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); + this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); + } + if (!strict && !this._monthsParse[i]) { + regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); + this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { + return i; + } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { + return i; + } else if (!strict && this._monthsParse[i].test(monthName)) { + return i; + } + } +} + +// MOMENTS + +function setMonth (mom, value) { + var dayOfMonth; + + if (!mom.isValid()) { + // No op + return mom; + } + + if (typeof value === 'string') { + if (/^\d+$/.test(value)) { + value = toInt(value); + } else { + value = mom.localeData().monthsParse(value); + // TODO: Another silent failure? + if (!isNumber(value)) { + return mom; + } + } + } + + dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); + mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); + return mom; +} + +function getSetMonth (value) { + if (value != null) { + setMonth(this, value); + hooks.updateOffset(this, true); + return this; + } else { + return get(this, 'Month'); + } +} + +function getDaysInMonth () { + return daysInMonth(this.year(), this.month()); +} + +var defaultMonthsShortRegex = matchWord; +function monthsShortRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsShortStrictRegex; + } else { + return this._monthsShortRegex; + } + } else { + if (!hasOwnProp(this, '_monthsShortRegex')) { + this._monthsShortRegex = defaultMonthsShortRegex; + } + return this._monthsShortStrictRegex && isStrict ? + this._monthsShortStrictRegex : this._monthsShortRegex; + } +} + +var defaultMonthsRegex = matchWord; +function monthsRegex (isStrict) { + if (this._monthsParseExact) { + if (!hasOwnProp(this, '_monthsRegex')) { + computeMonthsParse.call(this); + } + if (isStrict) { + return this._monthsStrictRegex; + } else { + return this._monthsRegex; + } + } else { + if (!hasOwnProp(this, '_monthsRegex')) { + this._monthsRegex = defaultMonthsRegex; + } + return this._monthsStrictRegex && isStrict ? + this._monthsStrictRegex : this._monthsRegex; + } +} + +function computeMonthsParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var shortPieces = [], longPieces = [], mixedPieces = [], + i, mom; + for (i = 0; i < 12; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, i]); + shortPieces.push(this.monthsShort(mom, '')); + longPieces.push(this.months(mom, '')); + mixedPieces.push(this.months(mom, '')); + mixedPieces.push(this.monthsShort(mom, '')); + } + // Sorting makes sure if one month (or abbr) is a prefix of another it + // will match the longer piece. + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 12; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + } + for (i = 0; i < 24; i++) { + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._monthsShortRegex = this._monthsRegex; + this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +addFormatToken('Y', 0, 0, function () { + var y = this.year(); + return y <= 9999 ? '' + y : '+' + y; +}); + +addFormatToken(0, ['YY', 2], 0, function () { + return this.year() % 100; +}); + +addFormatToken(0, ['YYYY', 4], 0, 'year'); +addFormatToken(0, ['YYYYY', 5], 0, 'year'); +addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); + +// ALIASES + +addUnitAlias('year', 'y'); + +// PRIORITIES + +addUnitPriority('year', 1); + +// PARSING + +addRegexToken('Y', matchSigned); +addRegexToken('YY', match1to2, match2); +addRegexToken('YYYY', match1to4, match4); +addRegexToken('YYYYY', match1to6, match6); +addRegexToken('YYYYYY', match1to6, match6); + +addParseToken(['YYYYY', 'YYYYYY'], YEAR); +addParseToken('YYYY', function (input, array) { + array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); +}); +addParseToken('YY', function (input, array) { + array[YEAR] = hooks.parseTwoDigitYear(input); +}); +addParseToken('Y', function (input, array) { + array[YEAR] = parseInt(input, 10); +}); + +// HELPERS + +function daysInYear(year) { + return isLeapYear(year) ? 366 : 365; +} + +function isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; +} + +// HOOKS + +hooks.parseTwoDigitYear = function (input) { + return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); +}; + +// MOMENTS + +var getSetYear = makeGetSet('FullYear', true); + +function getIsLeapYear () { + return isLeapYear(this.year()); +} + +function createDate (y, m, d, h, M, s, ms) { + // can't just apply() to create a date: + // https://stackoverflow.com/q/181348 + var date = new Date(y, m, d, h, M, s, ms); + + // the date constructor remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { + date.setFullYear(y); + } + return date; +} + +function createUTCDate (y) { + var date = new Date(Date.UTC.apply(null, arguments)); + + // the Date.UTC function remaps years 0-99 to 1900-1999 + if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { + date.setUTCFullYear(y); + } + return date; +} + +// start-of-first-week - start-of-year +function firstWeekOffset(year, dow, doy) { + var // first-week day -- which january is always in the first week (4 for iso, 1 for other) + fwd = 7 + dow - doy, + // first-week day local weekday -- which local weekday is fwd + fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; + + return -fwdlw + fwd - 1; +} + +// https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday +function dayOfYearFromWeeks(year, week, weekday, dow, doy) { + var localWeekday = (7 + weekday - dow) % 7, + weekOffset = firstWeekOffset(year, dow, doy), + dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, + resYear, resDayOfYear; + + if (dayOfYear <= 0) { + resYear = year - 1; + resDayOfYear = daysInYear(resYear) + dayOfYear; + } else if (dayOfYear > daysInYear(year)) { + resYear = year + 1; + resDayOfYear = dayOfYear - daysInYear(year); + } else { + resYear = year; + resDayOfYear = dayOfYear; + } + + return { + year: resYear, + dayOfYear: resDayOfYear + }; +} + +function weekOfYear(mom, dow, doy) { + var weekOffset = firstWeekOffset(mom.year(), dow, doy), + week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, + resWeek, resYear; + + if (week < 1) { + resYear = mom.year() - 1; + resWeek = week + weeksInYear(resYear, dow, doy); + } else if (week > weeksInYear(mom.year(), dow, doy)) { + resWeek = week - weeksInYear(mom.year(), dow, doy); + resYear = mom.year() + 1; + } else { + resYear = mom.year(); + resWeek = week; + } + + return { + week: resWeek, + year: resYear + }; +} + +function weeksInYear(year, dow, doy) { + var weekOffset = firstWeekOffset(year, dow, doy), + weekOffsetNext = firstWeekOffset(year + 1, dow, doy); + return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; +} + +// FORMATTING + +addFormatToken('w', ['ww', 2], 'wo', 'week'); +addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); + +// ALIASES + +addUnitAlias('week', 'w'); +addUnitAlias('isoWeek', 'W'); + +// PRIORITIES + +addUnitPriority('week', 5); +addUnitPriority('isoWeek', 5); + +// PARSING + +addRegexToken('w', match1to2); +addRegexToken('ww', match1to2, match2); +addRegexToken('W', match1to2); +addRegexToken('WW', match1to2, match2); + +addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { + week[token.substr(0, 1)] = toInt(input); +}); + +// HELPERS + +// LOCALES + +function localeWeek (mom) { + return weekOfYear(mom, this._week.dow, this._week.doy).week; +} + +var defaultLocaleWeek = { + dow : 0, // Sunday is the first day of the week. + doy : 6 // The week that contains Jan 1st is the first week of the year. +}; + +function localeFirstDayOfWeek () { + return this._week.dow; +} + +function localeFirstDayOfYear () { + return this._week.doy; +} + +// MOMENTS + +function getSetWeek (input) { + var week = this.localeData().week(this); + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +function getSetISOWeek (input) { + var week = weekOfYear(this, 1, 4).week; + return input == null ? week : this.add((input - week) * 7, 'd'); +} + +// FORMATTING + +addFormatToken('d', 0, 'do', 'day'); + +addFormatToken('dd', 0, 0, function (format) { + return this.localeData().weekdaysMin(this, format); +}); + +addFormatToken('ddd', 0, 0, function (format) { + return this.localeData().weekdaysShort(this, format); +}); + +addFormatToken('dddd', 0, 0, function (format) { + return this.localeData().weekdays(this, format); +}); + +addFormatToken('e', 0, 0, 'weekday'); +addFormatToken('E', 0, 0, 'isoWeekday'); + +// ALIASES + +addUnitAlias('day', 'd'); +addUnitAlias('weekday', 'e'); +addUnitAlias('isoWeekday', 'E'); + +// PRIORITY +addUnitPriority('day', 11); +addUnitPriority('weekday', 11); +addUnitPriority('isoWeekday', 11); + +// PARSING + +addRegexToken('d', match1to2); +addRegexToken('e', match1to2); +addRegexToken('E', match1to2); +addRegexToken('dd', function (isStrict, locale) { + return locale.weekdaysMinRegex(isStrict); +}); +addRegexToken('ddd', function (isStrict, locale) { + return locale.weekdaysShortRegex(isStrict); +}); +addRegexToken('dddd', function (isStrict, locale) { + return locale.weekdaysRegex(isStrict); +}); + +addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { + var weekday = config._locale.weekdaysParse(input, token, config._strict); + // if we didn't get a weekday name, mark the date as invalid + if (weekday != null) { + week.d = weekday; + } else { + getParsingFlags(config).invalidWeekday = input; + } +}); + +addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { + week[token] = toInt(input); +}); + +// HELPERS + +function parseWeekday(input, locale) { + if (typeof input !== 'string') { + return input; + } + + if (!isNaN(input)) { + return parseInt(input, 10); + } + + input = locale.weekdaysParse(input); + if (typeof input === 'number') { + return input; + } + + return null; +} + +function parseIsoWeekday(input, locale) { + if (typeof input === 'string') { + return locale.weekdaysParse(input) % 7 || 7; + } + return isNaN(input) ? null : input; +} + +// LOCALES + +var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); +function localeWeekdays (m, format) { + if (!m) { + return isArray(this._weekdays) ? this._weekdays : + this._weekdays['standalone']; + } + return isArray(this._weekdays) ? this._weekdays[m.day()] : + this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; +} + +var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); +function localeWeekdaysShort (m) { + return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; +} + +var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); +function localeWeekdaysMin (m) { + return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; +} + +function handleStrictParse$1(weekdayName, format, strict) { + var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._shortWeekdaysParse = []; + this._minWeekdaysParse = []; + + for (i = 0; i < 7; ++i) { + mom = createUTC([2000, 1]).day(i); + this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); + this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); + this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); + } + } + + if (strict) { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } else { + if (format === 'dddd') { + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else if (format === 'ddd') { + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._minWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } else { + ii = indexOf$1.call(this._minWeekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._weekdaysParse, llc); + if (ii !== -1) { + return ii; + } + ii = indexOf$1.call(this._shortWeekdaysParse, llc); + return ii !== -1 ? ii : null; + } + } +} + +function localeWeekdaysParse (weekdayName, format, strict) { + var i, mom, regex; + + if (this._weekdaysParseExact) { + return handleStrictParse$1.call(this, weekdayName, format, strict); + } + + if (!this._weekdaysParse) { + this._weekdaysParse = []; + this._minWeekdaysParse = []; + this._shortWeekdaysParse = []; + this._fullWeekdaysParse = []; + } + + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + + mom = createUTC([2000, 1]).day(i); + if (strict && !this._fullWeekdaysParse[i]) { + this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); + this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); + this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); + } + if (!this._weekdaysParse[i]) { + regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); + this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); + } + // test the regex + if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { + return i; + } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { + return i; + } + } +} + +// MOMENTS + +function getSetDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); + if (input != null) { + input = parseWeekday(input, this.localeData()); + return this.add(input - day, 'd'); + } else { + return day; + } +} + +function getSetLocaleDayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; + return input == null ? weekday : this.add(input - weekday, 'd'); +} + +function getSetISODayOfWeek (input) { + if (!this.isValid()) { + return input != null ? this : NaN; + } + + // behaves the same as moment#day except + // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) + // as a setter, sunday should belong to the previous week. + + if (input != null) { + var weekday = parseIsoWeekday(input, this.localeData()); + return this.day(this.day() % 7 ? weekday : weekday - 7); + } else { + return this.day() || 7; + } +} + +var defaultWeekdaysRegex = matchWord; +function weekdaysRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysStrictRegex; + } else { + return this._weekdaysRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysRegex')) { + this._weekdaysRegex = defaultWeekdaysRegex; + } + return this._weekdaysStrictRegex && isStrict ? + this._weekdaysStrictRegex : this._weekdaysRegex; + } +} + +var defaultWeekdaysShortRegex = matchWord; +function weekdaysShortRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysShortStrictRegex; + } else { + return this._weekdaysShortRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysShortRegex')) { + this._weekdaysShortRegex = defaultWeekdaysShortRegex; + } + return this._weekdaysShortStrictRegex && isStrict ? + this._weekdaysShortStrictRegex : this._weekdaysShortRegex; + } +} + +var defaultWeekdaysMinRegex = matchWord; +function weekdaysMinRegex (isStrict) { + if (this._weekdaysParseExact) { + if (!hasOwnProp(this, '_weekdaysRegex')) { + computeWeekdaysParse.call(this); + } + if (isStrict) { + return this._weekdaysMinStrictRegex; + } else { + return this._weekdaysMinRegex; + } + } else { + if (!hasOwnProp(this, '_weekdaysMinRegex')) { + this._weekdaysMinRegex = defaultWeekdaysMinRegex; + } + return this._weekdaysMinStrictRegex && isStrict ? + this._weekdaysMinStrictRegex : this._weekdaysMinRegex; + } +} + + +function computeWeekdaysParse () { + function cmpLenRev(a, b) { + return b.length - a.length; + } + + var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], + i, mom, minp, shortp, longp; + for (i = 0; i < 7; i++) { + // make the regex if we don't have it already + mom = createUTC([2000, 1]).day(i); + minp = this.weekdaysMin(mom, ''); + shortp = this.weekdaysShort(mom, ''); + longp = this.weekdays(mom, ''); + minPieces.push(minp); + shortPieces.push(shortp); + longPieces.push(longp); + mixedPieces.push(minp); + mixedPieces.push(shortp); + mixedPieces.push(longp); + } + // Sorting makes sure if one weekday (or abbr) is a prefix of another it + // will match the longer piece. + minPieces.sort(cmpLenRev); + shortPieces.sort(cmpLenRev); + longPieces.sort(cmpLenRev); + mixedPieces.sort(cmpLenRev); + for (i = 0; i < 7; i++) { + shortPieces[i] = regexEscape(shortPieces[i]); + longPieces[i] = regexEscape(longPieces[i]); + mixedPieces[i] = regexEscape(mixedPieces[i]); + } + + this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); + this._weekdaysShortRegex = this._weekdaysRegex; + this._weekdaysMinRegex = this._weekdaysRegex; + + this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); + this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); + this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); +} + +// FORMATTING + +function hFormat() { + return this.hours() % 12 || 12; +} + +function kFormat() { + return this.hours() || 24; +} + +addFormatToken('H', ['HH', 2], 0, 'hour'); +addFormatToken('h', ['hh', 2], 0, hFormat); +addFormatToken('k', ['kk', 2], 0, kFormat); + +addFormatToken('hmm', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); +}); + +addFormatToken('hmmss', 0, 0, function () { + return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +addFormatToken('Hmm', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2); +}); + +addFormatToken('Hmmss', 0, 0, function () { + return '' + this.hours() + zeroFill(this.minutes(), 2) + + zeroFill(this.seconds(), 2); +}); + +function meridiem (token, lowercase) { + addFormatToken(token, 0, 0, function () { + return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); + }); +} + +meridiem('a', true); +meridiem('A', false); + +// ALIASES + +addUnitAlias('hour', 'h'); + +// PRIORITY +addUnitPriority('hour', 13); + +// PARSING + +function matchMeridiem (isStrict, locale) { + return locale._meridiemParse; +} + +addRegexToken('a', matchMeridiem); +addRegexToken('A', matchMeridiem); +addRegexToken('H', match1to2); +addRegexToken('h', match1to2); +addRegexToken('k', match1to2); +addRegexToken('HH', match1to2, match2); +addRegexToken('hh', match1to2, match2); +addRegexToken('kk', match1to2, match2); + +addRegexToken('hmm', match3to4); +addRegexToken('hmmss', match5to6); +addRegexToken('Hmm', match3to4); +addRegexToken('Hmmss', match5to6); + +addParseToken(['H', 'HH'], HOUR); +addParseToken(['k', 'kk'], function (input, array, config) { + var kInput = toInt(input); + array[HOUR] = kInput === 24 ? 0 : kInput; +}); +addParseToken(['a', 'A'], function (input, array, config) { + config._isPm = config._locale.isPM(input); + config._meridiem = input; +}); +addParseToken(['h', 'hh'], function (input, array, config) { + array[HOUR] = toInt(input); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); + getParsingFlags(config).bigHour = true; +}); +addParseToken('Hmm', function (input, array, config) { + var pos = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos)); + array[MINUTE] = toInt(input.substr(pos)); +}); +addParseToken('Hmmss', function (input, array, config) { + var pos1 = input.length - 4; + var pos2 = input.length - 2; + array[HOUR] = toInt(input.substr(0, pos1)); + array[MINUTE] = toInt(input.substr(pos1, 2)); + array[SECOND] = toInt(input.substr(pos2)); +}); + +// LOCALES + +function localeIsPM (input) { + // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays + // Using charAt should be more compatible. + return ((input + '').toLowerCase().charAt(0) === 'p'); +} + +var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; +function localeMeridiem (hours, minutes, isLower) { + if (hours > 11) { + return isLower ? 'pm' : 'PM'; + } else { + return isLower ? 'am' : 'AM'; + } +} + + +// MOMENTS + +// Setting the hour should keep the time, because the user explicitly +// specified which hour he wants. So trying to maintain the same hour (in +// a new timezone) makes sense. Adding/subtracting hours does not follow +// this rule. +var getSetHour = makeGetSet('Hours', true); + +// months +// week +// weekdays +// meridiem +var baseConfig = { + calendar: defaultCalendar, + longDateFormat: defaultLongDateFormat, + invalidDate: defaultInvalidDate, + ordinal: defaultOrdinal, + dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, + relativeTime: defaultRelativeTime, + + months: defaultLocaleMonths, + monthsShort: defaultLocaleMonthsShort, + + week: defaultLocaleWeek, + + weekdays: defaultLocaleWeekdays, + weekdaysMin: defaultLocaleWeekdaysMin, + weekdaysShort: defaultLocaleWeekdaysShort, + + meridiemParse: defaultLocaleMeridiemParse +}; + +// internal storage for locale config files +var locales = {}; +var localeFamilies = {}; +var globalLocale; + +function normalizeLocale(key) { + return key ? key.toLowerCase().replace('_', '-') : key; +} + +// pick the locale from the array +// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each +// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root +function chooseLocale(names) { + var i = 0, j, next, locale, split; + + while (i < names.length) { + split = normalizeLocale(names[i]).split('-'); + j = split.length; + next = normalizeLocale(names[i + 1]); + next = next ? next.split('-') : null; + while (j > 0) { + locale = loadLocale(split.slice(0, j).join('-')); + if (locale) { + return locale; + } + if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { + //the next array item is better than a shallower substring of this one + break; + } + j--; + } + i++; + } + return null; +} + +function loadLocale(name) { + var oldLocale = null; + // TODO: Find a better way to register and load all the locales in Node + if (!locales[name] && (typeof module !== 'undefined') && + module && module.exports) { + try { + oldLocale = globalLocale._abbr; + require('./locale/' + name); + // because defineLocale currently also sets the global locale, we + // want to undo that for lazy loaded locales + getSetGlobalLocale(oldLocale); + } catch (e) { } + } + return locales[name]; +} + +// This function will load locale and then set the global locale. If +// no arguments are passed in, it will simply return the current global +// locale key. +function getSetGlobalLocale (key, values) { + var data; + if (key) { + if (isUndefined(values)) { + data = getLocale(key); + } + else { + data = defineLocale(key, values); + } + + if (data) { + // moment.duration._locale = moment._locale = data; + globalLocale = data; + } + } + + return globalLocale._abbr; +} + +function defineLocale (name, config) { + if (config !== null) { + var parentConfig = baseConfig; + config.abbr = name; + if (locales[name] != null) { + deprecateSimple('defineLocaleOverride', + 'use moment.updateLocale(localeName, config) to change ' + + 'an existing locale. moment.defineLocale(localeName, ' + + 'config) should only be used for creating a new locale ' + + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); + parentConfig = locales[name]._config; + } else if (config.parentLocale != null) { + if (locales[config.parentLocale] != null) { + parentConfig = locales[config.parentLocale]._config; + } else { + if (!localeFamilies[config.parentLocale]) { + localeFamilies[config.parentLocale] = []; + } + localeFamilies[config.parentLocale].push({ + name: name, + config: config + }); + return null; + } + } + locales[name] = new Locale(mergeConfigs(parentConfig, config)); + + if (localeFamilies[name]) { + localeFamilies[name].forEach(function (x) { + defineLocale(x.name, x.config); + }); + } + + // backwards compat for now: also set the locale + // make sure we set the locale AFTER all child locales have been + // created, so we won't end up with the child locale set. + getSetGlobalLocale(name); + + + return locales[name]; + } else { + // useful for testing + delete locales[name]; + return null; + } +} + +function updateLocale(name, config) { + if (config != null) { + var locale, parentConfig = baseConfig; + // MERGE + if (locales[name] != null) { + parentConfig = locales[name]._config; + } + config = mergeConfigs(parentConfig, config); + locale = new Locale(config); + locale.parentLocale = locales[name]; + locales[name] = locale; + + // backwards compat for now: also set the locale + getSetGlobalLocale(name); + } else { + // pass null for config to unupdate, useful for tests + if (locales[name] != null) { + if (locales[name].parentLocale != null) { + locales[name] = locales[name].parentLocale; + } else if (locales[name] != null) { + delete locales[name]; + } + } + } + return locales[name]; +} + +// returns locale data +function getLocale (key) { + var locale; + + if (key && key._locale && key._locale._abbr) { + key = key._locale._abbr; + } + + if (!key) { + return globalLocale; + } + + if (!isArray(key)) { + //short-circuit everything else + locale = loadLocale(key); + if (locale) { + return locale; + } + key = [key]; + } + + return chooseLocale(key); +} + +function listLocales() { + return keys$1(locales); +} + +function checkOverflow (m) { + var overflow; + var a = m._a; + + if (a && getParsingFlags(m).overflow === -2) { + overflow = + a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : + a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : + a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : + a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : + a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : + a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : + -1; + + if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { + overflow = DATE; + } + if (getParsingFlags(m)._overflowWeeks && overflow === -1) { + overflow = WEEK; + } + if (getParsingFlags(m)._overflowWeekday && overflow === -1) { + overflow = WEEKDAY; + } + + getParsingFlags(m).overflow = overflow; + } + + return m; +} + +// iso 8601 regex +// 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) +var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; +var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; + +var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; + +var isoDates = [ + ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], + ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], + ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], + ['GGGG-[W]WW', /\d{4}-W\d\d/, false], + ['YYYY-DDD', /\d{4}-\d{3}/], + ['YYYY-MM', /\d{4}-\d\d/, false], + ['YYYYYYMMDD', /[+-]\d{10}/], + ['YYYYMMDD', /\d{8}/], + // YYYYMM is NOT allowed by the standard + ['GGGG[W]WWE', /\d{4}W\d{3}/], + ['GGGG[W]WW', /\d{4}W\d{2}/, false], + ['YYYYDDD', /\d{7}/] +]; + +// iso time formats and regexes +var isoTimes = [ + ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], + ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], + ['HH:mm:ss', /\d\d:\d\d:\d\d/], + ['HH:mm', /\d\d:\d\d/], + ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], + ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], + ['HHmmss', /\d\d\d\d\d\d/], + ['HHmm', /\d\d\d\d/], + ['HH', /\d\d/] +]; + +var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; + +// date from iso format +function configFromISO(config) { + var i, l, + string = config._i, + match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), + allowTime, dateFormat, timeFormat, tzFormat; + + if (match) { + getParsingFlags(config).iso = true; + + for (i = 0, l = isoDates.length; i < l; i++) { + if (isoDates[i][1].exec(match[1])) { + dateFormat = isoDates[i][0]; + allowTime = isoDates[i][2] !== false; + break; + } + } + if (dateFormat == null) { + config._isValid = false; + return; + } + if (match[3]) { + for (i = 0, l = isoTimes.length; i < l; i++) { + if (isoTimes[i][1].exec(match[3])) { + // match[2] should be 'T' or space + timeFormat = (match[2] || ' ') + isoTimes[i][0]; + break; + } + } + if (timeFormat == null) { + config._isValid = false; + return; + } + } + if (!allowTime && timeFormat != null) { + config._isValid = false; + return; + } + if (match[4]) { + if (tzRegex.exec(match[4])) { + tzFormat = 'Z'; + } else { + config._isValid = false; + return; + } + } + config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); + configFromStringAndFormat(config); + } else { + config._isValid = false; + } +} + +// RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 +var basicRfcRegex = /^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d?\d\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(?:\d\d)?\d\d\s)(\d\d:\d\d)(\:\d\d)?(\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\d{4}))$/; + +// date and time from ref 2822 format +function configFromRFC2822(config) { + var string, match, dayFormat, + dateFormat, timeFormat, tzFormat; + var timezones = { + ' GMT': ' +0000', + ' EDT': ' -0400', + ' EST': ' -0500', + ' CDT': ' -0500', + ' CST': ' -0600', + ' MDT': ' -0600', + ' MST': ' -0700', + ' PDT': ' -0700', + ' PST': ' -0800' + }; + var military = 'YXWVUTSRQPONZABCDEFGHIKLM'; + var timezone, timezoneIndex; + + string = config._i + .replace(/\([^\)]*\)|[\n\t]/g, ' ') // Remove comments and folding whitespace + .replace(/(\s\s+)/g, ' ') // Replace multiple-spaces with a single space + .replace(/^\s|\s$/g, ''); // Remove leading and trailing spaces + match = basicRfcRegex.exec(string); + + if (match) { + dayFormat = match[1] ? 'ddd' + ((match[1].length === 5) ? ', ' : ' ') : ''; + dateFormat = 'D MMM ' + ((match[2].length > 10) ? 'YYYY ' : 'YY '); + timeFormat = 'HH:mm' + (match[4] ? ':ss' : ''); + + // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. + if (match[1]) { // day of week given + var momentDate = new Date(match[2]); + var momentDay = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'][momentDate.getDay()]; + + if (match[1].substr(0,3) !== momentDay) { + getParsingFlags(config).weekdayMismatch = true; + config._isValid = false; + return; + } + } + + switch (match[5].length) { + case 2: // military + if (timezoneIndex === 0) { + timezone = ' +0000'; + } else { + timezoneIndex = military.indexOf(match[5][1].toUpperCase()) - 12; + timezone = ((timezoneIndex < 0) ? ' -' : ' +') + + (('' + timezoneIndex).replace(/^-?/, '0')).match(/..$/)[0] + '00'; + } + break; + case 4: // Zone + timezone = timezones[match[5]]; + break; + default: // UT or +/-9999 + timezone = timezones[' GMT']; + } + match[5] = timezone; + config._i = match.splice(1).join(''); + tzFormat = ' ZZ'; + config._f = dayFormat + dateFormat + timeFormat + tzFormat; + configFromStringAndFormat(config); + getParsingFlags(config).rfc2822 = true; + } else { + config._isValid = false; + } +} + +// date from iso format or fallback +function configFromString(config) { + var matched = aspNetJsonRegex.exec(config._i); + + if (matched !== null) { + config._d = new Date(+matched[1]); + return; + } + + configFromISO(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + configFromRFC2822(config); + if (config._isValid === false) { + delete config._isValid; + } else { + return; + } + + // Final attempt, use Input Fallback + hooks.createFromInputFallback(config); +} + +hooks.createFromInputFallback = deprecate( + 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + + 'discouraged and will be removed in an upcoming major release. Please refer to ' + + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', + function (config) { + config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); + } +); + +// Pick the first defined of two or three arguments. +function defaults(a, b, c) { + if (a != null) { + return a; + } + if (b != null) { + return b; + } + return c; +} + +function currentDateArray(config) { + // hooks is actually the exported moment object + var nowValue = new Date(hooks.now()); + if (config._useUTC) { + return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; + } + return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; +} + +// convert an array to a date. +// the array should mirror the parameters below +// note: all values past the year are optional and will default to the lowest possible value. +// [year, month, day , hour, minute, second, millisecond] +function configFromArray (config) { + var i, date, input = [], currentDate, yearToUse; + + if (config._d) { + return; + } + + currentDate = currentDateArray(config); + + //compute day of the year from weeks and weekdays + if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { + dayOfYearFromWeekInfo(config); + } + + //if the day of the year is set, figure out what it is + if (config._dayOfYear != null) { + yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); + + if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { + getParsingFlags(config)._overflowDayOfYear = true; + } + + date = createUTCDate(yearToUse, 0, config._dayOfYear); + config._a[MONTH] = date.getUTCMonth(); + config._a[DATE] = date.getUTCDate(); + } + + // Default to current date. + // * if no year, month, day of month are given, default to today + // * if day of month is given, default month and year + // * if month is given, default only year + // * if year is given, don't default anything + for (i = 0; i < 3 && config._a[i] == null; ++i) { + config._a[i] = input[i] = currentDate[i]; + } + + // Zero out whatever was not defaulted, including time + for (; i < 7; i++) { + config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; + } + + // Check for 24:00:00.000 + if (config._a[HOUR] === 24 && + config._a[MINUTE] === 0 && + config._a[SECOND] === 0 && + config._a[MILLISECOND] === 0) { + config._nextDay = true; + config._a[HOUR] = 0; + } + + config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); + // Apply timezone offset from input. The actual utcOffset can be changed + // with parseZone. + if (config._tzm != null) { + config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); + } + + if (config._nextDay) { + config._a[HOUR] = 24; + } +} + +function dayOfYearFromWeekInfo(config) { + var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; + + w = config._w; + if (w.GG != null || w.W != null || w.E != null) { + dow = 1; + doy = 4; + + // TODO: We need to take the current isoWeekYear, but that depends on + // how we interpret now (local, utc, fixed offset). So create + // a now version of current config (take local/utc/offset flags, and + // create now). + weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); + week = defaults(w.W, 1); + weekday = defaults(w.E, 1); + if (weekday < 1 || weekday > 7) { + weekdayOverflow = true; + } + } else { + dow = config._locale._week.dow; + doy = config._locale._week.doy; + + var curWeek = weekOfYear(createLocal(), dow, doy); + + weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); + + // Default to current week. + week = defaults(w.w, curWeek.week); + + if (w.d != null) { + // weekday -- low day numbers are considered next week + weekday = w.d; + if (weekday < 0 || weekday > 6) { + weekdayOverflow = true; + } + } else if (w.e != null) { + // local weekday -- counting starts from begining of week + weekday = w.e + dow; + if (w.e < 0 || w.e > 6) { + weekdayOverflow = true; + } + } else { + // default to begining of week + weekday = dow; + } + } + if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { + getParsingFlags(config)._overflowWeeks = true; + } else if (weekdayOverflow != null) { + getParsingFlags(config)._overflowWeekday = true; + } else { + temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); + config._a[YEAR] = temp.year; + config._dayOfYear = temp.dayOfYear; + } +} + +// constant that refers to the ISO standard +hooks.ISO_8601 = function () {}; + +// constant that refers to the RFC 2822 form +hooks.RFC_2822 = function () {}; + +// date from string and format string +function configFromStringAndFormat(config) { + // TODO: Move this to another part of the creation flow to prevent circular deps + if (config._f === hooks.ISO_8601) { + configFromISO(config); + return; + } + if (config._f === hooks.RFC_2822) { + configFromRFC2822(config); + return; + } + config._a = []; + getParsingFlags(config).empty = true; + + // This array is used to make a Date, either with `new Date` or `Date.UTC` + var string = '' + config._i, + i, parsedInput, tokens, token, skipped, + stringLength = string.length, + totalParsedInputLength = 0; + + tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; + + for (i = 0; i < tokens.length; i++) { + token = tokens[i]; + parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; + // console.log('token', token, 'parsedInput', parsedInput, + // 'regex', getParseRegexForToken(token, config)); + if (parsedInput) { + skipped = string.substr(0, string.indexOf(parsedInput)); + if (skipped.length > 0) { + getParsingFlags(config).unusedInput.push(skipped); + } + string = string.slice(string.indexOf(parsedInput) + parsedInput.length); + totalParsedInputLength += parsedInput.length; + } + // don't parse if it's not a known token + if (formatTokenFunctions[token]) { + if (parsedInput) { + getParsingFlags(config).empty = false; + } + else { + getParsingFlags(config).unusedTokens.push(token); + } + addTimeToArrayFromToken(token, parsedInput, config); + } + else if (config._strict && !parsedInput) { + getParsingFlags(config).unusedTokens.push(token); + } + } + + // add remaining unparsed input length to the string + getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; + if (string.length > 0) { + getParsingFlags(config).unusedInput.push(string); + } + + // clear _12h flag if hour is <= 12 + if (config._a[HOUR] <= 12 && + getParsingFlags(config).bigHour === true && + config._a[HOUR] > 0) { + getParsingFlags(config).bigHour = undefined; + } + + getParsingFlags(config).parsedDateParts = config._a.slice(0); + getParsingFlags(config).meridiem = config._meridiem; + // handle meridiem + config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); + + configFromArray(config); + checkOverflow(config); +} + + +function meridiemFixWrap (locale, hour, meridiem) { + var isPm; + + if (meridiem == null) { + // nothing to do + return hour; + } + if (locale.meridiemHour != null) { + return locale.meridiemHour(hour, meridiem); + } else if (locale.isPM != null) { + // Fallback + isPm = locale.isPM(meridiem); + if (isPm && hour < 12) { + hour += 12; + } + if (!isPm && hour === 12) { + hour = 0; + } + return hour; + } else { + // this is not supposed to happen + return hour; + } +} + +// date from string and array of format strings +function configFromStringAndArray(config) { + var tempConfig, + bestMoment, + + scoreToBeat, + i, + currentScore; + + if (config._f.length === 0) { + getParsingFlags(config).invalidFormat = true; + config._d = new Date(NaN); + return; + } + + for (i = 0; i < config._f.length; i++) { + currentScore = 0; + tempConfig = copyConfig({}, config); + if (config._useUTC != null) { + tempConfig._useUTC = config._useUTC; + } + tempConfig._f = config._f[i]; + configFromStringAndFormat(tempConfig); + + if (!isValid(tempConfig)) { + continue; + } + + // if there is any input that was not parsed add a penalty for that format + currentScore += getParsingFlags(tempConfig).charsLeftOver; + + //or tokens + currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; + + getParsingFlags(tempConfig).score = currentScore; + + if (scoreToBeat == null || currentScore < scoreToBeat) { + scoreToBeat = currentScore; + bestMoment = tempConfig; + } + } + + extend(config, bestMoment || tempConfig); +} + +function configFromObject(config) { + if (config._d) { + return; + } + + var i = normalizeObjectUnits(config._i); + config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { + return obj && parseInt(obj, 10); + }); + + configFromArray(config); +} + +function createFromConfig (config) { + var res = new Moment(checkOverflow(prepareConfig(config))); + if (res._nextDay) { + // Adding is smart enough around DST + res.add(1, 'd'); + res._nextDay = undefined; + } + + return res; +} + +function prepareConfig (config) { + var input = config._i, + format = config._f; + + config._locale = config._locale || getLocale(config._l); + + if (input === null || (format === undefined && input === '')) { + return createInvalid({nullInput: true}); + } + + if (typeof input === 'string') { + config._i = input = config._locale.preparse(input); + } + + if (isMoment(input)) { + return new Moment(checkOverflow(input)); + } else if (isDate(input)) { + config._d = input; + } else if (isArray(format)) { + configFromStringAndArray(config); + } else if (format) { + configFromStringAndFormat(config); + } else { + configFromInput(config); + } + + if (!isValid(config)) { + config._d = null; + } + + return config; +} + +function configFromInput(config) { + var input = config._i; + if (isUndefined(input)) { + config._d = new Date(hooks.now()); + } else if (isDate(input)) { + config._d = new Date(input.valueOf()); + } else if (typeof input === 'string') { + configFromString(config); + } else if (isArray(input)) { + config._a = map(input.slice(0), function (obj) { + return parseInt(obj, 10); + }); + configFromArray(config); + } else if (isObject(input)) { + configFromObject(config); + } else if (isNumber(input)) { + // from milliseconds + config._d = new Date(input); + } else { + hooks.createFromInputFallback(config); + } +} + +function createLocalOrUTC (input, format, locale, strict, isUTC) { + var c = {}; + + if (locale === true || locale === false) { + strict = locale; + locale = undefined; + } + + if ((isObject(input) && isObjectEmpty(input)) || + (isArray(input) && input.length === 0)) { + input = undefined; + } + // object construction must be done this way. + // https://github.com/moment/moment/issues/1423 + c._isAMomentObject = true; + c._useUTC = c._isUTC = isUTC; + c._l = locale; + c._i = input; + c._f = format; + c._strict = strict; + + return createFromConfig(c); +} + +function createLocal (input, format, locale, strict) { + return createLocalOrUTC(input, format, locale, strict, false); +} + +var prototypeMin = deprecate( + 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other < this ? this : other; + } else { + return createInvalid(); + } + } +); + +var prototypeMax = deprecate( + 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', + function () { + var other = createLocal.apply(null, arguments); + if (this.isValid() && other.isValid()) { + return other > this ? this : other; + } else { + return createInvalid(); + } + } +); + +// Pick a moment m from moments so that m[fn](other) is true for all +// other. This relies on the function fn to be transitive. +// +// moments should either be an array of moment objects or an array, whose +// first element is an array of moment objects. +function pickBy(fn, moments) { + var res, i; + if (moments.length === 1 && isArray(moments[0])) { + moments = moments[0]; + } + if (!moments.length) { + return createLocal(); + } + res = moments[0]; + for (i = 1; i < moments.length; ++i) { + if (!moments[i].isValid() || moments[i][fn](res)) { + res = moments[i]; + } + } + return res; +} + +// TODO: Use [].sort instead? +function min () { + var args = [].slice.call(arguments, 0); + + return pickBy('isBefore', args); +} + +function max () { + var args = [].slice.call(arguments, 0); + + return pickBy('isAfter', args); +} + +var now = function () { + return Date.now ? Date.now() : +(new Date()); +}; + +var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; + +function isDurationValid(m) { + for (var key in m) { + if (!(ordering.indexOf(key) !== -1 && (m[key] == null || !isNaN(m[key])))) { + return false; + } + } + + var unitHasDecimal = false; + for (var i = 0; i < ordering.length; ++i) { + if (m[ordering[i]]) { + if (unitHasDecimal) { + return false; // only allow non-integers for smallest unit + } + if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { + unitHasDecimal = true; + } + } + } + + return true; +} + +function isValid$1() { + return this._isValid; +} + +function createInvalid$1() { + return createDuration(NaN); +} + +function Duration (duration) { + var normalizedInput = normalizeObjectUnits(duration), + years = normalizedInput.year || 0, + quarters = normalizedInput.quarter || 0, + months = normalizedInput.month || 0, + weeks = normalizedInput.week || 0, + days = normalizedInput.day || 0, + hours = normalizedInput.hour || 0, + minutes = normalizedInput.minute || 0, + seconds = normalizedInput.second || 0, + milliseconds = normalizedInput.millisecond || 0; + + this._isValid = isDurationValid(normalizedInput); + + // representation for dateAddRemove + this._milliseconds = +milliseconds + + seconds * 1e3 + // 1000 + minutes * 6e4 + // 1000 * 60 + hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 + // Because of dateAddRemove treats 24 hours as different from a + // day when working around DST, we need to store them separately + this._days = +days + + weeks * 7; + // It is impossible translate months into days without knowing + // which months you are are talking about, so we have to store + // it separately. + this._months = +months + + quarters * 3 + + years * 12; + + this._data = {}; + + this._locale = getLocale(); + + this._bubble(); +} + +function isDuration (obj) { + return obj instanceof Duration; +} + +function absRound (number) { + if (number < 0) { + return Math.round(-1 * number) * -1; + } else { + return Math.round(number); + } +} + +// FORMATTING + +function offset (token, separator) { + addFormatToken(token, 0, 0, function () { + var offset = this.utcOffset(); + var sign = '+'; + if (offset < 0) { + offset = -offset; + sign = '-'; + } + return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); + }); +} + +offset('Z', ':'); +offset('ZZ', ''); + +// PARSING + +addRegexToken('Z', matchShortOffset); +addRegexToken('ZZ', matchShortOffset); +addParseToken(['Z', 'ZZ'], function (input, array, config) { + config._useUTC = true; + config._tzm = offsetFromString(matchShortOffset, input); +}); + +// HELPERS + +// timezone chunker +// '+10:00' > ['10', '00'] +// '-1530' > ['-15', '30'] +var chunkOffset = /([\+\-]|\d\d)/gi; + +function offsetFromString(matcher, string) { + var matches = (string || '').match(matcher); + + if (matches === null) { + return null; + } + + var chunk = matches[matches.length - 1] || []; + var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; + var minutes = +(parts[1] * 60) + toInt(parts[2]); + + return minutes === 0 ? + 0 : + parts[0] === '+' ? minutes : -minutes; +} + +// Return a moment from input, that is local/utc/zone equivalent to model. +function cloneWithOffset(input, model) { + var res, diff; + if (model._isUTC) { + res = model.clone(); + diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); + // Use low-level api, because this fn is low-level api. + res._d.setTime(res._d.valueOf() + diff); + hooks.updateOffset(res, false); + return res; + } else { + return createLocal(input).local(); + } +} + +function getDateOffset (m) { + // On Firefox.24 Date#getTimezoneOffset returns a floating point. + // https://github.com/moment/moment/pull/1871 + return -Math.round(m._d.getTimezoneOffset() / 15) * 15; +} + +// HOOKS + +// This function will be called whenever a moment is mutated. +// It is intended to keep the offset in sync with the timezone. +hooks.updateOffset = function () {}; + +// MOMENTS + +// keepLocalTime = true means only change the timezone, without +// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> +// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset +// +0200, so we adjust the time as needed, to be valid. +// +// Keeping the time actually adds/subtracts (one hour) +// from the actual represented time. That is why we call updateOffset +// a second time. In case it wants us to change the offset again +// _changeInProgress == true case, then we have to adjust, because +// there is no such time in the given timezone. +function getSetOffset (input, keepLocalTime, keepMinutes) { + var offset = this._offset || 0, + localAdjust; + if (!this.isValid()) { + return input != null ? this : NaN; + } + if (input != null) { + if (typeof input === 'string') { + input = offsetFromString(matchShortOffset, input); + if (input === null) { + return this; + } + } else if (Math.abs(input) < 16 && !keepMinutes) { + input = input * 60; + } + if (!this._isUTC && keepLocalTime) { + localAdjust = getDateOffset(this); + } + this._offset = input; + this._isUTC = true; + if (localAdjust != null) { + this.add(localAdjust, 'm'); + } + if (offset !== input) { + if (!keepLocalTime || this._changeInProgress) { + addSubtract(this, createDuration(input - offset, 'm'), 1, false); + } else if (!this._changeInProgress) { + this._changeInProgress = true; + hooks.updateOffset(this, true); + this._changeInProgress = null; + } + } + return this; + } else { + return this._isUTC ? offset : getDateOffset(this); + } +} + +function getSetZone (input, keepLocalTime) { + if (input != null) { + if (typeof input !== 'string') { + input = -input; + } + + this.utcOffset(input, keepLocalTime); + + return this; + } else { + return -this.utcOffset(); + } +} + +function setOffsetToUTC (keepLocalTime) { + return this.utcOffset(0, keepLocalTime); +} + +function setOffsetToLocal (keepLocalTime) { + if (this._isUTC) { + this.utcOffset(0, keepLocalTime); + this._isUTC = false; + + if (keepLocalTime) { + this.subtract(getDateOffset(this), 'm'); + } + } + return this; +} + +function setOffsetToParsedOffset () { + if (this._tzm != null) { + this.utcOffset(this._tzm, false, true); + } else if (typeof this._i === 'string') { + var tZone = offsetFromString(matchOffset, this._i); + if (tZone != null) { + this.utcOffset(tZone); + } + else { + this.utcOffset(0, true); + } + } + return this; +} + +function hasAlignedHourOffset (input) { + if (!this.isValid()) { + return false; + } + input = input ? createLocal(input).utcOffset() : 0; + + return (this.utcOffset() - input) % 60 === 0; +} + +function isDaylightSavingTime () { + return ( + this.utcOffset() > this.clone().month(0).utcOffset() || + this.utcOffset() > this.clone().month(5).utcOffset() + ); +} + +function isDaylightSavingTimeShifted () { + if (!isUndefined(this._isDSTShifted)) { + return this._isDSTShifted; + } + + var c = {}; + + copyConfig(c, this); + c = prepareConfig(c); + + if (c._a) { + var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); + this._isDSTShifted = this.isValid() && + compareArrays(c._a, other.toArray()) > 0; + } else { + this._isDSTShifted = false; + } + + return this._isDSTShifted; +} + +function isLocal () { + return this.isValid() ? !this._isUTC : false; +} + +function isUtcOffset () { + return this.isValid() ? this._isUTC : false; +} + +function isUtc () { + return this.isValid() ? this._isUTC && this._offset === 0 : false; +} + +// ASP.NET json date format regex +var aspNetRegex = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; + +// from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html +// somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere +// and further modified to allow for strings containing both week and day +var isoRegex = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/; + +function createDuration (input, key) { + var duration = input, + // matching against regexp is expensive, do it on demand + match = null, + sign, + ret, + diffRes; + + if (isDuration(input)) { + duration = { + ms : input._milliseconds, + d : input._days, + M : input._months + }; + } else if (isNumber(input)) { + duration = {}; + if (key) { + duration[key] = input; + } else { + duration.milliseconds = input; + } + } else if (!!(match = aspNetRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : 0, + d : toInt(match[DATE]) * sign, + h : toInt(match[HOUR]) * sign, + m : toInt(match[MINUTE]) * sign, + s : toInt(match[SECOND]) * sign, + ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match + }; + } else if (!!(match = isoRegex.exec(input))) { + sign = (match[1] === '-') ? -1 : 1; + duration = { + y : parseIso(match[2], sign), + M : parseIso(match[3], sign), + w : parseIso(match[4], sign), + d : parseIso(match[5], sign), + h : parseIso(match[6], sign), + m : parseIso(match[7], sign), + s : parseIso(match[8], sign) + }; + } else if (duration == null) {// checks for null or undefined + duration = {}; + } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { + diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); + + duration = {}; + duration.ms = diffRes.milliseconds; + duration.M = diffRes.months; + } + + ret = new Duration(duration); + + if (isDuration(input) && hasOwnProp(input, '_locale')) { + ret._locale = input._locale; + } + + return ret; +} + +createDuration.fn = Duration.prototype; +createDuration.invalid = createInvalid$1; + +function parseIso (inp, sign) { + // We'd normally use ~~inp for this, but unfortunately it also + // converts floats to ints. + // inp may be undefined, so careful calling replace on it. + var res = inp && parseFloat(inp.replace(',', '.')); + // apply sign while we're at it + return (isNaN(res) ? 0 : res) * sign; +} + +function positiveMomentsDifference(base, other) { + var res = {milliseconds: 0, months: 0}; + + res.months = other.month() - base.month() + + (other.year() - base.year()) * 12; + if (base.clone().add(res.months, 'M').isAfter(other)) { + --res.months; + } + + res.milliseconds = +other - +(base.clone().add(res.months, 'M')); + + return res; +} + +function momentsDifference(base, other) { + var res; + if (!(base.isValid() && other.isValid())) { + return {milliseconds: 0, months: 0}; + } + + other = cloneWithOffset(other, base); + if (base.isBefore(other)) { + res = positiveMomentsDifference(base, other); + } else { + res = positiveMomentsDifference(other, base); + res.milliseconds = -res.milliseconds; + res.months = -res.months; + } + + return res; +} + +// TODO: remove 'name' arg after deprecation is removed +function createAdder(direction, name) { + return function (val, period) { + var dur, tmp; + //invert the arguments, but complain about it + if (period !== null && !isNaN(+period)) { + deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); + tmp = val; val = period; period = tmp; + } + + val = typeof val === 'string' ? +val : val; + dur = createDuration(val, period); + addSubtract(this, dur, direction); + return this; + }; +} + +function addSubtract (mom, duration, isAdding, updateOffset) { + var milliseconds = duration._milliseconds, + days = absRound(duration._days), + months = absRound(duration._months); + + if (!mom.isValid()) { + // No op + return; + } + + updateOffset = updateOffset == null ? true : updateOffset; + + if (milliseconds) { + mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); + } + if (days) { + set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); + } + if (months) { + setMonth(mom, get(mom, 'Month') + months * isAdding); + } + if (updateOffset) { + hooks.updateOffset(mom, days || months); + } +} + +var add = createAdder(1, 'add'); +var subtract = createAdder(-1, 'subtract'); + +function getCalendarFormat(myMoment, now) { + var diff = myMoment.diff(now, 'days', true); + return diff < -6 ? 'sameElse' : + diff < -1 ? 'lastWeek' : + diff < 0 ? 'lastDay' : + diff < 1 ? 'sameDay' : + diff < 2 ? 'nextDay' : + diff < 7 ? 'nextWeek' : 'sameElse'; +} + +function calendar$1 (time, formats) { + // We want to compare the start of today, vs this. + // Getting start-of-today depends on whether we're local/utc/offset or not. + var now = time || createLocal(), + sod = cloneWithOffset(now, this).startOf('day'), + format = hooks.calendarFormat(this, sod) || 'sameElse'; + + var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); + + return this.format(output || this.localeData().calendar(format, this, createLocal(now))); +} + +function clone () { + return new Moment(this); +} + +function isAfter (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() > localInput.valueOf(); + } else { + return localInput.valueOf() < this.clone().startOf(units).valueOf(); + } +} + +function isBefore (input, units) { + var localInput = isMoment(input) ? input : createLocal(input); + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() < localInput.valueOf(); + } else { + return this.clone().endOf(units).valueOf() < localInput.valueOf(); + } +} + +function isBetween (from, to, units, inclusivity) { + inclusivity = inclusivity || '()'; + return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && + (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); +} + +function isSame (input, units) { + var localInput = isMoment(input) ? input : createLocal(input), + inputMs; + if (!(this.isValid() && localInput.isValid())) { + return false; + } + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + return this.valueOf() === localInput.valueOf(); + } else { + inputMs = localInput.valueOf(); + return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); + } +} + +function isSameOrAfter (input, units) { + return this.isSame(input, units) || this.isAfter(input,units); +} + +function isSameOrBefore (input, units) { + return this.isSame(input, units) || this.isBefore(input,units); +} + +function diff (input, units, asFloat) { + var that, + zoneDelta, + delta, output; + + if (!this.isValid()) { + return NaN; + } + + that = cloneWithOffset(input, this); + + if (!that.isValid()) { + return NaN; + } + + zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; + + units = normalizeUnits(units); + + if (units === 'year' || units === 'month' || units === 'quarter') { + output = monthDiff(this, that); + if (units === 'quarter') { + output = output / 3; + } else if (units === 'year') { + output = output / 12; + } + } else { + delta = this - that; + output = units === 'second' ? delta / 1e3 : // 1000 + units === 'minute' ? delta / 6e4 : // 1000 * 60 + units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60 + units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst + units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst + delta; + } + return asFloat ? output : absFloor(output); +} + +function monthDiff (a, b) { + // difference in months + var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), + // b is in (anchor - 1 month, anchor + 1 month) + anchor = a.clone().add(wholeMonthDiff, 'months'), + anchor2, adjust; + + if (b - anchor < 0) { + anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor - anchor2); + } else { + anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); + // linear across the month + adjust = (b - anchor) / (anchor2 - anchor); + } + + //check for negative zero, return zero if negative zero + return -(wholeMonthDiff + adjust) || 0; +} + +hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; +hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; + +function toString () { + return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); +} + +function toISOString() { + if (!this.isValid()) { + return null; + } + var m = this.clone().utc(); + if (m.year() < 0 || m.year() > 9999) { + return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); + } + if (isFunction(Date.prototype.toISOString)) { + // native implementation is ~50x faster, use it when we can + return this.toDate().toISOString(); + } + return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]'); +} + +/** + * Return a human readable representation of a moment that can + * also be evaluated to get a new moment which is the same + * + * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects + */ +function inspect () { + if (!this.isValid()) { + return 'moment.invalid(/* ' + this._i + ' */)'; + } + var func = 'moment'; + var zone = ''; + if (!this.isLocal()) { + func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; + zone = 'Z'; + } + var prefix = '[' + func + '("]'; + var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; + var datetime = '-MM-DD[T]HH:mm:ss.SSS'; + var suffix = zone + '[")]'; + + return this.format(prefix + year + datetime + suffix); +} + +function format (inputString) { + if (!inputString) { + inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; + } + var output = formatMoment(this, inputString); + return this.localeData().postformat(output); +} + +function from (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function fromNow (withoutSuffix) { + return this.from(createLocal(), withoutSuffix); +} + +function to (time, withoutSuffix) { + if (this.isValid() && + ((isMoment(time) && time.isValid()) || + createLocal(time).isValid())) { + return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); + } else { + return this.localeData().invalidDate(); + } +} + +function toNow (withoutSuffix) { + return this.to(createLocal(), withoutSuffix); +} + +// If passed a locale key, it will set the locale for this +// instance. Otherwise, it will return the locale configuration +// variables for this instance. +function locale (key) { + var newLocaleData; + + if (key === undefined) { + return this._locale._abbr; + } else { + newLocaleData = getLocale(key); + if (newLocaleData != null) { + this._locale = newLocaleData; + } + return this; + } +} + +var lang = deprecate( + 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', + function (key) { + if (key === undefined) { + return this.localeData(); + } else { + return this.locale(key); + } + } +); + +function localeData () { + return this._locale; +} + +function startOf (units) { + units = normalizeUnits(units); + // the following switch intentionally omits break keywords + // to utilize falling through the cases. + switch (units) { + case 'year': + this.month(0); + /* falls through */ + case 'quarter': + case 'month': + this.date(1); + /* falls through */ + case 'week': + case 'isoWeek': + case 'day': + case 'date': + this.hours(0); + /* falls through */ + case 'hour': + this.minutes(0); + /* falls through */ + case 'minute': + this.seconds(0); + /* falls through */ + case 'second': + this.milliseconds(0); + } + + // weeks are a special case + if (units === 'week') { + this.weekday(0); + } + if (units === 'isoWeek') { + this.isoWeekday(1); + } + + // quarters are also special + if (units === 'quarter') { + this.month(Math.floor(this.month() / 3) * 3); + } + + return this; +} + +function endOf (units) { + units = normalizeUnits(units); + if (units === undefined || units === 'millisecond') { + return this; + } + + // 'date' is an alias for 'day', so it should be considered as such. + if (units === 'date') { + units = 'day'; + } + + return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); +} + +function valueOf () { + return this._d.valueOf() - ((this._offset || 0) * 60000); +} + +function unix () { + return Math.floor(this.valueOf() / 1000); +} + +function toDate () { + return new Date(this.valueOf()); +} + +function toArray () { + var m = this; + return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; +} + +function toObject () { + var m = this; + return { + years: m.year(), + months: m.month(), + date: m.date(), + hours: m.hours(), + minutes: m.minutes(), + seconds: m.seconds(), + milliseconds: m.milliseconds() + }; +} + +function toJSON () { + // new Date(NaN).toJSON() === null + return this.isValid() ? this.toISOString() : null; +} + +function isValid$2 () { + return isValid(this); +} + +function parsingFlags () { + return extend({}, getParsingFlags(this)); +} + +function invalidAt () { + return getParsingFlags(this).overflow; +} + +function creationData() { + return { + input: this._i, + format: this._f, + locale: this._locale, + isUTC: this._isUTC, + strict: this._strict + }; +} + +// FORMATTING + +addFormatToken(0, ['gg', 2], 0, function () { + return this.weekYear() % 100; +}); + +addFormatToken(0, ['GG', 2], 0, function () { + return this.isoWeekYear() % 100; +}); + +function addWeekYearFormatToken (token, getter) { + addFormatToken(0, [token, token.length], 0, getter); +} + +addWeekYearFormatToken('gggg', 'weekYear'); +addWeekYearFormatToken('ggggg', 'weekYear'); +addWeekYearFormatToken('GGGG', 'isoWeekYear'); +addWeekYearFormatToken('GGGGG', 'isoWeekYear'); + +// ALIASES + +addUnitAlias('weekYear', 'gg'); +addUnitAlias('isoWeekYear', 'GG'); + +// PRIORITY + +addUnitPriority('weekYear', 1); +addUnitPriority('isoWeekYear', 1); + + +// PARSING + +addRegexToken('G', matchSigned); +addRegexToken('g', matchSigned); +addRegexToken('GG', match1to2, match2); +addRegexToken('gg', match1to2, match2); +addRegexToken('GGGG', match1to4, match4); +addRegexToken('gggg', match1to4, match4); +addRegexToken('GGGGG', match1to6, match6); +addRegexToken('ggggg', match1to6, match6); + +addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { + week[token.substr(0, 2)] = toInt(input); +}); + +addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { + week[token] = hooks.parseTwoDigitYear(input); +}); + +// MOMENTS + +function getSetWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, + this.week(), + this.weekday(), + this.localeData()._week.dow, + this.localeData()._week.doy); +} + +function getSetISOWeekYear (input) { + return getSetWeekYearHelper.call(this, + input, this.isoWeek(), this.isoWeekday(), 1, 4); +} + +function getISOWeeksInYear () { + return weeksInYear(this.year(), 1, 4); +} + +function getWeeksInYear () { + var weekInfo = this.localeData()._week; + return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); +} + +function getSetWeekYearHelper(input, week, weekday, dow, doy) { + var weeksTarget; + if (input == null) { + return weekOfYear(this, dow, doy).year; + } else { + weeksTarget = weeksInYear(input, dow, doy); + if (week > weeksTarget) { + week = weeksTarget; + } + return setWeekAll.call(this, input, week, weekday, dow, doy); + } +} + +function setWeekAll(weekYear, week, weekday, dow, doy) { + var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), + date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); + + this.year(date.getUTCFullYear()); + this.month(date.getUTCMonth()); + this.date(date.getUTCDate()); + return this; +} + +// FORMATTING + +addFormatToken('Q', 0, 'Qo', 'quarter'); + +// ALIASES + +addUnitAlias('quarter', 'Q'); + +// PRIORITY + +addUnitPriority('quarter', 7); + +// PARSING + +addRegexToken('Q', match1); +addParseToken('Q', function (input, array) { + array[MONTH] = (toInt(input) - 1) * 3; +}); + +// MOMENTS + +function getSetQuarter (input) { + return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); +} + +// FORMATTING + +addFormatToken('D', ['DD', 2], 'Do', 'date'); + +// ALIASES + +addUnitAlias('date', 'D'); + +// PRIOROITY +addUnitPriority('date', 9); + +// PARSING + +addRegexToken('D', match1to2); +addRegexToken('DD', match1to2, match2); +addRegexToken('Do', function (isStrict, locale) { + // TODO: Remove "ordinalParse" fallback in next major release. + return isStrict ? + (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : + locale._dayOfMonthOrdinalParseLenient; +}); + +addParseToken(['D', 'DD'], DATE); +addParseToken('Do', function (input, array) { + array[DATE] = toInt(input.match(match1to2)[0], 10); +}); + +// MOMENTS + +var getSetDayOfMonth = makeGetSet('Date', true); + +// FORMATTING + +addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); + +// ALIASES + +addUnitAlias('dayOfYear', 'DDD'); + +// PRIORITY +addUnitPriority('dayOfYear', 4); + +// PARSING + +addRegexToken('DDD', match1to3); +addRegexToken('DDDD', match3); +addParseToken(['DDD', 'DDDD'], function (input, array, config) { + config._dayOfYear = toInt(input); +}); + +// HELPERS + +// MOMENTS + +function getSetDayOfYear (input) { + var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; + return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); +} + +// FORMATTING + +addFormatToken('m', ['mm', 2], 0, 'minute'); + +// ALIASES + +addUnitAlias('minute', 'm'); + +// PRIORITY + +addUnitPriority('minute', 14); + +// PARSING + +addRegexToken('m', match1to2); +addRegexToken('mm', match1to2, match2); +addParseToken(['m', 'mm'], MINUTE); + +// MOMENTS + +var getSetMinute = makeGetSet('Minutes', false); + +// FORMATTING + +addFormatToken('s', ['ss', 2], 0, 'second'); + +// ALIASES + +addUnitAlias('second', 's'); + +// PRIORITY + +addUnitPriority('second', 15); + +// PARSING + +addRegexToken('s', match1to2); +addRegexToken('ss', match1to2, match2); +addParseToken(['s', 'ss'], SECOND); + +// MOMENTS + +var getSetSecond = makeGetSet('Seconds', false); + +// FORMATTING + +addFormatToken('S', 0, 0, function () { + return ~~(this.millisecond() / 100); +}); + +addFormatToken(0, ['SS', 2], 0, function () { + return ~~(this.millisecond() / 10); +}); + +addFormatToken(0, ['SSS', 3], 0, 'millisecond'); +addFormatToken(0, ['SSSS', 4], 0, function () { + return this.millisecond() * 10; +}); +addFormatToken(0, ['SSSSS', 5], 0, function () { + return this.millisecond() * 100; +}); +addFormatToken(0, ['SSSSSS', 6], 0, function () { + return this.millisecond() * 1000; +}); +addFormatToken(0, ['SSSSSSS', 7], 0, function () { + return this.millisecond() * 10000; +}); +addFormatToken(0, ['SSSSSSSS', 8], 0, function () { + return this.millisecond() * 100000; +}); +addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { + return this.millisecond() * 1000000; +}); + + +// ALIASES + +addUnitAlias('millisecond', 'ms'); + +// PRIORITY + +addUnitPriority('millisecond', 16); + +// PARSING + +addRegexToken('S', match1to3, match1); +addRegexToken('SS', match1to3, match2); +addRegexToken('SSS', match1to3, match3); + +var token; +for (token = 'SSSS'; token.length <= 9; token += 'S') { + addRegexToken(token, matchUnsigned); +} + +function parseMs(input, array) { + array[MILLISECOND] = toInt(('0.' + input) * 1000); +} + +for (token = 'S'; token.length <= 9; token += 'S') { + addParseToken(token, parseMs); +} +// MOMENTS + +var getSetMillisecond = makeGetSet('Milliseconds', false); + +// FORMATTING + +addFormatToken('z', 0, 0, 'zoneAbbr'); +addFormatToken('zz', 0, 0, 'zoneName'); + +// MOMENTS + +function getZoneAbbr () { + return this._isUTC ? 'UTC' : ''; +} + +function getZoneName () { + return this._isUTC ? 'Coordinated Universal Time' : ''; +} + +var proto = Moment.prototype; + +proto.add = add; +proto.calendar = calendar$1; +proto.clone = clone; +proto.diff = diff; +proto.endOf = endOf; +proto.format = format; +proto.from = from; +proto.fromNow = fromNow; +proto.to = to; +proto.toNow = toNow; +proto.get = stringGet; +proto.invalidAt = invalidAt; +proto.isAfter = isAfter; +proto.isBefore = isBefore; +proto.isBetween = isBetween; +proto.isSame = isSame; +proto.isSameOrAfter = isSameOrAfter; +proto.isSameOrBefore = isSameOrBefore; +proto.isValid = isValid$2; +proto.lang = lang; +proto.locale = locale; +proto.localeData = localeData; +proto.max = prototypeMax; +proto.min = prototypeMin; +proto.parsingFlags = parsingFlags; +proto.set = stringSet; +proto.startOf = startOf; +proto.subtract = subtract; +proto.toArray = toArray; +proto.toObject = toObject; +proto.toDate = toDate; +proto.toISOString = toISOString; +proto.inspect = inspect; +proto.toJSON = toJSON; +proto.toString = toString; +proto.unix = unix; +proto.valueOf = valueOf; +proto.creationData = creationData; + +// Year +proto.year = getSetYear; +proto.isLeapYear = getIsLeapYear; + +// Week Year +proto.weekYear = getSetWeekYear; +proto.isoWeekYear = getSetISOWeekYear; + +// Quarter +proto.quarter = proto.quarters = getSetQuarter; + +// Month +proto.month = getSetMonth; +proto.daysInMonth = getDaysInMonth; + +// Week +proto.week = proto.weeks = getSetWeek; +proto.isoWeek = proto.isoWeeks = getSetISOWeek; +proto.weeksInYear = getWeeksInYear; +proto.isoWeeksInYear = getISOWeeksInYear; + +// Day +proto.date = getSetDayOfMonth; +proto.day = proto.days = getSetDayOfWeek; +proto.weekday = getSetLocaleDayOfWeek; +proto.isoWeekday = getSetISODayOfWeek; +proto.dayOfYear = getSetDayOfYear; + +// Hour +proto.hour = proto.hours = getSetHour; + +// Minute +proto.minute = proto.minutes = getSetMinute; + +// Second +proto.second = proto.seconds = getSetSecond; + +// Millisecond +proto.millisecond = proto.milliseconds = getSetMillisecond; + +// Offset +proto.utcOffset = getSetOffset; +proto.utc = setOffsetToUTC; +proto.local = setOffsetToLocal; +proto.parseZone = setOffsetToParsedOffset; +proto.hasAlignedHourOffset = hasAlignedHourOffset; +proto.isDST = isDaylightSavingTime; +proto.isLocal = isLocal; +proto.isUtcOffset = isUtcOffset; +proto.isUtc = isUtc; +proto.isUTC = isUtc; + +// Timezone +proto.zoneAbbr = getZoneAbbr; +proto.zoneName = getZoneName; + +// Deprecations +proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); +proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); +proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); +proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); +proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); + +function createUnix (input) { + return createLocal(input * 1000); +} + +function createInZone () { + return createLocal.apply(null, arguments).parseZone(); +} + +function preParsePostFormat (string) { + return string; +} + +var proto$1 = Locale.prototype; + +proto$1.calendar = calendar; +proto$1.longDateFormat = longDateFormat; +proto$1.invalidDate = invalidDate; +proto$1.ordinal = ordinal; +proto$1.preparse = preParsePostFormat; +proto$1.postformat = preParsePostFormat; +proto$1.relativeTime = relativeTime; +proto$1.pastFuture = pastFuture; +proto$1.set = set; + +// Month +proto$1.months = localeMonths; +proto$1.monthsShort = localeMonthsShort; +proto$1.monthsParse = localeMonthsParse; +proto$1.monthsRegex = monthsRegex; +proto$1.monthsShortRegex = monthsShortRegex; + +// Week +proto$1.week = localeWeek; +proto$1.firstDayOfYear = localeFirstDayOfYear; +proto$1.firstDayOfWeek = localeFirstDayOfWeek; + +// Day of Week +proto$1.weekdays = localeWeekdays; +proto$1.weekdaysMin = localeWeekdaysMin; +proto$1.weekdaysShort = localeWeekdaysShort; +proto$1.weekdaysParse = localeWeekdaysParse; + +proto$1.weekdaysRegex = weekdaysRegex; +proto$1.weekdaysShortRegex = weekdaysShortRegex; +proto$1.weekdaysMinRegex = weekdaysMinRegex; + +// Hours +proto$1.isPM = localeIsPM; +proto$1.meridiem = localeMeridiem; + +function get$1 (format, index, field, setter) { + var locale = getLocale(); + var utc = createUTC().set(setter, index); + return locale[field](utc, format); +} + +function listMonthsImpl (format, index, field) { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + + if (index != null) { + return get$1(format, index, field, 'month'); + } + + var i; + var out = []; + for (i = 0; i < 12; i++) { + out[i] = get$1(format, i, field, 'month'); + } + return out; +} + +// () +// (5) +// (fmt, 5) +// (fmt) +// (true) +// (true, 5) +// (true, fmt, 5) +// (true, fmt) +function listWeekdaysImpl (localeSorted, format, index, field) { + if (typeof localeSorted === 'boolean') { + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } else { + format = localeSorted; + index = format; + localeSorted = false; + + if (isNumber(format)) { + index = format; + format = undefined; + } + + format = format || ''; + } + + var locale = getLocale(), + shift = localeSorted ? locale._week.dow : 0; + + if (index != null) { + return get$1(format, (index + shift) % 7, field, 'day'); + } + + var i; + var out = []; + for (i = 0; i < 7; i++) { + out[i] = get$1(format, (i + shift) % 7, field, 'day'); + } + return out; +} + +function listMonths (format, index) { + return listMonthsImpl(format, index, 'months'); +} + +function listMonthsShort (format, index) { + return listMonthsImpl(format, index, 'monthsShort'); +} + +function listWeekdays (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); +} + +function listWeekdaysShort (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); +} + +function listWeekdaysMin (localeSorted, format, index) { + return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); +} + +getSetGlobalLocale('en', { + dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, + ordinal : function (number) { + var b = number % 10, + output = (toInt(number % 100 / 10) === 1) ? 'th' : + (b === 1) ? 'st' : + (b === 2) ? 'nd' : + (b === 3) ? 'rd' : 'th'; + return number + output; + } +}); + +// Side effect imports +hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); +hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); + +var mathAbs = Math.abs; + +function abs () { + var data = this._data; + + this._milliseconds = mathAbs(this._milliseconds); + this._days = mathAbs(this._days); + this._months = mathAbs(this._months); + + data.milliseconds = mathAbs(data.milliseconds); + data.seconds = mathAbs(data.seconds); + data.minutes = mathAbs(data.minutes); + data.hours = mathAbs(data.hours); + data.months = mathAbs(data.months); + data.years = mathAbs(data.years); + + return this; +} + +function addSubtract$1 (duration, input, value, direction) { + var other = createDuration(input, value); + + duration._milliseconds += direction * other._milliseconds; + duration._days += direction * other._days; + duration._months += direction * other._months; + + return duration._bubble(); +} + +// supports only 2.0-style add(1, 's') or add(duration) +function add$1 (input, value) { + return addSubtract$1(this, input, value, 1); +} + +// supports only 2.0-style subtract(1, 's') or subtract(duration) +function subtract$1 (input, value) { + return addSubtract$1(this, input, value, -1); +} + +function absCeil (number) { + if (number < 0) { + return Math.floor(number); + } else { + return Math.ceil(number); + } +} + +function bubble () { + var milliseconds = this._milliseconds; + var days = this._days; + var months = this._months; + var data = this._data; + var seconds, minutes, hours, years, monthsFromDays; + + // if we have a mix of positive and negative values, bubble down first + // check: https://github.com/moment/moment/issues/2166 + if (!((milliseconds >= 0 && days >= 0 && months >= 0) || + (milliseconds <= 0 && days <= 0 && months <= 0))) { + milliseconds += absCeil(monthsToDays(months) + days) * 864e5; + days = 0; + months = 0; + } + + // The following code bubbles up values, see the tests for + // examples of what that means. + data.milliseconds = milliseconds % 1000; + + seconds = absFloor(milliseconds / 1000); + data.seconds = seconds % 60; + + minutes = absFloor(seconds / 60); + data.minutes = minutes % 60; + + hours = absFloor(minutes / 60); + data.hours = hours % 24; + + days += absFloor(hours / 24); + + // convert days to months + monthsFromDays = absFloor(daysToMonths(days)); + months += monthsFromDays; + days -= absCeil(monthsToDays(monthsFromDays)); + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + data.days = days; + data.months = months; + data.years = years; + + return this; +} + +function daysToMonths (days) { + // 400 years have 146097 days (taking into account leap year rules) + // 400 years have 12 months === 4800 + return days * 4800 / 146097; +} + +function monthsToDays (months) { + // the reverse of daysToMonths + return months * 146097 / 4800; +} + +function as (units) { + if (!this.isValid()) { + return NaN; + } + var days; + var months; + var milliseconds = this._milliseconds; + + units = normalizeUnits(units); + + if (units === 'month' || units === 'year') { + days = this._days + milliseconds / 864e5; + months = this._months + daysToMonths(days); + return units === 'month' ? months : months / 12; + } else { + // handle milliseconds separately because of floating point math errors (issue #1867) + days = this._days + Math.round(monthsToDays(this._months)); + switch (units) { + case 'week' : return days / 7 + milliseconds / 6048e5; + case 'day' : return days + milliseconds / 864e5; + case 'hour' : return days * 24 + milliseconds / 36e5; + case 'minute' : return days * 1440 + milliseconds / 6e4; + case 'second' : return days * 86400 + milliseconds / 1000; + // Math.floor prevents floating point math errors here + case 'millisecond': return Math.floor(days * 864e5) + milliseconds; + default: throw new Error('Unknown unit ' + units); + } + } +} + +// TODO: Use this.as('ms')? +function valueOf$1 () { + if (!this.isValid()) { + return NaN; + } + return ( + this._milliseconds + + this._days * 864e5 + + (this._months % 12) * 2592e6 + + toInt(this._months / 12) * 31536e6 + ); +} + +function makeAs (alias) { + return function () { + return this.as(alias); + }; +} + +var asMilliseconds = makeAs('ms'); +var asSeconds = makeAs('s'); +var asMinutes = makeAs('m'); +var asHours = makeAs('h'); +var asDays = makeAs('d'); +var asWeeks = makeAs('w'); +var asMonths = makeAs('M'); +var asYears = makeAs('y'); + +function get$2 (units) { + units = normalizeUnits(units); + return this.isValid() ? this[units + 's']() : NaN; +} + +function makeGetter(name) { + return function () { + return this.isValid() ? this._data[name] : NaN; + }; +} + +var milliseconds = makeGetter('milliseconds'); +var seconds = makeGetter('seconds'); +var minutes = makeGetter('minutes'); +var hours = makeGetter('hours'); +var days = makeGetter('days'); +var months = makeGetter('months'); +var years = makeGetter('years'); + +function weeks () { + return absFloor(this.days() / 7); +} + +var round = Math.round; +var thresholds = { + ss: 44, // a few seconds to seconds + s : 45, // seconds to minute + m : 45, // minutes to hour + h : 22, // hours to day + d : 26, // days to month + M : 11 // months to year +}; + +// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize +function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { + return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); +} + +function relativeTime$1 (posNegDuration, withoutSuffix, locale) { + var duration = createDuration(posNegDuration).abs(); + var seconds = round(duration.as('s')); + var minutes = round(duration.as('m')); + var hours = round(duration.as('h')); + var days = round(duration.as('d')); + var months = round(duration.as('M')); + var years = round(duration.as('y')); + + var a = seconds <= thresholds.ss && ['s', seconds] || + seconds < thresholds.s && ['ss', seconds] || + minutes <= 1 && ['m'] || + minutes < thresholds.m && ['mm', minutes] || + hours <= 1 && ['h'] || + hours < thresholds.h && ['hh', hours] || + days <= 1 && ['d'] || + days < thresholds.d && ['dd', days] || + months <= 1 && ['M'] || + months < thresholds.M && ['MM', months] || + years <= 1 && ['y'] || ['yy', years]; + + a[2] = withoutSuffix; + a[3] = +posNegDuration > 0; + a[4] = locale; + return substituteTimeAgo.apply(null, a); +} + +// This function allows you to set the rounding function for relative time strings +function getSetRelativeTimeRounding (roundingFunction) { + if (roundingFunction === undefined) { + return round; + } + if (typeof(roundingFunction) === 'function') { + round = roundingFunction; + return true; + } + return false; +} + +// This function allows you to set a threshold for relative time strings +function getSetRelativeTimeThreshold (threshold, limit) { + if (thresholds[threshold] === undefined) { + return false; + } + if (limit === undefined) { + return thresholds[threshold]; + } + thresholds[threshold] = limit; + if (threshold === 's') { + thresholds.ss = limit - 1; + } + return true; +} + +function humanize (withSuffix) { + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var locale = this.localeData(); + var output = relativeTime$1(this, !withSuffix, locale); + + if (withSuffix) { + output = locale.pastFuture(+this, output); + } + + return locale.postformat(output); +} + +var abs$1 = Math.abs; + +function toISOString$1() { + // for ISO strings we do not use the normal bubbling rules: + // * milliseconds bubble up until they become hours + // * days do not bubble at all + // * months bubble up until they become years + // This is because there is no context-free conversion between hours and days + // (think of clock changes) + // and also not between days and months (28-31 days per month) + if (!this.isValid()) { + return this.localeData().invalidDate(); + } + + var seconds = abs$1(this._milliseconds) / 1000; + var days = abs$1(this._days); + var months = abs$1(this._months); + var minutes, hours, years; + + // 3600 seconds -> 60 minutes -> 1 hour + minutes = absFloor(seconds / 60); + hours = absFloor(minutes / 60); + seconds %= 60; + minutes %= 60; + + // 12 months -> 1 year + years = absFloor(months / 12); + months %= 12; + + + // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js + var Y = years; + var M = months; + var D = days; + var h = hours; + var m = minutes; + var s = seconds; + var total = this.asSeconds(); + + if (!total) { + // this is the same as C#'s (Noda) and python (isodate)... + // but not other JS (goog.date) + return 'P0D'; + } + + return (total < 0 ? '-' : '') + + 'P' + + (Y ? Y + 'Y' : '') + + (M ? M + 'M' : '') + + (D ? D + 'D' : '') + + ((h || m || s) ? 'T' : '') + + (h ? h + 'H' : '') + + (m ? m + 'M' : '') + + (s ? s + 'S' : ''); +} + +var proto$2 = Duration.prototype; + +proto$2.isValid = isValid$1; +proto$2.abs = abs; +proto$2.add = add$1; +proto$2.subtract = subtract$1; +proto$2.as = as; +proto$2.asMilliseconds = asMilliseconds; +proto$2.asSeconds = asSeconds; +proto$2.asMinutes = asMinutes; +proto$2.asHours = asHours; +proto$2.asDays = asDays; +proto$2.asWeeks = asWeeks; +proto$2.asMonths = asMonths; +proto$2.asYears = asYears; +proto$2.valueOf = valueOf$1; +proto$2._bubble = bubble; +proto$2.get = get$2; +proto$2.milliseconds = milliseconds; +proto$2.seconds = seconds; +proto$2.minutes = minutes; +proto$2.hours = hours; +proto$2.days = days; +proto$2.weeks = weeks; +proto$2.months = months; +proto$2.years = years; +proto$2.humanize = humanize; +proto$2.toISOString = toISOString$1; +proto$2.toString = toISOString$1; +proto$2.toJSON = toISOString$1; +proto$2.locale = locale; +proto$2.localeData = localeData; + +// Deprecations +proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); +proto$2.lang = lang; + +// Side effect imports + +// FORMATTING + +addFormatToken('X', 0, 0, 'unix'); +addFormatToken('x', 0, 0, 'valueOf'); + +// PARSING + +addRegexToken('x', matchSigned); +addRegexToken('X', matchTimestamp); +addParseToken('X', function (input, array, config) { + config._d = new Date(parseFloat(input, 10) * 1000); +}); +addParseToken('x', function (input, array, config) { + config._d = new Date(toInt(input)); +}); + +// Side effect imports + + +hooks.version = '2.18.1'; + +setHookCallback(createLocal); + +hooks.fn = proto; +hooks.min = min; +hooks.max = max; +hooks.now = now; +hooks.utc = createUTC; +hooks.unix = createUnix; +hooks.months = listMonths; +hooks.isDate = isDate; +hooks.locale = getSetGlobalLocale; +hooks.invalid = createInvalid; +hooks.duration = createDuration; +hooks.isMoment = isMoment; +hooks.weekdays = listWeekdays; +hooks.parseZone = createInZone; +hooks.localeData = getLocale; +hooks.isDuration = isDuration; +hooks.monthsShort = listMonthsShort; +hooks.weekdaysMin = listWeekdaysMin; +hooks.defineLocale = defineLocale; +hooks.updateLocale = updateLocale; +hooks.locales = listLocales; +hooks.weekdaysShort = listWeekdaysShort; +hooks.normalizeUnits = normalizeUnits; +hooks.relativeTimeRounding = getSetRelativeTimeRounding; +hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; +hooks.calendarFormat = getCalendarFormat; +hooks.prototype = proto; + +return hooks; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/moment_locale_es.js b/core/static/journal_about/js/moment_locale_es.js new file mode 100644 index 0000000..f10cd4a --- /dev/null +++ b/core/static/journal_about/js/moment_locale_es.js @@ -0,0 +1,83 @@ +//! moment.js locale configuration +//! locale : Spanish [es] +//! author : Julio Napurí : https://github.com/julionc + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'); +var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'); + +var es = moment.defineLocale('es', { + months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'), + monthsShort : function (m, format) { + if (!m) { + return monthsShortDot; + } else if (/-MMM-/.test(format)) { + return monthsShort[m.month()]; + } else { + return monthsShortDot[m.month()]; + } + }, + monthsParseExact : true, + weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), + weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), + weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'H:mm', + LTS : 'H:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY H:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm' + }, + calendar : { + sameDay : function () { + return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextDay : function () { + return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + nextWeek : function () { + return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastDay : function () { + return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + lastWeek : function () { + return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT'; + }, + sameElse : 'L' + }, + relativeTime : { + future : 'en %s', + past : 'hace %s', + s : 'unos segundos', + m : 'un minuto', + mm : '%d minutos', + h : 'una hora', + hh : '%d horas', + d : 'un día', + dd : '%d días', + M : 'un mes', + MM : '%d meses', + y : 'un año', + yy : '%d años' + }, + dayOfMonthOrdinalParse : /\d{1,2}º/, + ordinal : '%dº', + week : { + dow : 1, // Monday is the first day of the week. + doy : 4 // The week that contains Jan 4th is the first week of the year. + } +}); + +return es; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/moment_locale_pt_br.js b/core/static/journal_about/js/moment_locale_pt_br.js new file mode 100644 index 0000000..364685a --- /dev/null +++ b/core/static/journal_about/js/moment_locale_pt_br.js @@ -0,0 +1,61 @@ +//! moment.js locale configuration +//! locale : Portuguese (Brazil) [pt-br] +//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira + +;(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + && typeof require === 'function' ? factory(require('../moment')) : + typeof define === 'function' && define.amd ? define(['../moment'], factory) : + factory(global.moment) +}(this, (function (moment) { 'use strict'; + + +var ptBr = moment.defineLocale('pt-br', { + months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'), + monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), + weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'), + weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), + weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), + weekdaysParseExact : true, + longDateFormat : { + LT : 'HH:mm', + LTS : 'HH:mm:ss', + L : 'DD/MM/YYYY', + LL : 'D [de] MMMM [de] YYYY', + LLL : 'D [de] MMMM [de] YYYY [às] HH:mm', + LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm' + }, + calendar : { + sameDay: '[Hoje às] LT', + nextDay: '[Amanhã às] LT', + nextWeek: 'dddd [às] LT', + lastDay: '[Ontem às] LT', + lastWeek: function () { + return (this.day() === 0 || this.day() === 6) ? + '[Último] dddd [às] LT' : // Saturday + Sunday + '[Última] dddd [às] LT'; // Monday - Friday + }, + sameElse: 'L' + }, + relativeTime : { + future : 'em %s', + past : '%s atrás', + s : 'poucos segundos', + m : 'um minuto', + mm : '%d minutos', + h : 'uma hora', + hh : '%d horas', + d : 'um dia', + dd : '%d dias', + M : 'um mês', + MM : '%d meses', + y : 'um ano', + yy : '%d anos' + }, + dayOfMonthOrdinalParse: /\d{1,2}º/, + ordinal : '%dº' +}); + +return ptBr; + +}))); \ No newline at end of file diff --git a/core/static/journal_about/js/plugins.js b/core/static/journal_about/js/plugins.js new file mode 100644 index 0000000..45da331 --- /dev/null +++ b/core/static/journal_about/js/plugins.js @@ -0,0 +1,3495 @@ +/*! + * ZeroClipboard + * The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface + * Copyright (c) 2009-2016 Jon Rohan, James M. Greene + * Licensed MIT + * http://zeroclipboard.org/ + * v2.4.0-beta.1 + */ +(function(window, undefined) { + //"use strict"; + /** + * Store references to critically important global functions that may be + * overridden on certain web pages. + */ + var _window = window, _document = _window.document, _navigator = _window.navigator, _setTimeout = _window.setTimeout, _clearTimeout = _window.clearTimeout, _setInterval = _window.setInterval, _clearInterval = _window.clearInterval, _getComputedStyle = _window.getComputedStyle, _encodeURIComponent = _window.encodeURIComponent, _ActiveXObject = _window.ActiveXObject, _Error = _window.Error, _parseInt = _window.Number.parseInt || _window.parseInt, _parseFloat = _window.Number.parseFloat || _window.parseFloat, _isNaN = _window.Number.isNaN || _window.isNaN, _now = _window.Date.now, _keys = _window.Object.keys, _hasOwn = _window.Object.prototype.hasOwnProperty, _slice = _window.Array.prototype.slice, _unwrap = function() { + var unwrapper = function(el) { + return el; + }; + if (typeof _window.wrap === "function" && typeof _window.unwrap === "function") { + try { + var div = _document.createElement("div"); + var unwrappedDiv = _window.unwrap(div); + if (div.nodeType === 1 && unwrappedDiv && unwrappedDiv.nodeType === 1) { + unwrapper = _window.unwrap; + } + } catch (e) {} + } + return unwrapper; + }(); + /** + * Convert an `arguments` object into an Array. + * + * @returns The arguments as an Array + * @private + */ + var _args = function(argumentsObj) { + return _slice.call(argumentsObj, 0); + }; + /** + * Shallow-copy the owned, enumerable properties of one object over to another, similar to jQuery's `$.extend`. + * + * @returns The target object, augmented + * @private + */ + var _extend = function() { + var i, len, arg, prop, src, copy, args = _args(arguments), target = args[0] || {}; + for (i = 1, len = args.length; i < len; i++) { + if ((arg = args[i]) != null) { + for (prop in arg) { + if (_hasOwn.call(arg, prop)) { + src = target[prop]; + copy = arg[prop]; + if (target !== copy && copy !== undefined) { + target[prop] = copy; + } + } + } + } + } + return target; + }; + /** + * Return a deep copy of the source object or array. + * + * @returns Object or Array + * @private + */ + var _deepCopy = function(source) { + var copy, i, len, prop; + if (typeof source !== "object" || source == null || typeof source.nodeType === "number") { + copy = source; + } else if (typeof source.length === "number") { + copy = []; + for (i = 0, len = source.length; i < len; i++) { + if (_hasOwn.call(source, i)) { + copy[i] = _deepCopy(source[i]); + } + } + } else { + copy = {}; + for (prop in source) { + if (_hasOwn.call(source, prop)) { + copy[prop] = _deepCopy(source[prop]); + } + } + } + return copy; + }; + /** + * Makes a shallow copy of `obj` (like `_extend`) but filters its properties based on a list of `keys` to keep. + * The inverse of `_omit`, mostly. The big difference is that these properties do NOT need to be enumerable to + * be kept. + * + * @returns A new filtered object. + * @private + */ + var _pick = function(obj, keys) { + var newObj = {}; + for (var i = 0, len = keys.length; i < len; i++) { + if (keys[i] in obj) { + newObj[keys[i]] = obj[keys[i]]; + } + } + return newObj; + }; + /** + * Makes a shallow copy of `obj` (like `_extend`) but filters its properties based on a list of `keys` to omit. + * The inverse of `_pick`. + * + * @returns A new filtered object. + * @private + */ + var _omit = function(obj, keys) { + var newObj = {}; + for (var prop in obj) { + if (keys.indexOf(prop) === -1) { + newObj[prop] = obj[prop]; + } + } + return newObj; + }; + /** + * Remove all owned, enumerable properties from an object. + * + * @returns The original object without its owned, enumerable properties. + * @private + */ + var _deleteOwnProperties = function(obj) { + if (obj) { + for (var prop in obj) { + if (_hasOwn.call(obj, prop)) { + delete obj[prop]; + } + } + } + return obj; + }; + /** + * Determine if an element is contained within another element. + * + * @returns Boolean + * @private + */ + var _containedBy = function(el, ancestorEl) { + if (el && el.nodeType === 1 && el.ownerDocument && ancestorEl && (ancestorEl.nodeType === 1 && ancestorEl.ownerDocument && ancestorEl.ownerDocument === el.ownerDocument || ancestorEl.nodeType === 9 && !ancestorEl.ownerDocument && ancestorEl === el.ownerDocument)) { + do { + if (el === ancestorEl) { + return true; + } + el = el.parentNode; + } while (el); + } + return false; + }; + /** + * Get the URL path's parent directory. + * + * @returns String or `undefined` + * @private + */ + var _getDirPathOfUrl = function(url) { + var dir; + if (typeof url === "string" && url) { + dir = url.split("#")[0].split("?")[0]; + dir = url.slice(0, url.lastIndexOf("/") + 1); + } + return dir; + }; + /** + * Get the current script's URL by throwing an `Error` and analyzing it. + * + * @returns String or `undefined` + * @private + */ + var _getCurrentScriptUrlFromErrorStack = function(stack) { + var url, matches; + if (typeof stack === "string" && stack) { + matches = stack.match(/^(?:|[^:@]*@|.+\)@(?=http[s]?|file)|.+?\s+(?: at |@)(?:[^:\(]+ )*[\(]?)((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/); + if (matches && matches[1]) { + url = matches[1]; + } else { + matches = stack.match(/\)@((?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/); + if (matches && matches[1]) { + url = matches[1]; + } + } + } + return url; + }; + /** + * Get the current script's URL by throwing an `Error` and analyzing it. + * + * @returns String or `undefined` + * @private + */ + var _getCurrentScriptUrlFromError = function() { + var url, err; + try { + throw new _Error(); + } catch (e) { + err = e; + } + if (err) { + url = err.sourceURL || err.fileName || _getCurrentScriptUrlFromErrorStack(err.stack); + } + return url; + }; + /** + * Get the current script's URL. + * + * @returns String or `undefined` + * @private + */ + var _getCurrentScriptUrl = function() { + var jsPath, scripts, i; + if (_document.currentScript && (jsPath = _document.currentScript.src)) { + return jsPath; + } + scripts = _document.getElementsByTagName("script"); + if (scripts.length === 1) { + return scripts[0].src || undefined; + } + if ("readyState" in (scripts[0] || document.createElement("script"))) { + for (i = scripts.length; i--; ) { + if (scripts[i].readyState === "interactive" && (jsPath = scripts[i].src)) { + return jsPath; + } + } + } + if (_document.readyState === "loading" && (jsPath = scripts[scripts.length - 1].src)) { + return jsPath; + } + if (jsPath = _getCurrentScriptUrlFromError()) { + return jsPath; + } + return undefined; + }; + /** + * Get the unanimous parent directory of ALL script tags. + * If any script tags are either (a) inline or (b) from differing parent + * directories, this method must return `undefined`. + * + * @returns String or `undefined` + * @private + */ + var _getUnanimousScriptParentDir = function() { + var i, jsDir, jsPath, scripts = _document.getElementsByTagName("script"); + for (i = scripts.length; i--; ) { + if (!(jsPath = scripts[i].src)) { + jsDir = null; + break; + } + jsPath = _getDirPathOfUrl(jsPath); + if (jsDir == null) { + jsDir = jsPath; + } else if (jsDir !== jsPath) { + jsDir = null; + break; + } + } + return jsDir || undefined; + }; + /** + * Get the presumed location of the "ZeroClipboard.swf" file, based on the location + * of the executing JavaScript file (e.g. "ZeroClipboard.js", etc.). + * + * @returns String + * @private + */ + var _getDefaultSwfPath = function() { + var jsDir = _getDirPathOfUrl(_getCurrentScriptUrl()) || _getUnanimousScriptParentDir() || ""; + return jsDir + "ZeroClipboard.swf"; + }; + /** + * Is the client's operating system some version of Windows? + * + * @returns Boolean + * @private + */ + var _isWindows = function() { + var isWindowsRegex = /win(dows|[\s]?(nt|me|ce|xp|vista|[\d]+))/i; + return !!_navigator && (isWindowsRegex.test(_navigator.appVersion || "") || isWindowsRegex.test(_navigator.platform || "") || (_navigator.userAgent || "").indexOf("Windows") !== -1); + }; + /** + * Keep track of if the page is framed (in an `iframe`). This can never change. + * @private + */ + var _pageIsFramed = function() { + return _window.opener == null && (!!_window.top && _window != _window.top || !!_window.parent && _window != _window.parent); + }(); + /** + * Keep track of if the page is XHTML (vs. HTML), which requires that everything + * be rendering in XML mode. + * @private + */ + var _pageIsXhtml = _document.documentElement.nodeName === "html"; + /** + * Keep track of the state of the Flash object. + * @private + */ + var _flashState = { + bridge: null, + version: "0.0.0", + pluginType: "unknown", + sandboxed: null, + disabled: null, + outdated: null, + insecure: null, + unavailable: null, + degraded: null, + deactivated: null, + overdue: null, + ready: null + }; + /** + * The minimum Flash Player version required to use ZeroClipboard completely. + * @readonly + * @private + */ + var _minimumFlashVersion = "11.0.0"; + /** + * The ZeroClipboard library version number, as reported by Flash, at the time the SWF was compiled. + */ + var _zcSwfVersion; + /** + * Keep track of all event listener registrations. + * @private + */ + var _handlers = {}; + /** + * Keep track of the currently activated element. + * @private + */ + var _currentElement; + /** + * Keep track of the element that was activated when a `copy` process started. + * @private + */ + var _copyTarget; + /** + * Keep track of data for the pending clipboard transaction. + * @private + */ + var _clipData = {}; + /** + * Keep track of data formats for the pending clipboard transaction. + * @private + */ + var _clipDataFormatMap = null; + /** + * Keep track of the Flash availability check timeout. + * @private + */ + var _flashCheckTimeout = 0; + /** + * Keep track of SWF network errors interval polling. + * @private + */ + var _swfFallbackCheckInterval = 0; + /** + * The `message` store for events + * @private + */ + var _eventMessages = { + ready: "Flash communication is established", + error: { + "flash-sandboxed": "Attempting to run Flash in a sandboxed iframe, which is impossible", + "flash-disabled": "Flash is disabled or not installed. May also be attempting to run Flash in a sandboxed iframe, which is impossible.", + "flash-outdated": "Flash is too outdated to support ZeroClipboard", + "flash-insecure": "Flash will be unable to communicate due to a protocol mismatch between your `swfPath` configuration and the page", + "flash-unavailable": "Flash is unable to communicate bidirectionally with JavaScript", + "flash-degraded": "Flash is unable to preserve data fidelity when communicating with JavaScript", + "flash-deactivated": "Flash is too outdated for your browser and/or is configured as click-to-activate.\nThis may also mean that the ZeroClipboard SWF object could not be loaded, so please check your `swfPath` configuration and/or network connectivity.\nMay also be attempting to run Flash in a sandboxed iframe, which is impossible.", + "flash-overdue": "Flash communication was established but NOT within the acceptable time limit", + "version-mismatch": "ZeroClipboard JS version number does not match ZeroClipboard SWF version number", + "clipboard-error": "At least one error was thrown while ZeroClipboard was attempting to inject your data into the clipboard", + "config-mismatch": "ZeroClipboard configuration does not match Flash's reality", + "swf-not-found": "The ZeroClipboard SWF object could not be loaded, so please check your `swfPath` configuration and/or network connectivity", + "browser-unsupported": "The browser does not support the required HTML DOM and JavaScript features" + } + }; + /** + * The `name`s of `error` events that can only occur is Flash has at least + * been able to load the SWF successfully. + * @private + */ + var _errorsThatOnlyOccurAfterFlashLoads = [ "flash-unavailable", "flash-degraded", "flash-overdue", "version-mismatch", "config-mismatch", "clipboard-error" ]; + /** + * The `name`s of `error` events that should likely result in the `_flashState` + * variable's property values being updated. + * @private + */ + var _flashStateErrorNames = [ "flash-sandboxed", "flash-disabled", "flash-outdated", "flash-insecure", "flash-unavailable", "flash-degraded", "flash-deactivated", "flash-overdue" ]; + /** + * A RegExp to match the `name` property of `error` events related to Flash. + * @private + */ + var _flashStateErrorNameMatchingRegex = new RegExp("^flash-(" + _flashStateErrorNames.map(function(errorName) { + return errorName.replace(/^flash-/, ""); + }).join("|") + ")$"); + /** + * A RegExp to match the `name` property of `error` events related to Flash, + * which is enabled. + * @private + */ + var _flashStateEnabledErrorNameMatchingRegex = new RegExp("^flash-(" + _flashStateErrorNames.filter(function(errorName) { + return errorName !== "flash-disabled"; + }).map(function(errorName) { + return errorName.replace(/^flash-/, ""); + }).join("|") + ")$"); + /** + * ZeroClipboard configuration defaults for the Core module. + * @private + */ + var _globalConfig = { + swfPath: _getDefaultSwfPath(), + trustedDomains: _window.location.host ? [ _window.location.host ] : [], + cacheBust: true, + forceEnhancedClipboard: false, + flashLoadTimeout: 3e4, + autoActivate: true, + bubbleEvents: true, + fixLineEndings: true, + containerId: "global-zeroclipboard-html-bridge", + containerClass: "global-zeroclipboard-container", + swfObjectId: "global-zeroclipboard-flash-bridge", + hoverClass: false, + activeClass: false, + forceHandCursor: false, + title: null, + zIndex: 999999999 + }; + /** + * The underlying implementation of `ZeroClipboard.config`. + * @private + */ + var _config = function(options) { + if (typeof options === "object" && options && !("length" in options)) { + _keys(options).forEach(function(prop) { + if (/^(?:forceHandCursor|title|zIndex|bubbleEvents|fixLineEndings)$/.test(prop)) { + _globalConfig[prop] = options[prop]; + } else if (_flashState.bridge == null) { + if (prop === "containerId" || prop === "swfObjectId") { + if (_isValidHtml4Id(options[prop])) { + _globalConfig[prop] = options[prop]; + } else { + throw new Error("The specified `" + prop + "` value is not valid as an HTML4 Element ID"); + } + } else { + _globalConfig[prop] = options[prop]; + } + } + }); + } + if (typeof options === "string" && options) { + if (_hasOwn.call(_globalConfig, options)) { + return _globalConfig[options]; + } + return; + } + return _deepCopy(_globalConfig); + }; + /** + * The underlying implementation of `ZeroClipboard.state`. + * @private + */ + var _state = function() { + _detectSandbox(); + return { + browser: _extend(_pick(_navigator, [ "userAgent", "platform", "appName", "appVersion" ]), { + isSupported: _isBrowserSupported() + }), + flash: _omit(_flashState, [ "bridge" ]), + zeroclipboard: { + version: ZeroClipboard.version, + config: ZeroClipboard.config() + } + }; + }; + /** + * Does this browser support all of the necessary DOM and JS features necessary? + * @private + */ + var _isBrowserSupported = function() { + return !!(_document.addEventListener && _window.Object.keys && _window.Array.prototype.map); + }; + /** + * The underlying implementation of `ZeroClipboard.isFlashUnusable`. + * @private + */ + var _isFlashUnusable = function() { + return !!(_flashState.sandboxed || _flashState.disabled || _flashState.outdated || _flashState.unavailable || _flashState.degraded || _flashState.deactivated); + }; + /** + * The underlying implementation of `ZeroClipboard.on`. + * @private + */ + var _on = function(eventType, listener) { + var i, len, events, added = {}; + if (typeof eventType === "string" && eventType) { + events = eventType.toLowerCase().split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + ZeroClipboard.on(key, listener); + } + }); + } + if (events && events.length && listener) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].replace(/^on/, ""); + added[eventType] = true; + if (!_handlers[eventType]) { + _handlers[eventType] = []; + } + _handlers[eventType].push(listener); + } + if (added.ready && _flashState.ready) { + ZeroClipboard.emit({ + type: "ready" + }); + } + if (added.error) { + if (!_isBrowserSupported()) { + ZeroClipboard.emit({ + type: "error", + name: "browser-unsupported" + }); + } + for (i = 0, len = _flashStateErrorNames.length; i < len; i++) { + if (_flashState[_flashStateErrorNames[i].replace(/^flash-/, "")] === true) { + ZeroClipboard.emit({ + type: "error", + name: _flashStateErrorNames[i] + }); + break; + } + } + if (_zcSwfVersion !== undefined && ZeroClipboard.version !== _zcSwfVersion) { + ZeroClipboard.emit({ + type: "error", + name: "version-mismatch", + jsVersion: ZeroClipboard.version, + swfVersion: _zcSwfVersion + }); + } + } + } + return ZeroClipboard; + }; + /** + * The underlying implementation of `ZeroClipboard.off`. + * @private + */ + var _off = function(eventType, listener) { + var i, len, foundIndex, events, perEventHandlers; + if (arguments.length === 0) { + events = _keys(_handlers); + } else if (typeof eventType === "string" && eventType) { + events = eventType.toLowerCase().split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + ZeroClipboard.off(key, listener); + } + }); + } + if (events && events.length) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].replace(/^on/, ""); + perEventHandlers = _handlers[eventType]; + if (perEventHandlers && perEventHandlers.length) { + if (listener) { + foundIndex = perEventHandlers.indexOf(listener); + while (foundIndex !== -1) { + perEventHandlers.splice(foundIndex, 1); + foundIndex = perEventHandlers.indexOf(listener, foundIndex); + } + } else { + perEventHandlers.length = 0; + } + } + } + } + return ZeroClipboard; + }; + /** + * The underlying implementation of `ZeroClipboard.handlers`. + * @private + */ + var _listeners = function(eventType) { + var copy; + if (typeof eventType === "string" && eventType) { + copy = _deepCopy(_handlers[eventType]) || null; + } else { + copy = _deepCopy(_handlers); + } + return copy; + }; + /** + * The underlying implementation of `ZeroClipboard.emit`. + * @private + */ + var _emit = function(event) { + var eventCopy, returnVal, tmp; + event = _createEvent(event); + if (!event) { + return; + } + if (_preprocessEvent(event)) { + return; + } + if (event.type === "ready" && _flashState.overdue === true) { + return ZeroClipboard.emit({ + type: "error", + name: "flash-overdue" + }); + } + eventCopy = _extend({}, event); + _dispatchCallbacks.call(this, eventCopy); + if (event.type === "copy") { + tmp = _mapClipDataToFlash(_clipData); + returnVal = tmp.data; + _clipDataFormatMap = tmp.formatMap; + } + return returnVal; + }; + /** + * Get the protocol of the configured SWF path. + * @private + */ + var _getSwfPathProtocol = function() { + var swfPath = _globalConfig.swfPath || "", swfPathFirstTwoChars = swfPath.slice(0, 2), swfProtocol = swfPath.slice(0, swfPath.indexOf("://") + 1); + return swfPathFirstTwoChars === "\\\\" ? "file:" : swfPathFirstTwoChars === "//" || swfProtocol === "" ? _window.location.protocol : swfProtocol; + }; + /** + * The underlying implementation of `ZeroClipboard.create`. + * @private + */ + var _create = function() { + var maxWait, swfProtocol, previousState = _flashState.sandboxed; + if (!_isBrowserSupported()) { + _flashState.ready = false; + ZeroClipboard.emit({ + type: "error", + name: "browser-unsupported" + }); + return; + } + _detectSandbox(); + if (typeof _flashState.ready !== "boolean") { + _flashState.ready = false; + } + if (_flashState.sandboxed !== previousState && _flashState.sandboxed === true) { + _flashState.ready = false; + ZeroClipboard.emit({ + type: "error", + name: "flash-sandboxed" + }); + } else if (!ZeroClipboard.isFlashUnusable() && _flashState.bridge === null) { + swfProtocol = _getSwfPathProtocol(); + if (swfProtocol && swfProtocol !== _window.location.protocol) { + ZeroClipboard.emit({ + type: "error", + name: "flash-insecure" + }); + } else { + maxWait = _globalConfig.flashLoadTimeout; + if (typeof maxWait === "number" && maxWait >= 0) { + _flashCheckTimeout = _setTimeout(function() { + if (typeof _flashState.deactivated !== "boolean") { + _flashState.deactivated = true; + } + if (_flashState.deactivated === true) { + ZeroClipboard.emit({ + type: "error", + name: "flash-deactivated" + }); + } + }, maxWait); + } + _flashState.overdue = false; + _embedSwf(); + } + } + }; + /** + * The underlying implementation of `ZeroClipboard.destroy`. + * @private + */ + var _destroy = function() { + ZeroClipboard.clearData(); + ZeroClipboard.blur(); + ZeroClipboard.emit("destroy"); + _unembedSwf(); + ZeroClipboard.off(); + }; + /** + * The underlying implementation of `ZeroClipboard.setData`. + * @private + */ + var _setData = function(format, data) { + var dataObj; + if (typeof format === "object" && format && typeof data === "undefined") { + dataObj = format; + ZeroClipboard.clearData(); + } else if (typeof format === "string" && format) { + dataObj = {}; + dataObj[format] = data; + } else { + return; + } + for (var dataFormat in dataObj) { + if (typeof dataFormat === "string" && dataFormat && _hasOwn.call(dataObj, dataFormat) && typeof dataObj[dataFormat] === "string" && dataObj[dataFormat]) { + _clipData[dataFormat] = _fixLineEndings(dataObj[dataFormat]); + } + } + }; + /** + * The underlying implementation of `ZeroClipboard.clearData`. + * @private + */ + var _clearData = function(format) { + if (typeof format === "undefined") { + _deleteOwnProperties(_clipData); + _clipDataFormatMap = null; + } else if (typeof format === "string" && _hasOwn.call(_clipData, format)) { + delete _clipData[format]; + } + }; + /** + * The underlying implementation of `ZeroClipboard.getData`. + * @private + */ + var _getData = function(format) { + if (typeof format === "undefined") { + return _deepCopy(_clipData); + } else if (typeof format === "string" && _hasOwn.call(_clipData, format)) { + return _clipData[format]; + } + }; + /** + * The underlying implementation of `ZeroClipboard.focus`/`ZeroClipboard.activate`. + * @private + */ + var _focus = function(element) { + if (!(element && element.nodeType === 1)) { + return; + } + if (_currentElement) { + _removeClass(_currentElement, _globalConfig.activeClass); + if (_currentElement !== element) { + _removeClass(_currentElement, _globalConfig.hoverClass); + } + } + _currentElement = element; + _addClass(element, _globalConfig.hoverClass); + var newTitle = element.getAttribute("title") || _globalConfig.title; + if (typeof newTitle === "string" && newTitle) { + var htmlBridge = _getHtmlBridge(_flashState.bridge); + if (htmlBridge) { + htmlBridge.setAttribute("title", newTitle); + } + } + var useHandCursor = _globalConfig.forceHandCursor === true || _getStyle(element, "cursor") === "pointer"; + _setHandCursor(useHandCursor); + _reposition(); + }; + /** + * The underlying implementation of `ZeroClipboard.blur`/`ZeroClipboard.deactivate`. + * @private + */ + var _blur = function() { + var htmlBridge = _getHtmlBridge(_flashState.bridge); + if (htmlBridge) { + htmlBridge.removeAttribute("title"); + htmlBridge.style.left = "0px"; + htmlBridge.style.top = "-9999px"; + htmlBridge.style.width = "1px"; + htmlBridge.style.height = "1px"; + } + if (_currentElement) { + _removeClass(_currentElement, _globalConfig.hoverClass); + _removeClass(_currentElement, _globalConfig.activeClass); + _currentElement = null; + } + }; + /** + * The underlying implementation of `ZeroClipboard.activeElement`. + * @private + */ + var _activeElement = function() { + return _currentElement || null; + }; + /** + * Check if a value is a valid HTML4 `ID` or `Name` token. + * @private + */ + var _isValidHtml4Id = function(id) { + return typeof id === "string" && id && /^[A-Za-z][A-Za-z0-9_:\-\.]*$/.test(id); + }; + /** + * Create or update an `event` object, based on the `eventType`. + * @private + */ + var _createEvent = function(event) { + var eventType; + if (typeof event === "string" && event) { + eventType = event; + event = {}; + } else if (typeof event === "object" && event && typeof event.type === "string" && event.type) { + eventType = event.type; + } + if (!eventType) { + return; + } + eventType = eventType.toLowerCase(); + if (!event.target && (/^(copy|aftercopy|_click)$/.test(eventType) || eventType === "error" && event.name === "clipboard-error")) { + event.target = _copyTarget; + } + _extend(event, { + type: eventType, + target: event.target || _currentElement || null, + relatedTarget: event.relatedTarget || null, + currentTarget: _flashState && _flashState.bridge || null, + timeStamp: event.timeStamp || _now() || null + }); + var msg = _eventMessages[event.type]; + if (event.type === "error" && event.name && msg) { + msg = msg[event.name]; + } + if (msg) { + event.message = msg; + } + if (event.type === "ready") { + _extend(event, { + target: null, + version: _flashState.version + }); + } + if (event.type === "error") { + if (_flashStateErrorNameMatchingRegex.test(event.name)) { + _extend(event, { + target: null, + minimumVersion: _minimumFlashVersion + }); + } + if (_flashStateEnabledErrorNameMatchingRegex.test(event.name)) { + _extend(event, { + version: _flashState.version + }); + } + if (event.name === "flash-insecure") { + _extend(event, { + pageProtocol: _window.location.protocol, + swfProtocol: _getSwfPathProtocol() + }); + } + } + if (event.type === "copy") { + event.clipboardData = { + setData: ZeroClipboard.setData, + clearData: ZeroClipboard.clearData + }; + } + if (event.type === "aftercopy") { + event = _mapClipResultsFromFlash(event, _clipDataFormatMap); + } + if (event.target && !event.relatedTarget) { + event.relatedTarget = _getRelatedTarget(event.target); + } + return _addMouseData(event); + }; + /** + * Get a relatedTarget from the target's `data-clipboard-target` attribute + * @private + */ + var _getRelatedTarget = function(targetEl) { + var relatedTargetId = targetEl && targetEl.getAttribute && targetEl.getAttribute("data-clipboard-target"); + return relatedTargetId ? _document.getElementById(relatedTargetId) : null; + }; + /** + * Add element and position data to `MouseEvent` instances + * @private + */ + var _addMouseData = function(event) { + if (event && /^_(?:click|mouse(?:over|out|down|up|move))$/.test(event.type)) { + var srcElement = event.target; + var fromElement = event.type === "_mouseover" && event.relatedTarget ? event.relatedTarget : undefined; + var toElement = event.type === "_mouseout" && event.relatedTarget ? event.relatedTarget : undefined; + var pos = _getElementPosition(srcElement); + var screenLeft = _window.screenLeft || _window.screenX || 0; + var screenTop = _window.screenTop || _window.screenY || 0; + var scrollLeft = _document.body.scrollLeft + _document.documentElement.scrollLeft; + var scrollTop = _document.body.scrollTop + _document.documentElement.scrollTop; + var pageX = pos.left + (typeof event._stageX === "number" ? event._stageX : 0); + var pageY = pos.top + (typeof event._stageY === "number" ? event._stageY : 0); + var clientX = pageX - scrollLeft; + var clientY = pageY - scrollTop; + var screenX = screenLeft + clientX; + var screenY = screenTop + clientY; + var moveX = typeof event.movementX === "number" ? event.movementX : 0; + var moveY = typeof event.movementY === "number" ? event.movementY : 0; + delete event._stageX; + delete event._stageY; + _extend(event, { + srcElement: srcElement, + fromElement: fromElement, + toElement: toElement, + screenX: screenX, + screenY: screenY, + pageX: pageX, + pageY: pageY, + clientX: clientX, + clientY: clientY, + x: clientX, + y: clientY, + movementX: moveX, + movementY: moveY, + offsetX: 0, + offsetY: 0, + layerX: 0, + layerY: 0 + }); + } + return event; + }; + /** + * Determine if an event's registered handlers should be execute synchronously or asynchronously. + * + * @returns {boolean} + * @private + */ + var _shouldPerformAsync = function(event) { + var eventType = event && typeof event.type === "string" && event.type || ""; + return !/^(?:(?:before)?copy|destroy)$/.test(eventType); + }; + /** + * Control if a callback should be executed asynchronously or not. + * + * @returns `undefined` + * @private + */ + var _dispatchCallback = function(func, context, args, async) { + if (async) { + _setTimeout(function() { + func.apply(context, args); + }, 0); + } else { + func.apply(context, args); + } + }; + /** + * Handle the actual dispatching of events to client instances. + * + * @returns `undefined` + * @private + */ + var _dispatchCallbacks = function(event) { + if (!(typeof event === "object" && event && event.type)) { + return; + } + var async = _shouldPerformAsync(event); + var wildcardTypeHandlers = _handlers["*"] || []; + var specificTypeHandlers = _handlers[event.type] || []; + var handlers = wildcardTypeHandlers.concat(specificTypeHandlers); + if (handlers && handlers.length) { + var i, len, func, context, eventCopy, originalContext = this; + for (i = 0, len = handlers.length; i < len; i++) { + func = handlers[i]; + context = originalContext; + if (typeof func === "string" && typeof _window[func] === "function") { + func = _window[func]; + } + if (typeof func === "object" && func && typeof func.handleEvent === "function") { + context = func; + func = func.handleEvent; + } + if (typeof func === "function") { + eventCopy = _extend({}, event); + _dispatchCallback(func, context, [ eventCopy ], async); + } + } + } + return this; + }; + /** + * Check an `error` event's `name` property to see if Flash has + * already loaded, which rules out possible `iframe` sandboxing. + * @private + */ + var _getSandboxStatusFromErrorEvent = function(event) { + var isSandboxed = null; + if (_pageIsFramed === false || event && event.type === "error" && event.name && _errorsThatOnlyOccurAfterFlashLoads.indexOf(event.name) !== -1) { + isSandboxed = false; + } + return isSandboxed; + }; + /** + * Preprocess any special behaviors, reactions, or state changes after receiving this event. + * Executes only once per event emitted, NOT once per client. + * @private + */ + var _preprocessEvent = function(event) { + var element = event.target || _currentElement || null; + var sourceIsSwf = event._source === "swf"; + delete event._source; + switch (event.type) { + case "error": + var isSandboxed = event.name === "flash-sandboxed" || _getSandboxStatusFromErrorEvent(event); + if (typeof isSandboxed === "boolean") { + _flashState.sandboxed = isSandboxed; + } + if (event.name === "browser-unsupported") { + _extend(_flashState, { + disabled: false, + outdated: false, + unavailable: false, + degraded: false, + deactivated: false, + overdue: false, + ready: false + }); + } else if (_flashStateErrorNames.indexOf(event.name) !== -1) { + _extend(_flashState, { + disabled: event.name === "flash-disabled", + outdated: event.name === "flash-outdated", + insecure: event.name === "flash-insecure", + unavailable: event.name === "flash-unavailable", + degraded: event.name === "flash-degraded", + deactivated: event.name === "flash-deactivated", + overdue: event.name === "flash-overdue", + ready: false + }); + } else if (event.name === "version-mismatch") { + _zcSwfVersion = event.swfVersion; + _extend(_flashState, { + disabled: false, + outdated: false, + insecure: false, + unavailable: false, + degraded: false, + deactivated: false, + overdue: false, + ready: false + }); + } + _clearTimeoutsAndPolling(); + break; + + case "ready": + _zcSwfVersion = event.swfVersion; + var wasDeactivated = _flashState.deactivated === true; + _extend(_flashState, { + sandboxed: false, + disabled: false, + outdated: false, + insecure: false, + unavailable: false, + degraded: false, + deactivated: false, + overdue: wasDeactivated, + ready: !wasDeactivated + }); + _clearTimeoutsAndPolling(); + break; + + case "beforecopy": + _copyTarget = element; + break; + + case "copy": + var textContent, htmlContent, targetEl = event.relatedTarget; + if (!(_clipData["text/html"] || _clipData["text/plain"]) && targetEl && (htmlContent = targetEl.value || targetEl.outerHTML || targetEl.innerHTML) && (textContent = targetEl.value || targetEl.textContent || targetEl.innerText)) { + event.clipboardData.clearData(); + event.clipboardData.setData("text/plain", textContent); + if (htmlContent !== textContent) { + event.clipboardData.setData("text/html", htmlContent); + } + } else if (!_clipData["text/plain"] && event.target && (textContent = event.target.getAttribute("data-clipboard-text"))) { + event.clipboardData.clearData(); + event.clipboardData.setData("text/plain", textContent); + } + break; + + case "aftercopy": + _queueEmitClipboardErrors(event); + ZeroClipboard.clearData(); + if (element && element !== _safeActiveElement() && element.focus) { + element.focus(); + } + break; + + case "_mouseover": + ZeroClipboard.focus(element); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + if (element && element !== event.relatedTarget && !_containedBy(event.relatedTarget, element)) { + _fireMouseEvent(_extend({}, event, { + type: "mouseenter", + bubbles: false, + cancelable: false + })); + } + _fireMouseEvent(_extend({}, event, { + type: "mouseover" + })); + } + break; + + case "_mouseout": + ZeroClipboard.blur(); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + if (element && element !== event.relatedTarget && !_containedBy(event.relatedTarget, element)) { + _fireMouseEvent(_extend({}, event, { + type: "mouseleave", + bubbles: false, + cancelable: false + })); + } + _fireMouseEvent(_extend({}, event, { + type: "mouseout" + })); + } + break; + + case "_mousedown": + _addClass(element, _globalConfig.activeClass); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + + case "_mouseup": + _removeClass(element, _globalConfig.activeClass); + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + + case "_click": + _copyTarget = null; + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + + case "_mousemove": + if (_globalConfig.bubbleEvents === true && sourceIsSwf) { + _fireMouseEvent(_extend({}, event, { + type: event.type.slice(1) + })); + } + break; + } + if (/^_(?:click|mouse(?:over|out|down|up|move))$/.test(event.type)) { + return true; + } + }; + /** + * Check an "aftercopy" event for clipboard errors and emit a corresponding "error" event. + * @private + */ + var _queueEmitClipboardErrors = function(aftercopyEvent) { + if (aftercopyEvent.errors && aftercopyEvent.errors.length > 0) { + var errorEvent = _deepCopy(aftercopyEvent); + _extend(errorEvent, { + type: "error", + name: "clipboard-error" + }); + delete errorEvent.success; + _setTimeout(function() { + ZeroClipboard.emit(errorEvent); + }, 0); + } + }; + /** + * Dispatch a synthetic MouseEvent. + * + * @returns `undefined` + * @private + */ + var _fireMouseEvent = function(event) { + if (!(event && typeof event.type === "string" && event)) { + return; + } + var e, target = event.target || null, doc = target && target.ownerDocument || _document, defaults = { + view: doc.defaultView || _window, + canBubble: true, + cancelable: true, + detail: event.type === "click" ? 1 : 0, + button: typeof event.which === "number" ? event.which - 1 : typeof event.button === "number" ? event.button : doc.createEvent ? 0 : 1 + }, args = _extend(defaults, event); + if (!target) { + return; + } + if (doc.createEvent && target.dispatchEvent) { + args = [ args.type, args.canBubble, args.cancelable, args.view, args.detail, args.screenX, args.screenY, args.clientX, args.clientY, args.ctrlKey, args.altKey, args.shiftKey, args.metaKey, args.button, args.relatedTarget ]; + e = doc.createEvent("MouseEvents"); + if (e.initMouseEvent) { + e.initMouseEvent.apply(e, args); + e._source = "js"; + target.dispatchEvent(e); + } + } + }; + /** + * Continuously poll the DOM until either: + * (a) the fallback content becomes visible, or + * (b) we receive an event from SWF (handled elsewhere) + * + * IMPORTANT: + * This is NOT a necessary check but it can result in significantly faster + * detection of bad `swfPath` configuration and/or network/server issues [in + * supported browsers] than waiting for the entire `flashLoadTimeout` duration + * to elapse before detecting that the SWF cannot be loaded. The detection + * duration can be anywhere from 10-30 times faster [in supported browsers] by + * using this approach. + * + * @returns `undefined` + * @private + */ + var _watchForSwfFallbackContent = function() { + var maxWait = _globalConfig.flashLoadTimeout; + if (typeof maxWait === "number" && maxWait >= 0) { + var pollWait = Math.min(1e3, maxWait / 10); + var fallbackContentId = _globalConfig.swfObjectId + "_fallbackContent"; + _swfFallbackCheckInterval = _setInterval(function() { + var el = _document.getElementById(fallbackContentId); + if (_isElementVisible(el)) { + _clearTimeoutsAndPolling(); + _flashState.deactivated = null; + ZeroClipboard.emit({ + type: "error", + name: "swf-not-found" + }); + } + }, pollWait); + } + }; + /** + * Create the HTML bridge element to embed the Flash object into. + * @private + */ + var _createHtmlBridge = function() { + var container = _document.createElement("div"); + container.id = _globalConfig.containerId; + container.className = _globalConfig.containerClass; + container.style.position = "absolute"; + container.style.left = "0px"; + container.style.top = "-9999px"; + container.style.width = "1px"; + container.style.height = "1px"; + container.style.zIndex = "" + _getSafeZIndex(_globalConfig.zIndex); + return container; + }; + /** + * Get the HTML element container that wraps the Flash bridge object/element. + * @private + */ + var _getHtmlBridge = function(flashBridge) { + var htmlBridge = flashBridge && flashBridge.parentNode; + while (htmlBridge && htmlBridge.nodeName === "OBJECT" && htmlBridge.parentNode) { + htmlBridge = htmlBridge.parentNode; + } + return htmlBridge || null; + }; + /** + * + * @private + */ + var _escapeXmlValue = function(val) { + if (typeof val !== "string" || !val) { + return val; + } + return val.replace(/["&'<>]/g, function(chr) { + switch (chr) { + case '"': + return """; + + case "&": + return "&"; + + case "'": + return "'"; + + case "<": + return "<"; + + case ">": + return ">"; + + default: + return chr; + } + }); + }; + /** + * Create the SWF object. + * + * @returns The SWF object reference. + * @private + */ + var _embedSwf = function() { + var len, flashBridge = _flashState.bridge, container = _getHtmlBridge(flashBridge); + if (!flashBridge) { + var allowScriptAccess = _determineScriptAccess(_window.location.host, _globalConfig); + var allowNetworking = allowScriptAccess === "never" ? "none" : "all"; + var flashvars = _vars(_extend({ + jsVersion: ZeroClipboard.version + }, _globalConfig)); + var swfUrl = _globalConfig.swfPath + _cacheBust(_globalConfig.swfPath, _globalConfig); + if (_pageIsXhtml) { + swfUrl = _escapeXmlValue(swfUrl); + } + container = _createHtmlBridge(); + var divToBeReplaced = _document.createElement("div"); + container.appendChild(divToBeReplaced); + _document.body.appendChild(container); + var tmpDiv = _document.createElement("div"); + var usingActiveX = _flashState.pluginType === "activex"; + tmpDiv.innerHTML = '" + (usingActiveX ? '' : "") + '' + '' + '' + '' + '' + '
 
' + "
"; + flashBridge = tmpDiv.firstChild; + tmpDiv = null; + _unwrap(flashBridge).ZeroClipboard = ZeroClipboard; + container.replaceChild(flashBridge, divToBeReplaced); + _watchForSwfFallbackContent(); + } + if (!flashBridge) { + flashBridge = _document[_globalConfig.swfObjectId]; + if (flashBridge && (len = flashBridge.length)) { + flashBridge = flashBridge[len - 1]; + } + if (!flashBridge && container) { + flashBridge = container.firstChild; + } + } + _flashState.bridge = flashBridge || null; + return flashBridge; + }; + /** + * Destroy the SWF object. + * @private + */ + var _unembedSwf = function() { + var flashBridge = _flashState.bridge; + if (flashBridge) { + var htmlBridge = _getHtmlBridge(flashBridge); + if (htmlBridge) { + if (_flashState.pluginType === "activex" && "readyState" in flashBridge) { + flashBridge.style.display = "none"; + (function removeSwfFromIE() { + if (flashBridge.readyState === 4) { + for (var prop in flashBridge) { + if (typeof flashBridge[prop] === "function") { + flashBridge[prop] = null; + } + } + if (flashBridge.parentNode) { + flashBridge.parentNode.removeChild(flashBridge); + } + if (htmlBridge.parentNode) { + htmlBridge.parentNode.removeChild(htmlBridge); + } + } else { + _setTimeout(removeSwfFromIE, 10); + } + })(); + } else { + if (flashBridge.parentNode) { + flashBridge.parentNode.removeChild(flashBridge); + } + if (htmlBridge.parentNode) { + htmlBridge.parentNode.removeChild(htmlBridge); + } + } + } + _clearTimeoutsAndPolling(); + _flashState.ready = null; + _flashState.bridge = null; + _flashState.deactivated = null; + _flashState.insecure = null; + _zcSwfVersion = undefined; + } + }; + /** + * Map the data format names of the "clipData" to Flash-friendly names. + * + * @returns A new transformed object. + * @private + */ + var _mapClipDataToFlash = function(clipData) { + var newClipData = {}, formatMap = {}; + if (!(typeof clipData === "object" && clipData)) { + return; + } + for (var dataFormat in clipData) { + if (dataFormat && _hasOwn.call(clipData, dataFormat) && typeof clipData[dataFormat] === "string" && clipData[dataFormat]) { + switch (dataFormat.toLowerCase()) { + case "text/plain": + case "text": + case "air:text": + case "flash:text": + newClipData.text = clipData[dataFormat]; + formatMap.text = dataFormat; + break; + + case "text/html": + case "html": + case "air:html": + case "flash:html": + newClipData.html = clipData[dataFormat]; + formatMap.html = dataFormat; + break; + + case "application/rtf": + case "text/rtf": + case "rtf": + case "richtext": + case "air:rtf": + case "flash:rtf": + newClipData.rtf = clipData[dataFormat]; + formatMap.rtf = dataFormat; + break; + + default: + break; + } + } + } + return { + data: newClipData, + formatMap: formatMap + }; + }; + /** + * Map the data format names from Flash-friendly names back to their original "clipData" names (via a format mapping). + * + * @returns A new transformed object. + * @private + */ + var _mapClipResultsFromFlash = function(clipResults, formatMap) { + if (!(typeof clipResults === "object" && clipResults && typeof formatMap === "object" && formatMap)) { + return clipResults; + } + var newResults = {}; + for (var prop in clipResults) { + if (_hasOwn.call(clipResults, prop)) { + if (prop === "errors") { + newResults[prop] = clipResults[prop] ? clipResults[prop].slice() : []; + for (var i = 0, len = newResults[prop].length; i < len; i++) { + newResults[prop][i].format = formatMap[newResults[prop][i].format]; + } + } else if (prop !== "success" && prop !== "data") { + newResults[prop] = clipResults[prop]; + } else { + newResults[prop] = {}; + var tmpHash = clipResults[prop]; + for (var dataFormat in tmpHash) { + if (dataFormat && _hasOwn.call(tmpHash, dataFormat) && _hasOwn.call(formatMap, dataFormat)) { + newResults[prop][formatMap[dataFormat]] = tmpHash[dataFormat]; + } + } + } + } + } + return newResults; + }; + /** + * Will look at a path, and will create a "?noCache={time}" or "&noCache={time}" + * query param string to return. Does NOT append that string to the original path. + * This is useful because ExternalInterface often breaks when a Flash SWF is cached. + * + * @returns The `noCache` query param with necessary "?"/"&" prefix. + * @private + */ + var _cacheBust = function(path, options) { + var cacheBust = options == null || options && options.cacheBust === true; + if (cacheBust) { + return (path.indexOf("?") === -1 ? "?" : "&") + "noCache=" + _now(); + } else { + return ""; + } + }; + /** + * Creates a query string for the FlashVars param. + * Does NOT include the cache-busting query param. + * + * @returns FlashVars query string + * @private + */ + var _vars = function(options) { + var i, len, domain, domains, str = "", trustedOriginsExpanded = []; + if (options.trustedDomains) { + if (typeof options.trustedDomains === "string") { + domains = [ options.trustedDomains ]; + } else if (typeof options.trustedDomains === "object" && "length" in options.trustedDomains) { + domains = options.trustedDomains; + } + } + if (domains && domains.length) { + for (i = 0, len = domains.length; i < len; i++) { + if (_hasOwn.call(domains, i) && domains[i] && typeof domains[i] === "string") { + domain = _extractDomain(domains[i]); + if (!domain) { + continue; + } + if (domain === "*") { + trustedOriginsExpanded.length = 0; + trustedOriginsExpanded.push(domain); + break; + } + trustedOriginsExpanded.push.apply(trustedOriginsExpanded, [ domain, "//" + domain, _window.location.protocol + "//" + domain ]); + } + } + } + if (trustedOriginsExpanded.length) { + str += "trustedOrigins=" + _encodeURIComponent(trustedOriginsExpanded.join(",")); + } + if (options.forceEnhancedClipboard === true) { + str += (str ? "&" : "") + "forceEnhancedClipboard=true"; + } + if (typeof options.swfObjectId === "string" && options.swfObjectId) { + str += (str ? "&" : "") + "swfObjectId=" + _encodeURIComponent(options.swfObjectId); + } + if (typeof options.jsVersion === "string" && options.jsVersion) { + str += (str ? "&" : "") + "jsVersion=" + _encodeURIComponent(options.jsVersion); + } + return str; + }; + /** + * Extract the domain (e.g. "github.com") from an origin (e.g. "https://github.com") or + * URL (e.g. "https://github.com/zeroclipboard/zeroclipboard/"). + * + * @returns the domain + * @private + */ + var _extractDomain = function(originOrUrl) { + if (originOrUrl == null || originOrUrl === "") { + return null; + } + originOrUrl = originOrUrl.replace(/^\s+|\s+$/g, ""); + if (originOrUrl === "") { + return null; + } + var protocolIndex = originOrUrl.indexOf("//"); + originOrUrl = protocolIndex === -1 ? originOrUrl : originOrUrl.slice(protocolIndex + 2); + var pathIndex = originOrUrl.indexOf("/"); + originOrUrl = pathIndex === -1 ? originOrUrl : protocolIndex === -1 || pathIndex === 0 ? null : originOrUrl.slice(0, pathIndex); + if (originOrUrl && originOrUrl.slice(-4).toLowerCase() === ".swf") { + return null; + } + return originOrUrl || null; + }; + /** + * Set `allowScriptAccess` based on `trustedDomains` and `window.location.host` vs. `swfPath`. + * + * @returns The appropriate script access level. + * @private + */ + var _determineScriptAccess = function() { + var _extractAllDomains = function(origins) { + var i, len, tmp, resultsArray = []; + if (typeof origins === "string") { + origins = [ origins ]; + } + if (!(typeof origins === "object" && origins && typeof origins.length === "number")) { + return resultsArray; + } + for (i = 0, len = origins.length; i < len; i++) { + if (_hasOwn.call(origins, i) && (tmp = _extractDomain(origins[i]))) { + if (tmp === "*") { + resultsArray.length = 0; + resultsArray.push("*"); + break; + } + if (resultsArray.indexOf(tmp) === -1) { + resultsArray.push(tmp); + } + } + } + return resultsArray; + }; + return function(currentDomain, configOptions) { + var swfDomain = _extractDomain(configOptions.swfPath); + if (swfDomain === null) { + swfDomain = currentDomain; + } + var trustedDomains = _extractAllDomains(configOptions.trustedDomains); + var len = trustedDomains.length; + if (len > 0) { + if (len === 1 && trustedDomains[0] === "*") { + return "always"; + } + if (trustedDomains.indexOf(currentDomain) !== -1) { + if (len === 1 && currentDomain === swfDomain) { + return "sameDomain"; + } + return "always"; + } + } + return "never"; + }; + }(); + /** + * Get the currently active/focused DOM element. + * + * @returns the currently active/focused element, or `null` + * @private + */ + var _safeActiveElement = function() { + try { + return _document.activeElement; + } catch (err) { + return null; + } + }; + /** + * Add a class to an element, if it doesn't already have it. + * + * @returns The element, with its new class added. + * @private + */ + var _addClass = function(element, value) { + var c, cl, className, classNames = []; + if (typeof value === "string" && value) { + classNames = value.split(/\s+/); + } + if (element && element.nodeType === 1 && classNames.length > 0) { + className = (" " + (element.className || "") + " ").replace(/[\t\r\n\f]/g, " "); + for (c = 0, cl = classNames.length; c < cl; c++) { + if (className.indexOf(" " + classNames[c] + " ") === -1) { + className += classNames[c] + " "; + } + } + className = className.replace(/^\s+|\s+$/g, ""); + if (className !== element.className) { + element.className = className; + } + } + return element; + }; + /** + * Remove a class from an element, if it has it. + * + * @returns The element, with its class removed. + * @private + */ + var _removeClass = function(element, value) { + var c, cl, className, classNames = []; + if (typeof value === "string" && value) { + classNames = value.split(/\s+/); + } + if (element && element.nodeType === 1 && classNames.length > 0) { + if (element.className) { + className = (" " + element.className + " ").replace(/[\t\r\n\f]/g, " "); + for (c = 0, cl = classNames.length; c < cl; c++) { + className = className.replace(" " + classNames[c] + " ", " "); + } + className = className.replace(/^\s+|\s+$/g, ""); + if (className !== element.className) { + element.className = className; + } + } + } + return element; + }; + /** + * Attempt to interpret the element's CSS styling. If `prop` is `"cursor"`, + * then we assume that it should be a hand ("pointer") cursor if the element + * is an anchor element ("a" tag). + * + * @returns The computed style property. + * @private + */ + var _getStyle = function(el, prop) { + var value = _getComputedStyle(el, null).getPropertyValue(prop); + if (prop === "cursor") { + if (!value || value === "auto") { + if (el.nodeName === "A") { + return "pointer"; + } + } + } + return value; + }; + /** + * Get the absolutely positioned coordinates of a DOM element. + * + * @returns Object containing the element's position, width, and height. + * @private + */ + var _getElementPosition = function(el) { + var pos = { + left: 0, + top: 0, + width: 0, + height: 0 + }; + if (el.getBoundingClientRect) { + var elRect = el.getBoundingClientRect(); + var pageXOffset = _window.pageXOffset; + var pageYOffset = _window.pageYOffset; + var leftBorderWidth = _document.documentElement.clientLeft || 0; + var topBorderWidth = _document.documentElement.clientTop || 0; + var leftBodyOffset = 0; + var topBodyOffset = 0; + if (_getStyle(_document.body, "position") === "relative") { + var bodyRect = _document.body.getBoundingClientRect(); + var htmlRect = _document.documentElement.getBoundingClientRect(); + leftBodyOffset = bodyRect.left - htmlRect.left || 0; + topBodyOffset = bodyRect.top - htmlRect.top || 0; + } + pos.left = elRect.left + pageXOffset - leftBorderWidth - leftBodyOffset; + pos.top = elRect.top + pageYOffset - topBorderWidth - topBodyOffset; + pos.width = "width" in elRect ? elRect.width : elRect.right - elRect.left; + pos.height = "height" in elRect ? elRect.height : elRect.bottom - elRect.top; + } + return pos; + }; + /** + * Determine is an element is visible somewhere within the document (page). + * + * @returns Boolean + * @private + */ + var _isElementVisible = function(el) { + if (!el) { + return false; + } + var styles = _getComputedStyle(el, null); + if (!styles) { + return false; + } + var hasCssHeight = _parseFloat(styles.height) > 0; + var hasCssWidth = _parseFloat(styles.width) > 0; + var hasCssTop = _parseFloat(styles.top) >= 0; + var hasCssLeft = _parseFloat(styles.left) >= 0; + var cssKnows = hasCssHeight && hasCssWidth && hasCssTop && hasCssLeft; + var rect = cssKnows ? null : _getElementPosition(el); + var isVisible = styles.display !== "none" && styles.visibility !== "collapse" && (cssKnows || !!rect && (hasCssHeight || rect.height > 0) && (hasCssWidth || rect.width > 0) && (hasCssTop || rect.top >= 0) && (hasCssLeft || rect.left >= 0)); + return isVisible; + }; + /** + * Clear all existing timeouts and interval polling delegates. + * + * @returns `undefined` + * @private + */ + var _clearTimeoutsAndPolling = function() { + _clearTimeout(_flashCheckTimeout); + _flashCheckTimeout = 0; + _clearInterval(_swfFallbackCheckInterval); + _swfFallbackCheckInterval = 0; + }; + /** + * Reposition the Flash object to cover the currently activated element. + * + * @returns `undefined` + * @private + */ + var _reposition = function() { + var htmlBridge; + if (_currentElement && (htmlBridge = _getHtmlBridge(_flashState.bridge))) { + var pos = _getElementPosition(_currentElement); + _extend(htmlBridge.style, { + width: pos.width + "px", + height: pos.height + "px", + top: pos.top + "px", + left: pos.left + "px", + zIndex: "" + _getSafeZIndex(_globalConfig.zIndex) + }); + } + }; + /** + * Sends a signal to the Flash object to display the hand cursor if `true`. + * + * @returns `undefined` + * @private + */ + var _setHandCursor = function(enabled) { + if (_flashState.ready === true) { + if (_flashState.bridge && typeof _flashState.bridge.setHandCursor === "function") { + _flashState.bridge.setHandCursor(enabled); + } else { + _flashState.ready = false; + } + } + }; + /** + * Get a safe value for `zIndex` + * + * @returns an integer, or "auto" + * @private + */ + var _getSafeZIndex = function(val) { + if (/^(?:auto|inherit)$/.test(val)) { + return val; + } + var zIndex; + if (typeof val === "number" && !_isNaN(val)) { + zIndex = val; + } else if (typeof val === "string") { + zIndex = _getSafeZIndex(_parseInt(val, 10)); + } + return typeof zIndex === "number" ? zIndex : "auto"; + }; + /** + * Ensure OS-compliant line endings, i.e. "\r\n" on Windows, "\n" elsewhere + * + * @returns string + * @private + */ + var _fixLineEndings = function(content) { + var replaceRegex = /(\r\n|\r|\n)/g; + if (typeof content === "string" && _globalConfig.fixLineEndings === true) { + if (_isWindows()) { + if (/((^|[^\r])\n|\r([^\n]|$))/.test(content)) { + content = content.replace(replaceRegex, "\r\n"); + } + } else if (/\r/.test(content)) { + content = content.replace(replaceRegex, "\n"); + } + } + return content; + }; + /** + * Attempt to detect if ZeroClipboard is executing inside of a sandboxed iframe. + * If it is, Flash Player cannot be used, so ZeroClipboard is dead in the water. + * + * @see {@link http://lists.w3.org/Archives/Public/public-whatwg-archive/2014Dec/0002.html} + * @see {@link https://github.com/zeroclipboard/zeroclipboard/issues/511} + * @see {@link http://zeroclipboard.org/test-iframes.html} + * + * @returns `true` (is sandboxed), `false` (is not sandboxed), or `null` (uncertain) + * @private + */ + var _detectSandbox = function(doNotReassessFlashSupport) { + var effectiveScriptOrigin, frame, frameError, previousState = _flashState.sandboxed, isSandboxed = null; + doNotReassessFlashSupport = doNotReassessFlashSupport === true; + if (_pageIsFramed === false) { + isSandboxed = false; + } else { + try { + frame = window.frameElement || null; + } catch (e) { + frameError = { + name: e.name, + message: e.message + }; + } + if (frame && frame.nodeType === 1 && frame.nodeName === "IFRAME") { + try { + isSandboxed = frame.hasAttribute("sandbox"); + } catch (e) { + isSandboxed = null; + } + } else { + try { + effectiveScriptOrigin = document.domain || null; + } catch (e) { + effectiveScriptOrigin = null; + } + if (effectiveScriptOrigin === null || frameError && frameError.name === "SecurityError" && /(^|[\s\(\[@])sandbox(es|ed|ing|[\s\.,!\)\]@]|$)/.test(frameError.message.toLowerCase())) { + isSandboxed = true; + } + } + } + _flashState.sandboxed = isSandboxed; + if (previousState !== isSandboxed && !doNotReassessFlashSupport) { + _detectFlashSupport(_ActiveXObject); + } + return isSandboxed; + }; + /** + * Detect the Flash Player status, version, and plugin type. + * + * @see {@link https://code.google.com/p/doctype-mirror/wiki/ArticleDetectFlash#The_code} + * @see {@link http://stackoverflow.com/questions/12866060/detecting-pepper-ppapi-flash-with-javascript} + * + * @returns `undefined` + * @private + */ + var _detectFlashSupport = function(ActiveXObject) { + var plugin, ax, mimeType, hasFlash = false, isActiveX = false, isPPAPI = false, flashVersion = ""; + /** + * Derived from Apple's suggested sniffer. + * @param {String} desc e.g. "Shockwave Flash 7.0 r61" + * @returns {String} "7.0.61" + * @private + */ + function parseFlashVersion(desc) { + var matches = desc.match(/[\d]+/g); + matches.length = 3; + return matches.join("."); + } + function isPepperFlash(flashPlayerFileName) { + return !!flashPlayerFileName && (flashPlayerFileName = flashPlayerFileName.toLowerCase()) && (/^(pepflashplayer\.dll|libpepflashplayer\.so|pepperflashplayer\.plugin)$/.test(flashPlayerFileName) || flashPlayerFileName.slice(-13) === "chrome.plugin"); + } + function inspectPlugin(plugin) { + if (plugin) { + hasFlash = true; + if (plugin.version) { + flashVersion = parseFlashVersion(plugin.version); + } + if (!flashVersion && plugin.description) { + flashVersion = parseFlashVersion(plugin.description); + } + if (plugin.filename) { + isPPAPI = isPepperFlash(plugin.filename); + } + } + } + if (_navigator.plugins && _navigator.plugins.length) { + plugin = _navigator.plugins["Shockwave Flash"]; + inspectPlugin(plugin); + if (_navigator.plugins["Shockwave Flash 2.0"]) { + hasFlash = true; + flashVersion = "2.0.0.11"; + } + } else if (_navigator.mimeTypes && _navigator.mimeTypes.length) { + mimeType = _navigator.mimeTypes["application/x-shockwave-flash"]; + plugin = mimeType && mimeType.enabledPlugin; + inspectPlugin(plugin); + } else if (typeof ActiveXObject !== "undefined") { + isActiveX = true; + try { + ax = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + hasFlash = true; + flashVersion = parseFlashVersion(ax.GetVariable("$version")); + } catch (e1) { + try { + ax = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + hasFlash = true; + flashVersion = "6.0.21"; + } catch (e2) { + try { + ax = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + hasFlash = true; + flashVersion = parseFlashVersion(ax.GetVariable("$version")); + } catch (e3) { + isActiveX = false; + } + } + } + } + _flashState.disabled = hasFlash !== true; + _flashState.outdated = flashVersion && _parseFloat(flashVersion) < _parseFloat(_minimumFlashVersion); + _flashState.version = flashVersion || "0.0.0"; + _flashState.pluginType = isPPAPI ? "pepper" : isActiveX ? "activex" : hasFlash ? "netscape" : "unknown"; + }; + /** + * Invoke the Flash detection algorithms immediately upon inclusion so we're not waiting later. + */ + _detectFlashSupport(_ActiveXObject); + /** + * Always assess the `sandboxed` state of the page at important Flash-related moments. + */ + _detectSandbox(true); + /** + * A shell constructor for `ZeroClipboard` client instances. + * + * @constructor + */ + var ZeroClipboard = function() { + if (!(this instanceof ZeroClipboard)) { + return new ZeroClipboard(); + } + if (typeof ZeroClipboard._createClient === "function") { + ZeroClipboard._createClient.apply(this, _args(arguments)); + } + }; + /** + * The ZeroClipboard library's version number. + * + * @static + * @readonly + * @property {string} + */ + ZeroClipboard.version = "2.4.0-beta.1"; + /** + * Update or get a copy of the ZeroClipboard global configuration. + * Returns a copy of the current/updated configuration. + * + * @returns Object + * @static + */ + ZeroClipboard.config = function() { + return _config.apply(this, _args(arguments)); + }; + /** + * Diagnostic method that describes the state of the browser, Flash Player, and ZeroClipboard. + * + * @returns Object + * @static + */ + ZeroClipboard.state = function() { + return _state.apply(this, _args(arguments)); + }; + /** + * Check if Flash is unusable for any reason: disabled, outdated, deactivated, etc. + * + * @returns Boolean + * @static + */ + ZeroClipboard.isFlashUnusable = function() { + return _isFlashUnusable.apply(this, _args(arguments)); + }; + /** + * Register an event listener. + * + * @returns `ZeroClipboard` + * @static + */ + ZeroClipboard.on = function() { + return _on.apply(this, _args(arguments)); + }; + /** + * Unregister an event listener. + * If no `listener` function/object is provided, it will unregister all listeners for the provided `eventType`. + * If no `eventType` is provided, it will unregister all listeners for every event type. + * + * @returns `ZeroClipboard` + * @static + */ + ZeroClipboard.off = function() { + return _off.apply(this, _args(arguments)); + }; + /** + * Retrieve event listeners for an `eventType`. + * If no `eventType` is provided, it will retrieve all listeners for every event type. + * + * @returns array of listeners for the `eventType`; if no `eventType`, then a map/hash object of listeners for all event types; or `null` + */ + ZeroClipboard.handlers = function() { + return _listeners.apply(this, _args(arguments)); + }; + /** + * Event emission receiver from the Flash object, forwarding to any registered JavaScript event listeners. + * + * @returns For the "copy" event, returns the Flash-friendly "clipData" object; otherwise `undefined`. + * @static + */ + ZeroClipboard.emit = function() { + return _emit.apply(this, _args(arguments)); + }; + /** + * Create and embed the Flash object. + * + * @returns The Flash object + * @static + */ + ZeroClipboard.create = function() { + return _create.apply(this, _args(arguments)); + }; + /** + * Self-destruct and clean up everything, including the embedded Flash object. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.destroy = function() { + return _destroy.apply(this, _args(arguments)); + }; + /** + * Set the pending data for clipboard injection. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.setData = function() { + return _setData.apply(this, _args(arguments)); + }; + /** + * Clear the pending data for clipboard injection. + * If no `format` is provided, all pending data formats will be cleared. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.clearData = function() { + return _clearData.apply(this, _args(arguments)); + }; + /** + * Get a copy of the pending data for clipboard injection. + * If no `format` is provided, a copy of ALL pending data formats will be returned. + * + * @returns `String` or `Object` + * @static + */ + ZeroClipboard.getData = function() { + return _getData.apply(this, _args(arguments)); + }; + /** + * Sets the current HTML object that the Flash object should overlay. This will put the global + * Flash object on top of the current element; depending on the setup, this may also set the + * pending clipboard text data as well as the Flash object's wrapping element's title attribute + * based on the underlying HTML element and ZeroClipboard configuration. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.focus = ZeroClipboard.activate = function() { + return _focus.apply(this, _args(arguments)); + }; + /** + * Un-overlays the Flash object. This will put the global Flash object off-screen; depending on + * the setup, this may also unset the Flash object's wrapping element's title attribute based on + * the underlying HTML element and ZeroClipboard configuration. + * + * @returns `undefined` + * @static + */ + ZeroClipboard.blur = ZeroClipboard.deactivate = function() { + return _blur.apply(this, _args(arguments)); + }; + /** + * Returns the currently focused/"activated" HTML element that the Flash object is wrapping. + * + * @returns `HTMLElement` or `null` + * @static + */ + ZeroClipboard.activeElement = function() { + return _activeElement.apply(this, _args(arguments)); + }; + /** + * Keep track of the ZeroClipboard client instance counter. + */ + var _clientIdCounter = 0; + /** + * Keep track of the state of the client instances. + * + * Entry structure: + * _clientMeta[client.id] = { + * instance: client, + * elements: [], + * handlers: {}, + * coreWildcardHandler: function(event) { return client.emit(event); } + * }; + */ + var _clientMeta = {}; + /** + * Keep track of the ZeroClipboard clipped elements counter. + */ + var _elementIdCounter = 0; + /** + * Keep track of the state of the clipped element relationships to clients. + * + * Entry structure: + * _elementMeta[element.zcClippingId] = [client1.id, client2.id]; + */ + var _elementMeta = {}; + /** + * Keep track of the state of the mouse event handlers for clipped elements. + * + * Entry structure: + * _mouseHandlers[element.zcClippingId] = { + * mouseover: function(event) {}, + * mouseout: function(event) {}, + * mouseenter: function(event) {}, + * mouseleave: function(event) {}, + * mousemove: function(event) {} + * }; + */ + var _mouseHandlers = {}; + /** + * Extending the ZeroClipboard configuration defaults for the Client module. + */ + _extend(_globalConfig, { + autoActivate: true + }); + /** + * The real constructor for `ZeroClipboard` client instances. + * @private + */ + var _clientConstructor = function(elements) { + var meta, client = this; + client.id = "" + _clientIdCounter++; + meta = { + instance: client, + elements: [], + handlers: {}, + coreWildcardHandler: function(event) { + return client.emit(event); + } + }; + _clientMeta[client.id] = meta; + if (elements) { + client.clip(elements); + } + ZeroClipboard.on("*", meta.coreWildcardHandler); + ZeroClipboard.on("destroy", function() { + client.destroy(); + }); + ZeroClipboard.create(); + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.on`. + * @private + */ + var _clientOn = function(eventType, listener) { + var i, len, events, added = {}, client = this, meta = _clientMeta[client.id], handlers = meta && meta.handlers; + if (!meta) { + throw new Error("Attempted to add new listener(s) to a destroyed ZeroClipboard client instance"); + } + if (typeof eventType === "string" && eventType) { + events = eventType.toLowerCase().split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + client.on(key, listener); + } + }); + } + if (events && events.length && listener) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].replace(/^on/, ""); + added[eventType] = true; + if (!handlers[eventType]) { + handlers[eventType] = []; + } + handlers[eventType].push(listener); + } + if (added.ready && _flashState.ready) { + this.emit({ + type: "ready", + client: this + }); + } + if (added.error) { + for (i = 0, len = _flashStateErrorNames.length; i < len; i++) { + if (_flashState[_flashStateErrorNames[i].replace(/^flash-/, "")]) { + this.emit({ + type: "error", + name: _flashStateErrorNames[i], + client: this + }); + break; + } + } + if (_zcSwfVersion !== undefined && ZeroClipboard.version !== _zcSwfVersion) { + this.emit({ + type: "error", + name: "version-mismatch", + jsVersion: ZeroClipboard.version, + swfVersion: _zcSwfVersion + }); + } + } + } + return client; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.off`. + * @private + */ + var _clientOff = function(eventType, listener) { + var i, len, foundIndex, events, perEventHandlers, client = this, meta = _clientMeta[client.id], handlers = meta && meta.handlers; + if (!handlers) { + return client; + } + if (arguments.length === 0) { + events = _keys(handlers); + } else if (typeof eventType === "string" && eventType) { + events = eventType.split(/\s+/); + } else if (typeof eventType === "object" && eventType && !("length" in eventType) && typeof listener === "undefined") { + _keys(eventType).forEach(function(key) { + var listener = eventType[key]; + if (typeof listener === "function") { + client.off(key, listener); + } + }); + } + if (events && events.length) { + for (i = 0, len = events.length; i < len; i++) { + eventType = events[i].toLowerCase().replace(/^on/, ""); + perEventHandlers = handlers[eventType]; + if (perEventHandlers && perEventHandlers.length) { + if (listener) { + foundIndex = perEventHandlers.indexOf(listener); + while (foundIndex !== -1) { + perEventHandlers.splice(foundIndex, 1); + foundIndex = perEventHandlers.indexOf(listener, foundIndex); + } + } else { + perEventHandlers.length = 0; + } + } + } + } + return client; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.handlers`. + * @private + */ + var _clientListeners = function(eventType) { + var copy = null, handlers = _clientMeta[this.id] && _clientMeta[this.id].handlers; + if (handlers) { + if (typeof eventType === "string" && eventType) { + copy = handlers[eventType] ? handlers[eventType].slice(0) : []; + } else { + copy = _deepCopy(handlers); + } + } + return copy; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.emit`. + * @private + */ + var _clientEmit = function(event) { + var eventCopy, client = this; + if (_clientShouldEmit.call(client, event)) { + if (typeof event === "object" && event && typeof event.type === "string" && event.type) { + event = _extend({}, event); + } + eventCopy = _extend({}, _createEvent(event), { + client: client + }); + _clientDispatchCallbacks.call(client, eventCopy); + } + return client; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.clip`. + * @private + */ + var _clientClip = function(elements) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to clip element(s) to a destroyed ZeroClipboard client instance"); + } + elements = _prepClip(elements); + for (var i = 0; i < elements.length; i++) { + if (_hasOwn.call(elements, i) && elements[i] && elements[i].nodeType === 1) { + if (!elements[i].zcClippingId) { + elements[i].zcClippingId = "zcClippingId_" + _elementIdCounter++; + _elementMeta[elements[i].zcClippingId] = [ this.id ]; + if (_globalConfig.autoActivate === true) { + _addMouseHandlers(elements[i]); + } + } else if (_elementMeta[elements[i].zcClippingId].indexOf(this.id) === -1) { + _elementMeta[elements[i].zcClippingId].push(this.id); + } + var clippedElements = _clientMeta[this.id] && _clientMeta[this.id].elements; + if (clippedElements.indexOf(elements[i]) === -1) { + clippedElements.push(elements[i]); + } + } + } + return this; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.unclip`. + * @private + */ + var _clientUnclip = function(elements) { + var meta = _clientMeta[this.id]; + if (!meta) { + return this; + } + var clippedElements = meta.elements; + var arrayIndex; + if (typeof elements === "undefined") { + elements = clippedElements.slice(0); + } else { + elements = _prepClip(elements); + } + for (var i = elements.length; i--; ) { + if (_hasOwn.call(elements, i) && elements[i] && elements[i].nodeType === 1) { + arrayIndex = 0; + while ((arrayIndex = clippedElements.indexOf(elements[i], arrayIndex)) !== -1) { + clippedElements.splice(arrayIndex, 1); + } + var clientIds = _elementMeta[elements[i].zcClippingId]; + if (clientIds) { + arrayIndex = 0; + while ((arrayIndex = clientIds.indexOf(this.id, arrayIndex)) !== -1) { + clientIds.splice(arrayIndex, 1); + } + if (clientIds.length === 0) { + if (_globalConfig.autoActivate === true) { + _removeMouseHandlers(elements[i]); + } + delete elements[i].zcClippingId; + } + } + } + } + return this; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.elements`. + * @private + */ + var _clientElements = function() { + var meta = _clientMeta[this.id]; + return meta && meta.elements ? meta.elements.slice(0) : []; + }; + /** + * The underlying implementation of `ZeroClipboard.Client.prototype.destroy`. + * @private + */ + var _clientDestroy = function() { + var meta = _clientMeta[this.id]; + if (!meta) { + return; + } + this.unclip(); + this.off(); + ZeroClipboard.off("*", meta.coreWildcardHandler); + delete _clientMeta[this.id]; + }; + /** + * Inspect an Event to see if the Client (`this`) should honor it for emission. + * @private + */ + var _clientShouldEmit = function(event) { + if (!(event && event.type)) { + return false; + } + if (event.client && event.client !== this) { + return false; + } + var meta = _clientMeta[this.id]; + var clippedEls = meta && meta.elements; + var hasClippedEls = !!clippedEls && clippedEls.length > 0; + var goodTarget = !event.target || hasClippedEls && clippedEls.indexOf(event.target) !== -1; + var goodRelTarget = event.relatedTarget && hasClippedEls && clippedEls.indexOf(event.relatedTarget) !== -1; + var goodClient = event.client && event.client === this; + if (!meta || !(goodTarget || goodRelTarget || goodClient)) { + return false; + } + return true; + }; + /** + * Handle the actual dispatching of events to a client instance. + * + * @returns `undefined` + * @private + */ + var _clientDispatchCallbacks = function(event) { + var meta = _clientMeta[this.id]; + if (!(typeof event === "object" && event && event.type && meta)) { + return; + } + var async = _shouldPerformAsync(event); + var wildcardTypeHandlers = meta && meta.handlers["*"] || []; + var specificTypeHandlers = meta && meta.handlers[event.type] || []; + var handlers = wildcardTypeHandlers.concat(specificTypeHandlers); + if (handlers && handlers.length) { + var i, len, func, context, eventCopy, originalContext = this; + for (i = 0, len = handlers.length; i < len; i++) { + func = handlers[i]; + context = originalContext; + if (typeof func === "string" && typeof _window[func] === "function") { + func = _window[func]; + } + if (typeof func === "object" && func && typeof func.handleEvent === "function") { + context = func; + func = func.handleEvent; + } + if (typeof func === "function") { + eventCopy = _extend({}, event); + _dispatchCallback(func, context, [ eventCopy ], async); + } + } + } + }; + /** + * Prepares the elements for clipping/unclipping. + * + * @returns An Array of elements. + * @private + */ + var _prepClip = function(elements) { + if (typeof elements === "string") { + elements = []; + } + return typeof elements.length !== "number" ? [ elements ] : elements; + }; + /** + * Add a `mouseover` handler function for a clipped element. + * + * @returns `undefined` + * @private + */ + var _addMouseHandlers = function(element) { + if (!(element && element.nodeType === 1)) { + return; + } + var _suppressMouseEvents = function(event) { + if (!(event || (event = _window.event))) { + return; + } + if (event._source !== "js") { + event.stopImmediatePropagation(); + event.preventDefault(); + } + delete event._source; + }; + var _elementMouseOver = function(event) { + if (!(event || (event = _window.event))) { + return; + } + _suppressMouseEvents(event); + ZeroClipboard.focus(element); + }; + element.addEventListener("mouseover", _elementMouseOver, false); + element.addEventListener("mouseout", _suppressMouseEvents, false); + element.addEventListener("mouseenter", _suppressMouseEvents, false); + element.addEventListener("mouseleave", _suppressMouseEvents, false); + element.addEventListener("mousemove", _suppressMouseEvents, false); + _mouseHandlers[element.zcClippingId] = { + mouseover: _elementMouseOver, + mouseout: _suppressMouseEvents, + mouseenter: _suppressMouseEvents, + mouseleave: _suppressMouseEvents, + mousemove: _suppressMouseEvents + }; + }; + /** + * Remove a `mouseover` handler function for a clipped element. + * + * @returns `undefined` + * @private + */ + var _removeMouseHandlers = function(element) { + if (!(element && element.nodeType === 1)) { + return; + } + var mouseHandlers = _mouseHandlers[element.zcClippingId]; + if (!(typeof mouseHandlers === "object" && mouseHandlers)) { + return; + } + var key, val, mouseEvents = [ "move", "leave", "enter", "out", "over" ]; + for (var i = 0, len = mouseEvents.length; i < len; i++) { + key = "mouse" + mouseEvents[i]; + val = mouseHandlers[key]; + if (typeof val === "function") { + element.removeEventListener(key, val, false); + } + } + delete _mouseHandlers[element.zcClippingId]; + }; + /** + * Creates a new ZeroClipboard client instance. + * Optionally, auto-`clip` an element or collection of elements. + * + * @constructor + */ + ZeroClipboard._createClient = function() { + _clientConstructor.apply(this, _args(arguments)); + }; + /** + * Register an event listener to the client. + * + * @returns `this` + */ + ZeroClipboard.prototype.on = function() { + return _clientOn.apply(this, _args(arguments)); + }; + /** + * Unregister an event handler from the client. + * If no `listener` function/object is provided, it will unregister all handlers for the provided `eventType`. + * If no `eventType` is provided, it will unregister all handlers for every event type. + * + * @returns `this` + */ + ZeroClipboard.prototype.off = function() { + return _clientOff.apply(this, _args(arguments)); + }; + /** + * Retrieve event listeners for an `eventType` from the client. + * If no `eventType` is provided, it will retrieve all listeners for every event type. + * + * @returns array of listeners for the `eventType`; if no `eventType`, then a map/hash object of listeners for all event types; or `null` + */ + ZeroClipboard.prototype.handlers = function() { + return _clientListeners.apply(this, _args(arguments)); + }; + /** + * Event emission receiver from the Flash object for this client's registered JavaScript event listeners. + * + * @returns For the "copy" event, returns the Flash-friendly "clipData" object; otherwise `undefined`. + */ + ZeroClipboard.prototype.emit = function() { + return _clientEmit.apply(this, _args(arguments)); + }; + /** + * Register clipboard actions for new element(s) to the client. + * + * @returns `this` + */ + ZeroClipboard.prototype.clip = function() { + return _clientClip.apply(this, _args(arguments)); + }; + /** + * Unregister the clipboard actions of previously registered element(s) on the page. + * If no elements are provided, ALL registered elements will be unregistered. + * + * @returns `this` + */ + ZeroClipboard.prototype.unclip = function() { + return _clientUnclip.apply(this, _args(arguments)); + }; + /** + * Get all of the elements to which this client is clipped. + * + * @returns array of clipped elements + */ + ZeroClipboard.prototype.elements = function() { + return _clientElements.apply(this, _args(arguments)); + }; + /** + * Self-destruct and clean up everything for a single client. + * This will NOT destroy the embedded Flash object. + * + * @returns `undefined` + */ + ZeroClipboard.prototype.destroy = function() { + return _clientDestroy.apply(this, _args(arguments)); + }; + /** + * Stores the pending plain text to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setText = function(text) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData("text/plain", text); + return this; + }; + /** + * Stores the pending HTML text to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setHtml = function(html) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData("text/html", html); + return this; + }; + /** + * Stores the pending rich text (RTF) to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setRichText = function(richText) { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData("application/rtf", richText); + return this; + }; + /** + * Stores the pending data to inject into the clipboard. + * + * @returns `this` + */ + ZeroClipboard.prototype.setData = function() { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to set pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.setData.apply(this, _args(arguments)); + return this; + }; + /** + * Clears the pending data to inject into the clipboard. + * If no `format` is provided, all pending data formats will be cleared. + * + * @returns `this` + */ + ZeroClipboard.prototype.clearData = function() { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to clear pending clipboard data from a destroyed ZeroClipboard client instance"); + } + ZeroClipboard.clearData.apply(this, _args(arguments)); + return this; + }; + /** + * Gets a copy of the pending data to inject into the clipboard. + * If no `format` is provided, a copy of ALL pending data formats will be returned. + * + * @returns `String` or `Object` + */ + ZeroClipboard.prototype.getData = function() { + if (!_clientMeta[this.id]) { + throw new Error("Attempted to get pending clipboard data from a destroyed ZeroClipboard client instance"); + } + return ZeroClipboard.getData.apply(this, _args(arguments)); + }; + if (typeof define === "function" && define.amd) { + define(function() { + return ZeroClipboard; + }); + } else if (typeof module === "object" && module && typeof module.exports === "object" && module.exports) { + module.exports = ZeroClipboard; + } else { + window.ZeroClipboard = ZeroClipboard; + } +})(function() { + return this || window; +}()); + +/*! + * clipboard.js v1.6.1 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Clipboard = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = options.action; + this.emitter = options.emitter; + this.target = options.target; + this.text = options.text; + this.trigger = options.trigger; + + this.selectedText = ''; + } + }, { + key: 'initSelection', + value: function initSelection() { + if (this.text) { + this.selectFake(); + } else if (this.target) { + this.selectTarget(); + } + } + }, { + key: 'selectFake', + value: function selectFake() { + var _this = this; + + var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; + + this.removeFake(); + + this.fakeHandlerCallback = function () { + return _this.removeFake(); + }; + this.fakeHandler = document.body.addEventListener('click', this.fakeHandlerCallback) || true; + + this.fakeElem = document.createElement('textarea'); + // Prevent zooming on iOS + this.fakeElem.style.fontSize = '12pt'; + // Reset box model + this.fakeElem.style.border = '0'; + this.fakeElem.style.padding = '0'; + this.fakeElem.style.margin = '0'; + // Move element out of screen horizontally + this.fakeElem.style.position = 'absolute'; + this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; + // Move element to the same position vertically + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = yPosition + 'px'; + + this.fakeElem.setAttribute('readonly', ''); + this.fakeElem.value = this.text; + + document.body.appendChild(this.fakeElem); + + this.selectedText = (0, _select2.default)(this.fakeElem); + this.copyText(); + } + }, { + key: 'removeFake', + value: function removeFake() { + if (this.fakeHandler) { + document.body.removeEventListener('click', this.fakeHandlerCallback); + this.fakeHandler = null; + this.fakeHandlerCallback = null; + } + + if (this.fakeElem) { + document.body.removeChild(this.fakeElem); + this.fakeElem = null; + } + } + }, { + key: 'selectTarget', + value: function selectTarget() { + this.selectedText = (0, _select2.default)(this.target); + this.copyText(); + } + }, { + key: 'copyText', + value: function copyText() { + var succeeded = void 0; + + try { + succeeded = document.execCommand(this.action); + } catch (err) { + succeeded = false; + } + + this.handleResult(succeeded); + } + }, { + key: 'handleResult', + value: function handleResult(succeeded) { + this.emitter.emit(succeeded ? 'success' : 'error', { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } + }, { + key: 'clearSelection', + value: function clearSelection() { + if (this.target) { + this.target.blur(); + } + + window.getSelection().removeAllRanges(); + } + }, { + key: 'destroy', + value: function destroy() { + this.removeFake(); + } + }, { + key: 'action', + set: function set() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; + + this._action = action; + + if (this._action !== 'copy' && this._action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } + }, + get: function get() { + return this._action; + } + }, { + key: 'target', + set: function set(target) { + if (target !== undefined) { + if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { + if (this.action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + + this._target = target; + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } + }, + get: function get() { + return this._target; + } + }]); + + return ClipboardAction; + }(); + + module.exports = ClipboardAction; +}); + +},{"select":5}],8:[function(require,module,exports){ +(function (global, factory) { + if (typeof define === "function" && define.amd) { + define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory); + } else if (typeof exports !== "undefined") { + factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener')); + } else { + var mod = { + exports: {} + }; + factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener); + global.clipboard = mod.exports; + } +})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) { + //'use strict'; + + var _clipboardAction2 = _interopRequireDefault(_clipboardAction); + + var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); + + var _goodListener2 = _interopRequireDefault(_goodListener); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + + function _possibleConstructorReturn(self, call) { + if (!self) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return call && (typeof call === "object" || typeof call === "function") ? call : self; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + enumerable: false, + writable: true, + configurable: true + } + }); + if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + } + + var Clipboard = function (_Emitter) { + _inherits(Clipboard, _Emitter); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + _classCallCheck(this, Clipboard); + + var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this)); + + _this.resolveOptions(options); + _this.listenClick(trigger); + return _this; + } + + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + _createClass(Clipboard, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + } + }, { + key: 'listenClick', + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + }, { + key: 'onClick', + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + + if (this.clipboardAction) { + this.clipboardAction = null; + } + + this.clipboardAction = new _clipboardAction2.default({ + action: this.action(trigger), + target: this.target(trigger), + text: this.text(trigger), + trigger: trigger, + emitter: this + }); + } + }, { + key: 'defaultAction', + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + }, { + key: 'defaultTarget', + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + }, { + key: 'defaultText', + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + }, { + key: 'destroy', + value: function destroy() { + this.listener.destroy(); + + if (this.clipboardAction) { + this.clipboardAction.destroy(); + this.clipboardAction = null; + } + } + }], [{ + key: 'isSupported', + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + + return support; + } + }]); + + return Clipboard; + }(_tinyEmitter2.default); + + /** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + function getAttributeValue(suffix, element) { + var attribute = 'data-clipboard-' + suffix; + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); + } + + module.exports = Clipboard; +}); + +},{"./clipboard-action":7,"good-listener":4,"tiny-emitter":6}]},{},[8])(8) +}); \ No newline at end of file diff --git a/core/static/journal_about/js/recaptcha__pt_br.js b/core/static/journal_about/js/recaptcha__pt_br.js new file mode 100644 index 0000000..e87e921 --- /dev/null +++ b/core/static/journal_about/js/recaptcha__pt_br.js @@ -0,0 +1,970 @@ +(function(){/* + + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ +/* + + Copyright 2005, 2007 Bob Ippolito. All Rights Reserved. + Copyright The Closure Library Authors. + SPDX-License-Identifier: MIT +*/ +/* + Copyright The Closure Library Authors. + SPDX-License-Identifier: Apache-2.0 +*/ +/* + + SPDX-License-Identifier: Apache-2.0 +*/ +var e=function(){return[function(Q,B,b,k){if(!(Q-5>>(0<=(b=[8,14,"call"],(Q^b[1])>>3)&&(Q|6)>3&&(B=kC,m=b=function(r){return B.call(b.src,b.listener,r)}),16777215)],Q|H[0])>>3||(k=Gu(t[18].bind(null,10),B),b.B?k():(b.kU||(b.kU=[]),b.kU.push(k))),12>((Q^17)&16)&&-61<=Q>>H[0])&&(G=[24,"",6710656],b>>>=0,k>>>=0,b<=H[1]?l=G[1]+(4294967296*b+k):(O[15](4)? +y=G[1]+(BigInt(b)<>16&65535,N=(k>>>G[0]|b<((n=[5,26,"ReCAPTCHA couldn't find user-provided function: "],Q)|n[0])&&0<=(Q<<2&11))a:switch(d=[187,189,0],y){case 61:G=d[0];break a;case B:G=k;break a;case b:G=d[1];break a;case 224:G=l;break a;case d[2]:G=224;break a; +default:G=y}if(1>(Q+4&((Q&115)==Q&&(b==B||"boolean"===typeof b?G=b:"number"===typeof b&&(G=!!b)),4))&&Q-1>=n[1])a:{if(l=(k=void 0===k?!1:k,B.get(b))){if("function"===typeof l){G=l;break a}if("function"===typeof window[l]){G=window[l];break a}k&&console.log(n[2]+l)}G=function(){}}return 1==(Q+9&13)&&(b.M=l?W[29](35,"%2525",k,!0):k,b.M&&(b.M=b.M.replace(/:$/,B)),G=b),G},function(Q,B,b,k,l,y,d,G){if((12<=Q<<(d=[31,0,30],1)&&2>Q+4>>4&&(y=["running","animation-play-state","display"],l.vQ(k),O[47](22,l.N, +y[2],b),O[47](d[2],l.N,y[1],y[d[1]]),O[47](d[0],l.N,"opacity",B),O[47](19,l.RB,y[1],y[d[1]])),26)<=Q-3&&Q-4(Q^(Q-6<<2=Q&&!k.N&&k.M&&k.O().form&&(e[37](88,k.M,k.O().form,B,k.WC),k.N=b),67))&&2<=(Q<<1&3)&&(B=["rc-2fa-tabloop-begin","rc-2fa-payload",'" tabIndex="0">
'], +G=NI('
=Q&&(Q-5^d[0])Q<<2&&(this[d[1]]=B),y},function(Q,B,b,k,l,y,d){return((Q^28)&(0<=(Q^14)>>(d=[86,56,41],4)&&19>Q<<1&&(this.BC=Array.from(b.entries()),this.Lj=Array.from(B)),5)||(y=B.classList? +B.classList.contains(b):E[43](77,b,e[6](1,B))),10<=Q-8&&16>(Q^d[1]))&&(k=K[d[2]](d[0],2,!!(2&b),k),k=K[d[2]](22,32,!!(32&b)&&l,k),y=k=K[d[2]](d[0],2048,B,k)),y},function(Q,B,b,k){return((k=[22,3,4],Q)+7&k[1]||(b=B.classList?B.classList:W[32](k[2],"class","string",B).match(/\S+/g)||[]),Q^k[0])>>k[2]||L.call(this,B),b},function(Q,B,b,k,l,y,d,G,n){if(!((Q^96)&((G=[36,"",67],1)==(Q+2&15)&&(k=[5559,0,6580],n=a[30](50,G[1],224,H9().slice(W[G[0]](65,7510)[b],W[G[0]](G[2],k[0])[b+B]),W[G[0]](33,k[2])+a[17](41, +k[1],function(){return H9().slice(0,W[36](33,3099)[b])},t6))),15)))a:if(k=[96,173,188],48<=b&&57>=b||b>=k[0]&&106>=b||65<=b&&90>=b||(m$||W9)&&0==b)n=!0;else switch(b){case 32:case 43:case 63:case 64:case 107:case 109:case 110:case 111:case 186:case 59:case 189:case 187:case 61:case k[2]:case 190:case 191:case 192:case 222:case 219:case B:case 221:case 163:case 58:n=!0;break a;case k[1]:case 171:n=ac;break a;default:n=!1}if(((Q|80)==Q&&(b.get(k),b.set(k,B,{df:0,path:void 0,domain:void 0})),(Q+1&57)< +Q&&Q+8>>1>=Q)&&(n=K[13](9,E[23](24,e[32](30,B),b),[E[43](58,k),E[43](58,l)])),1==(Q^57)>>3&&l&&(e[39](34,l),y))if("string"===typeof y)E[4](1,y,l);else d=function(S,T){S&&(T=K[11](28,b,l),l.appendChild("string"===typeof S?T.createTextNode(S):S))},Array.isArray(y)?y.forEach(d):!W[23](12,k,y)||"nodeType"in y?d(y):O[38](48,B,y).forEach(d);return n},function(Q,B,b,k,l,y,d,G,n){if((Q|6)>=(n=[1,7,29],(Q+5^24)>=Q&&(Q-5|21)Q>>n[0]){if(d=(b=[127,128,(k=B.M,28)],B).I,y=d[k++], +l=y&b[0],y&b[n[0]]&&(y=d[k++],l|=(y&b[0])<(Q+5&8)&&2<=(Q>>2&n[1])&&!W[36](26,"",this)&&(this.O().value=this.l),G},function(Q,B,b,k,l,y){if(!(Q<<(l=["fallback",1,3],l[1])&l[2]))E[15](23,b,rS,B,k);return(Q|8)==Q&&(y=!!window.___grecaptcha_cfg[l[0]]),y}, +function(Q,B,b,k,l,y,d,G,n,S,T,N){if(1<=(T=[!0,2,3],Q^14)&&(Q^32)>>4> +T[2]&&4>(Q>>1&4))try{N=X[8](66,b).filter(function(H){return!H.startsWith(t[30](25,B))}).length}catch(H){N=-1}return N},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m){if(((Q&(m=["addEventListener","src",24],77))==Q&&(this.M=B),Q|m[2])==Q){if(!k)throw Error("Invalid event type");if(n=((S=W[2](28,(N=K[18](81,b)?!!b.capture:!!b,y)))||(y[eH]=S=new Za(y)),S).add(k,l,G,N,d),n.proxy)H=n;else{if(y[m[((n.proxy=(T=e[1](8),T),T)[m[1]]=y,T).listener=n,0]])C1||(b=N),void 0===b&&(b=B),y[m[0]](k.toString(),T,b);else if(y.attachEvent)y.attachEvent(E[45](2, +"on",k.toString()),T);else if(y.addListener&&y.removeListener)y.addListener(T);else throw Error("addEventListener and attachEvent are unavailable.");H=(wS++,n)}}return H},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if((12>(N=["test",1,"://"],Q-N[1])&&3<=((Q|9)&25)&&(this.I=new Set),Q|24)==Q&&(B.M=b,b>B.l))throw X[5](11," > ",B.l,b);if(2==(Q|5)>>3)if(l=["",0,":"],k)if(/^about:(?:blank|srcdoc)$/[N[0]](k))H=window.origin||l[0];else{if(!(d=(-1!=(S=(y=((k=(k=(k.startsWith(B)&&(k=k.substring(5)),k.split("#")[l[N[1]]]).split("?")[l[N[1]]], +k.toLowerCase()),k).indexOf(b)==l[N[1]]&&(k=window.location.protocol+k),/^[\w\-]*:\/\//[N[0]](k)||(k=window.location.href),k.substring(k.indexOf(N[2])+3)),y.indexOf("/")),S)&&(y=y.substring(l[N[1]],S)),k.substring(l[N[1]],k.indexOf(N[2]))),d))throw Error("URI is missing protocol: "+k);if("http"!==d&&"https"!==d&&"chrome-extension"!==d&&"moz-extension"!==d&&"file"!==d&&"android-app"!==d&&"chrome-search"!==d&&"chrome-untrusted"!==d&&"chrome"!==d&&"app"!==d&&"devtools"!==d)throw Error("Invalid URI scheme in origin: "+ +d);H=(-1!=(T=l[n=y.indexOf(l[2]),0],n)&&(G=y.substring(n+N[1]),y=y.substring(l[N[1]],n),"http"===d&&"80"!==G||"https"===d&&"443"!==G)&&(T=l[2]+G),d+N[2]+y+T)}else H=l[0];if(14>((Q|((Q|48)==Q&&(K1.call(this),this.C=y,this.M=l,this.N=A6[b]||A6[N[1]],this.S=B,this.l=k),N[1]))&16)&&12<=(Q<<2&15))a:if(G=(l||P).document,G.querySelector){if((y=G.querySelector(k))&&(d=y[B]||y.getAttribute(B))&&zu[N[0]](d)){H=d;break a}H=b}else H=b;return H},function(Q,B,b,k,l,y,d,G,n,S,T){if(!((S=["C",6,2],Q<<1)&7)&&b.l){if(!b.X)throw new Ic(b); +b.X=B}return 1==(Q>>S[2]&3)&&(G=[1,null,256],this[S[0]]&&(n=this[S[0]],l=xC.K().get(),B=l.L,y=G[0],y=void 0===y?0:y,b=Xq(B),k=a[49](80,G[S[2]],b,S[1],B),d=e[27](11,G[1],k),d!=G[1]&&d!==k&&X[9](1,d,B,S[1],b),n.playbackRate=K[12](68,G[1],d,y),this[S[0]].load(),this[S[0]].play())),T},function(Q,B,b,k,l,y,d,G,n,S){if(S=[null,31,2],(Q+8&S[1])>=Q&&Q-6<(Q^1)&&18<=Q<=Q&&L.call(this,B),n},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m){if((Q|40)==(2==((((H=[24,1,14],(Q|H[0])==Q)&&(k.M.has(qI)?(l=Math,y=l.max,G=k.M.get(qI),d=y.call(l,B,parseInt(G,b))):d=B,m=d),Q)^H[1])&H[2])&&(b.N||(b.N=b.AG()>G[0]>G[1]&7)=G[1]&&(n=K[13](6,E[23](40,e[32](28,B),b),[E[43](31,k),E[43](26,l)])),n},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(27<=Q+(N=[35,1,"M"],7)&&47>Q+6)if(y=["-undetermined","Invalid checkbox state: ","-checked"],l=k.KS(),1==b)T=l+y[2];else if(b==B)T=l+"-unchecked";else if(null==b)T=l+y[0];else throw Error(y[N[1]]+b);if((Q|((((((Q|3)>>3||(G=[0,"rc-button-default", +"goog-inline-block"],d=K[33](43,B||G[N[1]],Rc),f1.call(this,b,d,l),this[N[2]]=k||G[0],this.S=B||G[N[1]],this.N=y||null,e[36](10,!0,this,G[2])),Q)+6^16)=Q&&(uk?null==B?T=B:t[6](41,!1,B)&&("string"===typeof B?T=v9?X[N[0]](19,".",!1,B):B:"number"===typeof B&&(T=O[26](2,!1,B))):T=B),Q+4)&58)>=Q&&(Q+7^29)=l.LZ||(1===l.LZ?(y=1E9,l.Xk&&(y=l.Xk-d),k.R=N[1],k.FC(y)):(k.R=b,k.O$()))),40))==Q)O[46](10,function(H,m,r,g,D){if(H.M==(D=["I",8, +32],B))return H.l=b,G=y.l.l.value,g=new BM,r=W[D[1]](D[2],3,G,g),n=new bw(r),O[28](58,H,l,y.M[D[0]].send(n));if(H.M!=b){if(d=H[(S=y.l.l.value,D)[0]],""==d.Kx()||G!=S)return H.return();return((m=d.Kx(),y.l.l).value=m,t)[33](22,k,H,k)}(t[43](1,H),H).M=k});return T},function(Q,B,b,k,l,y){return 3==((((Q>>(y=[null,"call","M"],2)&15||(k="Jsloader error (code #"+B+")",b&&(k+=": "+b),kb[y[1]](this,k),this.code=B),Q)&25)==Q&&(l=B.U?B.U.readyState:0),Q)+5&7)&&(l=new yH(function(d,G,n,S,T,N,H,m){if(m=(N=[], +k.length))for(H=function(r){G(r)},T=function(r,g){N[r]=(m--,g),m==B&&d(N)},S=B;S(Q^(G=[3,2038,"C1"],15))&&1<=(Q|7)>>G[0]&&(this.M=k,this.ik=l,this[G[2]]=B,this.RI=b),56))==Q&&(n=W[33](25)?!1:t[31](13,B)),30))>=Q&&(Q-5|41)>G[0]==G[0]&&(n=[].concat(b,B,k||[],k+l/5||[],k+y/1||[],k+d/G[0]||[])),n},function(Q, +B,b,k,l){if((Q|(l=[1,17,3],8))==Q&&dL)try{dL(B)}catch(y){throw y.cause=B,y;}return((Q|l[0])=l[2]&&K[l[1]](65,this,32)&&this.xX(!0),Q-2^21)=Q&&(b=['" aria-hidden="true">',"recaptcha-accessible-status",'" class="'],k=NI('
")),k},function(Q,B,b,k,l,y,d,G,n,S,T){return(Q^23)>>((T=["H",35,"send"],Q^39)=Q&&(Q-4^12)=Q&&Q+8>>S[1]>(4==(Q<<1&((Q+(n=[0,"recaptcha-setup", +51],9)&13||(NE.call(this,"/recaptcha/api3/accountchallenge",t[24](n[2],5,L5),"POST"),O[18](21,B,this),this.l=!0),4)==((Q^60)&15)&&(l=void 0===l?new Map:l,y=void 0===y?null:y,X[13](35),d=new MessageChannel,b.postMessage(n[1],K[1](5,B,k),[d.port2]),G=new HM(d.port1,l,y,k,d)),Q-3>>4||L.call(this,B),23))&&(this.message=B,this.messageType=b,this.M=k),3)&&(k=[null],tO.call(this),this.S=k[n[0]],this.A=k[n[0]],this.l=k[n[0]],this.M=k[n[0]],this.R=B,this.o=b,this.X=k[n[0]],this.F=k[n[0]],this.Y=Date.now(), +this.AG=k[n[0]],this.N=k[n[0]],this.yR=k[n[0]]),G},function(Q,B,b,k,l,y,d,G){return 39>Q<<(2==Q-(Q+8>>((Q^64)>>((d=[4,1,"L"],Q+8)>>d[0]||(k=[],Oy(d[0],b,function(n){k.push(n)},B),G=k),d)[0]||b.S.width==k.width&&b.S.height==k.height||(b.S=k,l&&a[23](54,K[48].bind(null,15),b),b.dispatchEvent(B)),d[0])==d[0]&&(this.kU=this.kU,this.B=this.B),d[0])>>3&&(G=X[2](25,b,$b,X[48](2,b,l),B,k)),d[1])&&24<=Q<<2&&(l=B[d[2]],y=Xq(l),a[49](67,y),X[9](2,k,l,b,y),G=B),G},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g){if((((r= +["o","F",0],3)<=Q-5>>4&&3>Q+6>>5&&(k==b?l=k:(y=k.U8||B,l="string"===typeof y?y:new Uint8Array(y)),g=l),3>Q+9>>4&&11<=(Q-6&15)&&(l[r[1]]=t[19](2,"IFRAME",B,K[42](38,"error",d),{title:"reCAPTCHA",tabindex:k,width:String(G.width),height:String(G.height),role:"presentation",name:b+l[r[0]]}),y.appendChild(l[r[1]])),Q)&91)==Q){for(G=r[y=r[2],2];yQ>>1&&2<=(Q<<1&5)){for(N=(H=(n=(m=W[32]((T=l&B?1:0,98),d),m.length), +l&k)?m[n-b]:void 0,n)+(H?-1:0);T>3&&16>Q>>1)if(b==B)l=b;else if("number"===typeof b||"NaN"===b||"Infinity"===b||"-Infinity"===b)l=Number(b);return((Q&106)==Q&&(b='',b+=k[2].replace(mB,a[k[1]].bind(null,28)),l=NI(b+'')),4>Q-4>>5&&6<=(Q<<1&k[0]))&&(this.M=B,this.no=!0),(Q&55)==Q&&(l=!!gL.FPA_SAMESITE_PHASE2_MOD|| +!(void 0===B||!B)),l},function(Q,B,b,k,l,y){return(Q|32)==(7>(y=[3,"S","I"],Q>>2)&&5<=((Q^35)&6)&&(this.M=B,this.U8=b),Q)&&(k=[null,!1,"h"],tO.call(this),this[y[2]]=B,e[1](4,this[y[2]],this),this.M=b,e[1](y[0],this.M,this),this.F=k[0],this[y[1]]=k[1],this.A=k[0],X[4](12,5,k[2],"f","m",this)),l},function(Q,B,b,k,l){return((l=["hasTrustToken",2,8],(Q|32)==Q&&O[l[1]](3,l[2],38,xC.K())&&document[l[0]]&&"https://recaptcha.net"===window.origin&&(b.km=B),Q)|24)==Q&&(k=!(!B||!B[je])),k},function(Q,B,b,k, +l,y,d,G){if(24<=(d=[8,"call",34],Q>>1)&&(Q+2&16)=Q&&(ac&&DG?(k=document.createElement(B),k.style.backgroundColor="rgb(255, 255, 255)",document.body.appendChild(k),l=W[31](2,k,"backgroundColor"),document.body.removeChild(k),G="rgb(255, 255, 255)"!==l):G=b),Q)&108)==Q&&(b=B.Ub,G=NI('
')),90))== +Q){for(y in l=[],k)X[37](3,B,k[y],l,y);G=l.join(b)}return G},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r){if(((((r=["setTimeout",!0,5],1<=(Q|8)>>3&&20>Q+6)&&(m=O[17](9,r[1],!1,B)?b(XH):e[3](31,null,function(g,D,J,Z){D=Object[(Z=["prototype","toJSON","JSON"],J=Array[Z[0]][Z[1]],Z)[0]][Z[1]];try{return delete Array[Z[0]][Z[1]],delete Object[Z[0]][Z[1]],b(g[Z[2]])}finally{J&&(Array[Z[0]][Z[1]]=J),D&&(Object[Z[0]][Z[1]]=D)}})),Q)|24)==Q&&L.call(this,B),1>(Q>>2&4))&&16<=(Q|4)&&(N=[2,"window","globalThis"], +ee.call(this),this.F=B,this.l=b||null,this.S=a[19].bind(null,40),this.I={},!k)){for(G=(H=(y=((T=["requestAnimationFrame","mozRequestAnimationFrame","webkitAnimationFrame",((this.M=new (this.M=null,Ey)(C5(this.A,this)),O)[13](21,N[0],r[0],this.M),"msRequestAnimationFrame")],O)[13](20,N[0],"setInterval",this.M),P)[N[1]]||P[N[2]],0),this.M);H>((d=[11,10,17],26>Q>>1&&(Q<<1&d[0])>=d[1])&&(l=e[d[2]](12,b),null!=l&&("string"===typeof l&&K[d[1]](4,32,l),K[30](4,null,25,l,k,B))),3)&&(b=new AO,y=t[14](20,B,b,1)),(Q|4)>>4)||PM.call(this,ME.width,ME.height,"doscaptcha"),64))==Q)a:{for(k=(l=Object.getOwnPropertyNames(Date),0);k>((Q+(d=[4,10,160],8)&17)=Q&&(k=e[37](20,b.M),y=O[44](26,B,d[2], +k,b.M,!0)),d)[0]||sy.call(this,417,1),(Q|24)==Q)&&(y=new VH(b,B,!1,!1)),Q+2)&7)&&(y=(l=X[d[1]](d[1],B,k))&&0!==l.length?l[b]:k.documentElement),Q-3)>>d[0]==d[0]&&(FH.call(this),this.l=0),y},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z,w,C){return(Q-(((w=["delete","indexOf",32],Q&89)==Q&&(y=[42,4,16],J=b(),r=new Yb,N=k(J,11),l=W[15](77,r,N,5),m=k(J,26),Z=W[15](13,l,m,y[1]),n=k(J,w[2]),G=W[15](45,Z,n,6),d=k(J,5,20),g=W[15](45,G,d,2),H=k(J,5,y[0]),T=W[15](13,g,H,1),S=k(J,5,y[2]),D=W[15](29,T,S,3), +C=a[39](11,D)),18<=(Q^25)&&Q+9l.Jl?(l&&(K[30](52,k.l,b,cM,l.Ik),k.M[w[0]](B)),y=k.I,y.I[w[0]](b)&&y.Q4(b)):(l.Lx++,b.send(l.px(),l.yu(),l.pS(),l.lk))),Q>>2&14)||(C=B.hasAttribute("tabindex")),3)^13)>=Q&&(Q+4^19)")&&(k=k.replace(f5,">")),-1!=k[w[1]]('"')&&(k=k.replace(uw, +""")),-1!=k[w[1]]("'")&&(k=k.replace(vM,y[2])),-1!=k[w[1]]("\x00")&&(k=k.replace(Q2,y[1]))),l=K[27](4,"error",k)),C=l),C},function(Q,B,b,k,l,y,d,G,n,S,T,N){return((T=[34,8,2],6>(Q+9&T[1])&&-76<=Q+5)&&(d=a[43](T[0],k,l),S=d[k].C1,(G=d[b])?(y=K[12](10,B,G),n=O[1](58,k,G).MW,N=function(H,m,r){return S(H,m,r,n,y)}):N=S),1>(Q+3&T[1]))&&Q-4>>3>=T[2]&&(this.M=new B$,this.I=B),(Q|16)==Q&&L.call(this,B),N},function(Q,B,b,k,l,y,d,G,n,S,T){return 3>((Q>>1&((Q>>((T=[42,"C",14],Q-6>>4)||!k||(b[T[1]]?E[43](73, +k,b[T[1]])||b[T[1]].push(k):b[T[1]]=[k],K[T[0]](2,k,B,b)),1)&6||(S=b.replace(/<\//g,B).replace(/\]\]>/g,"]]\\>")),(Q|88)==Q)&&(b instanceof b0?(y=b.y,b=b.x):y=k,G=B.M-B.l,d=B.I-B.A,l=B.l,n=B.A,S=((Number(b)-l)*(B.M-l)+(Number(y)-n)*(B.I-n))/(G*G+d*d)),25)||(0,eval)(B),Q)^54)>>4&&9<=(Q<<2&T[2])&&(S=!!l.relatedTarget&&E[21](40,b,B,!1,l.relatedTarget,k)),S},function(Q,B,b,k,l,y,d,G){return Q-(((Q^55)>>(Q-(1==(d=[4,3,"displayName"],Q+d[1]>>d[1])&&(G=k.kX()||b.l&&k.QR()==B),d[0])&15||(G=e[8](38,B)>>>0), +d[1])||(G=B[d[2]]||B.name||"unknown type name"),Q)>>1&15||(k=new kl,G=W[15](13,k,b,B)),8)&15||(G=W[39](d[1],k,y,l,b,B)),G},function(Q,B,b,k,l,y,d,G,n,S){if(3==(Q-6&(n=[0,"P",1],15)))a:{for(G=[(d=B,k)==typeof globalThis&&globalThis,l,k==typeof window&&window,k==typeof self&&self,k==typeof global&&global];d=Q&&((l=b(k||l0,void 0))&&l.I&&B?l.I(B):(y=a[n[0]](37,"zSoyz",l),K[3](20, +B,y))),Q)&106)==Q&&(b=[null,!1],ee.call(this),this.X=B||a[3](52),this[n[1]]=b[n[0]],this.mt=y2,this.Y=b[n[0]],this.A=b[n[0]],this.I=b[n[0]],this.H=void 0,this.uC=b[n[2]],this.F=b[n[0]]),14)||L.call(this,B),S},function(Q,B,b,k,l,y){if(((y=[4,1,3],Q+5>>y[2]==y[1])&&(k=B.rf,b=B.CZ,l=NI('
'+X[11](y[0],k,b)+"
")),24<=Q+y[1])&&(Q>>y[1]&y[0])=Q&&(Q-7^13)>2&15)&&(l=e[37](4,k.M),n=E[29](30,b,B,k.M,l)),n},function(Q, +B,b,k,l,y,d,G,n,S,T,N,H,m){return((Q|56)==((Q&105)==((Q|((Q&(m=[80,2,1],15))==Q&&(G=y.M[d.toString()],n=-1,G&&(n=E[24](33,B,b,G,k,l)),H=-1>3==m[1]&&(H=X[15](56,B,"raw",0,m[2],k,b).catch(function(){return a[0](26,b,k)})),H},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){return 3==(((Q>>((N=["rc-anchor",0,19],36>(Q^48)&&28<=(Q^46))&& +(S=QH()-y.Iz,n=new tM,T=K[18](2,k,b,S,y.B),G=E[15](73,n,Om,B,T),d=K[18](3,k,b,S,y.kU),H=E[15](9,G,Om,l,d)),2)&7||(l=t[11](97,11,b),k=W[14](43,l,$l,B),k||(k=new $l,e[25](16,k,2,K[34](27,null,!1)),E[15](71,l,$l,B,k)),H=k),(Q+1^14)=Q&&(b=B.p6,k=[" ","
",1],l=B.O_,y=B.Jw,H=NI('
'+e[20](20,B.Zk)+ +O[7](74)+(l==k[2]!=b?t[27](16,k[1],k[N[1]],B)+t[N[2]](38,k[1],k[N[1]],B):t[N[2]](37,k[1],k[N[1]],B)+t[27](17,k[1],k[N[1]],B))+k[1])),Q)|1)>>3&&(d=y.L,G=Xq(d),a[49](38,G),(n=e[26](24,B,G,d,b))&&n!==l&&k!=B&&(G=X[9](3,void 0,d,n,G)),X[9](13,k,d,l,G),H=y),H},function(Q,B,b,k,l,y,d,G,n,S,T){return(Q-5|79)>=((S=[13,2,"rc-anchor-over-quota-pt"],(Q^70)>>4||(T=k(B(),S[0])),(Q|16)==Q&&(l=this.XL[this.I][b]))&&(T=l.call(this,null==B?void 0:B,k)),Q)&&(Q+6^10)', +'Privacidade
")),T},function(Q,B,b,k,l,y,d,G,n){if(3==((Q|9)&(8>((Q&116)==((G=[0,49,2],(Q&73)==Q)&&(k=W[31](24,O[20](3,mC),W$),n=K[45](G[1],B,function(){return k.match(/[^,]*,([\w\d\+\/]*)/)[b]})),Q)&&(n=(k=b.get(B))?k.toString():null),Q>>G[2])&&5<=(Q- +G[2]&10)&&(d=["e","g","l"],e[37](88,y,y.I,"c",function(){return O[6](27,!0,y)}),e[37](56,y,y.I,"d",function(S){(S=["M",27,"wM"],y[S[0]])[S[0]][S[2]](a[22](S[1],y.I))}),e[37](56,y,y.I,d[G[0]],function(){return O[6](19,!1,y)}),e[37](88,y,y.I,d[1],function(){return E[18](28,null,"r",y)}),e[37](72,y,y.I,b,function(S){((S=["sr",6,"M"],O)[S[1]](11,!1,y),y[S[2]])[S[2]][S[0]]()}),e[37](40,y,y.I,"j",function(){return E[18](26,null,"i",y)}),e[37](24,y,y.I,"i",function(){return E[18](30,null,"a",y)}),e[37](24, +y,y.I,k,function(S){return a[S=[8,"I","M"],11](S[0],y,new aU(y[S[2]].ZO(),t[5](2,y[S[1]][S[2]])),function(T,N,H,m,r,g,D,J,Z){if(null!=(J=[4,(Z=[2,1,"push"],1),2],O)[19](41,T,3))y.l();else{for(D=(g=((N=((r=E[3](12,T,(m=[],J[Z[1]])),r)&&t[34](32,y,r),y.I.M),N).z_=!1,W)[39](13,T,J[Z[0]],K[39].bind(null,8)),H=K[Z[1]](72,g),H.next());!D.done;D=H.next())m[Z[2]](N.KZ(E[3](15,T,B),D.value));(N.wn(m,W[48](54,J[Z[0]],T,J[0],r2)),O)[7](24,!0,N)}})}),W[39](4,d[G[2]],void 0,y.R,y.I,y),W[39](G[2],"n",void 0,y.Y, +y.I,y),W[39](3,l,void 0,y.X,y.I,y)),7))){if(k=(l=[1,0,2147483648],b)&l[G[2]])B=~B+l[G[0]]>>>l[1],b=~b>>>l[1],B==l[1]&&(b=b+l[G[0]]>>>l[1]);n=(y=E[35](30,B,b),k?-y:y)}return(Q|24)==Q&&(l.F.push([k,y,d]),l.l&&W[44](4,B,b,l)),n},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if(2==(Q<<1&(((3==(Q>>1&(N=["M","scrollLeft","scrollTop"],11))&&(H=O[46](8,function(m,r,g,D,J,Z){r=["b",(Z=["I",20,"M"],1),5];switch(m[Z[2]]){case r[1]:return O[28](58,m,B,y[Z[2]][Z[0]].send(new g2(G)));case B:if((n=m[Z[0]],n).gU())return g= +m.return,D=n.gU(),g.call(m,new jG("",0,sm[D]||sm[l]));if(!((J=(E[34](2,r[0],n.ay()),n.Mp()))&&a[2](34,t[30](21,b),J,l),y.sd(),T=n.ZO(),d)||!E[15](13,n,k)){m[Z[2]]=4;break}return O[28](53,m,r[2],X[1](17,3,a[39](10,G),d));case r[2]:S=m[Z[0]],T=DK+t[7](13,a[39](15,K[15](39,B,e[25](Z[1],r[1],null,new XQ,n.ZO()),S)),4);case 4:return m.return(new jG(T,n.kB(),null,n.qP(),n.NL(),n.ZQ()?a[39](15,n.ZQ()):null))}})),Q)|56)==Q&&(b=B.scrollingElement?B.scrollingElement:!m$&&E[48](8,B)?B.documentElement:B.body|| +B.documentElement,k=B.parentWindow||B.defaultView,H=Se&&k.pageYOffset!=b[N[2]]?new b0(b[N[1]],b[N[2]]):new b0(k.pageXOffset||b[N[1]],k.pageYOffset||b[N[2]])),31)))a:switch(y=["tileselect","multiselect","imageselect"],l){case "default":H=new eG;break a;case "nocaptcha":H=new Em;break a;case "doscaptcha":H=new JM;break a;case y[2]:H=new ZK;break a;case y[0]:H=new ZK("tileselect");break a;case "dynamic":H=new xl;break a;case B:H=new qk;break a;case "multicaptcha":H=new P$;break a;case k:H=new Mk;break a; +case y[1]:H=new V2;break a;case "prepositional":H=new FQ;break a;case b:H=new Yl}return(Q&30)==((Q+1^9)=Q&&(H=Error("Tried to read past the end of the data "+k+B+b)),Q)&&(d[N[0]]?(G=new Promise(function(m,r){c$(r,(d.M.onmessage=function(g,D){(D=g.data,D.type)==k&&m(D.data)},b))}),d[N[0]].postMessage(e[21](17,new Um(y),l)),H=G):H=B),H},function(Q,B,b,k,l,y,d,G,n,S){return(((Q&97)==(3==((Q-(S=[6,16,44],S[0])|37)>=Q&&(Q+8^S[1])>3)&&(ee.call(this),this.M=0,this.endTime=this.startTime=null),Q)&&(n=Array.prototype.filter.call(a[8](17,B,"grecaptcha-badge"),function(T){return E[43](74,T.getAttribute("data-style"),RU)}).length>b),Q)|40)==Q&&(E[42](14,xC.K(),W[14](43, +B,oU,2)),O[4](2),l=new hM,l.render(X[S[2]](13)),b=new fx,k=new u0(b,B,new v$,new Q5),this.M=new B5(l,k)),n},function(Q,B,b,k,l,y,d){return(Q+1^11)<((y=["slice",4,27],(Q&41)==Q)&&(b=O[22](7,b),d=K[y[2]](3,B,b)),Q)&&(Q-2|y[1])>=Q&&(b=void 0===b?8:b,k=new bP,k.update(B),l=k.digest(),d=K[8](1,"",l)[y[0]](0,b)),d},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(!((Q+2^(T=[13,11,"M"],T)[1])>=Q&&(Q-2^22)>4)){for(n=(G=[0,"",1],G[0]),d=G[1];n<=k.length/b-G[2];n++){for(l=(y=(n+G[2])*b-(S=G[0], +G)[2],G[0]);y>=n*b;y--)l+=k[y]<>>G[0]).toString(36)}N=d}if(!(Q>>2&T[0]))try{N=Object.keys(a[6](2,1,B)||{})}catch(H){N=[]}return(Q-9|32)=Q&&(k[T[2]].close(),k[T[2]]=l,e[37](40,k,k[T[2]],"message",function(H){return a[46](48,b,B,H,k)}),k[T[2]].start()),N},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if(1<=(H=["push",66,null],(Q^25)>>3)&&20>(Q|8))a:if(G=[512,1,256],d=W[25](2,14,l),k>=d||y){if(l&G[T=l,2])n=b[b.length-G[1]];else{if(B==H[2]){N=T;break a}T|=(n=b[d+(+!!(l&G[0])-G[1])]={}, +G[2])}N=((n[k]=B,T!==l)&&so(b,T),T)}else b[k+(+!!(l&G[0])-G[1])]=B,l&G[2]&&(S=b[b.length-G[1]],k in S&&delete S[k]),N=l;return Q+3>>1<(2==(Q>>1&6)&&(n=[5944,46,0],G=k(b(),4),l(G,10)&&(y=l(G,10)(e[7](15,1,17)))&&y[n[2]]&&(d=k(y[n[2]],n[1])||""),N=W[36](H[1],n[0])(d)),Q)&&(Q+3^25)>=Q&&(y=kf,S=k.L,d=Xq(S),a[49](4,d),G=W[28](1,B,2,y,S,b,void 0,d),n=l!=H[2]?W[11](52,y,l):new y,G[H[0]](n),jH(n.L)&2?lP(G,B):lP(G,16),N=n),N},function(Q,B,b,k,l,y,d,G,n){return(((n=[1,"M",90],Q)&n[2])==Q&&(G=(b||document).getElementsByTagName(String(B))), +Q-5<<2>=Q)&&(Q-3^30)>(d=[63,1,3],2)&7||(P.Promise&&P.Promise.resolve?(B=P.Promise.resolve(void 0),Nv=function(){B.then(K[24].bind(null,1))}):Nv=function(G){E[16]((G=[5,!1,1],G[2]),null,G[1],K[24].bind(null,G[0]))}),2>(Q^53)>>4)&&Q+d[1]>>d[2]>=d[1]&&(y=e[25](15,k,B,K[34](28,b,l))),(Q|16)==Q)&&(l=k.style[t[13](32,"visibility")],y="undefined"!==typeof l?l:k.style[K[37](11,b,k,"visibility")]||B),Q)&&(y=NI('')),y},function(Q,B,b,k,l,y,d,G,n){return((Q^22)&(((Q-(G=[1,null,21],9)<<2=Q&&((y=k.M)||(l={},E[37](8,B,k)&&(l[B]=!0,l[b]=!0),y=k.M=l),n=y),Q)+2^G[2])=Q&&(this.errorCode=B),7)||(L8.call(this,[k.left,k.top],[k.right,k.bottom],l,y),this.l=b,this.F=B,this.X=!!d),4)<=(Q>>G[0]&7)&&19>(Q^15)&&(this.M=G[1],this.I=G[1]),n},function(Q,B,b,k,l,y,d,G,n,S,T){if((Q&((Q^38)>>(S=[3,"captureStackTrace",2], +S[0])||H5||(a[11](13,function(N){return N.nS.origin},function(N){return tj.add(N)}),H5=new tO,e[37](56,H5,W[47](4),"message",function(N,H,m,r,g){for(m=(H=K[1](40,OP.values()),H.next());!m.done;m=H.next())g=m.value,(r=g.filter(N))&&g.yN(r)})),78))==Q){if(Error[S[1]])Error[S[1]](this,kb);else if(k=Error().stack)this.stack=k;B&&(this.message=String(B)),void 0!==b&&(this.cause=b),this.M=!0}if((Q-S[0]|82)=Q)O[46](42,function(N,H){if(H=["from","o",53],N.M==l)return(n=y[H[1]])!=b&&n.size?O[28](H[2], +N,2,y.PQ.send(k,new $f(y[H[1]]))):N.return();y.z_=(((G=(d=N.I,new Map(d.BC)),Array)[H[0]](G.keys()).forEach(function(m){return y.o["delete"](m)}),y).X=y.X.concat(Array[H[0]](G.values()).map(function(m){return new mT(m)})),N.M=B,d).Lj});return(Q+((Q&121)==Q&&(T=W5?!!aR&&!!aR.platform:!1),9)^22)=Q&&(T=B^b^k),T},function(Q,B,b,k,l,y){return((Q&42)==(y=[6,1,375],Q)&&(l=Error("Invalid wire type: "+b+" (at position "+k+B)),14<=(Q|5)&&(Q<>(3==(Q^((22>(n=[49,58,9],Q+n[2])&&10<=((Q|2)&15)&&(k instanceof rd?(b.l=k,X[15](1,null,b.l,b.P)):(l||(k=E[36](11,B,gd,k)),b.l=new rd(k,b.P)),S=b),Q-6<<2=Q&&(k&&!b.A&&(t[39](n[1],b),b.l=B,b.M.forEach(function(T,N,H,m){N!=(m=[2,null,(H=N.toLowerCase(),0)],H)&&(a[17](23,m[1],this,N),E[8](m[0],m[1],m[2],H,this,T))},b)),b.A=k),11))>>3&&(l=a[13].bind(null,1),"none"!=K[n[0]](26,B,"display")?S=l(B):(y=B.style,G=y.position,b=y.display,k=y.visibility,y.visibility= +"hidden",y.position="absolute",y.display="inline",d=l(B),y.display=b,y.position=G,y.visibility=k,S=d)),3)&&(S=W[44](64,null,function(T,N,H,m,r,g,D,J){return O[46](42,function(Z,w,C,p,z,I){if(Z.M==(I=[4,(C=[1023,!1,"A"],59),"set"],l)){if(!T)throw 1;return(z=(p=((r=(J=E[12](19,C[0],d),new Uint8Array(12)),N.getRandomValues(r),w=new bP,w).update(y),new Uint8Array(w.digest())),T.importKey(b,p,{name:"AES-GCM",length:p.length},C[1],["encrypt","decrypt"])),O)[28](54,Z,2,z)}if(Z.M!=B)return D=Z.I,O[28](I[1], +Z,B,T.encrypt({name:"AES-GCM",iv:r,additionalData:new Uint8Array(0),tagLength:128},D,new Uint8Array(J)));return(H=(g=(m=Z.I,new Uint8Array(m)),new Uint8Array(12+g.length)),H)[I[2]](r,k),H[I[2]](g,12),Z.return(O[39](8,I[0],H,C[2]))})})),S},function(Q,B,b,k){return Q-(Q<<1&(b=["l",!1,null],7)||(this.U8=b[2],this.M=new j$,this[b[0]]=b[1],this.A=b[1],this.I=O[21].bind(b[2],39)),5)&2||(k=B.Object.getOwnPropertyNames),k},function(Q,B,b,k,l,y,d){if((Q&118)==(2==(Q^((y=["test","(",30],(Q-3^y[2])>=Q&&(Q-8^ +17)>3&&(Dc.call(this),this.pZ=B,this.Y7=b,this.lm=new XP),Q))a:{k=["parse",")","Invalid JSON string: "];try{d=P.JSON[k[0]](B);break a}catch(G){}if((b=String(B),/^\s*$/[y[0]](b))?0:/^[\],:{}\s\u2028\u2029]*$/[y[0]](b.replace(/\\["\\\/bfnrtu]/g,"@").replace(/(?:"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)[\s\u2028\u2029]*(?=:|,|]|}|$)/g,"]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g, +"")))try{d=eval(y[1]+b+k[1]);break a}catch(G){}throw Error(k[2]+b);}if(!(Q+((Q-2^32)=Q&&(B=E[12](7,this),b=O[37](4,this),this.I[B]=b),1)>>4))a:{if(l!=B)switch(l.nR){case k:d=k;break a;case -1:d=-1;break a;case b:d=b;break a}d=B}return d},function(Q,B,b,k,l,y,d,G,n){return(Q-4^(((Q-(G=[40,17,"%2525"],9)>>4||(k.A=l?W[29](34,G[2],b,B):b,n=k),Q)|56)==Q&&(b.style.display=B?"":"none"),3==((Q|9)&7)&&(n=B instanceof e$&&B.constructor===e$?B.M:"type_error:SafeUrl"),G[1]))=Q&&(d=K[G[0]](25, +1,k),b.F=d.mg,b.I=d.buffer,b.A=l||B,b.l=void 0!==y?b.A+y:b.I.length,b.M=b.A),n},function(Q,B,b,k){return(Q&((Q|(b=[0,28,4],b[2]))>>3||L.call(this,B,b[0],"setoken"),b[1]))==Q&&L.call(this,B,b[0],"rresp"),k},function(Q,B,b,k,l,y,d){return 17>(Q^(1==(Q-((Q&(d=["M",45,"push"],107))==Q&&(100<=k[d[0]].length&&(k[d[0]]=[O[37](72,B,E[d[1]](19,"]",k[d[0]])).toString()]),k[d[0]][d[2]](b)),4)&7)&&(y=e[3](29,B,function(G){return X[16](2,G)(document)})),32))&&7<=Q-6&&(l=K[27](93,B,k)[B]||b,!l&&P.self&&P.self.location&& +(l=P.self.location.protocol.slice(0,-1)),y=l?l.toLowerCase():""),y},function(Q,B,b,k,l){return((Q-(k=[3,25,5],4)>>k[2]=k[0]&&(l=b.length==B?X[48](20):new EP(b,Jj)),Q)&110)==Q&&(l=X[k[1]](k[0],9999,"number",b)),l},function(Q,B,b,k,l,y,d,G,n,S){return(((((Q>>(n=[5,2,8],n[1])&n[0]||(G=a[41](n[2],k,d,y),d.A=d.A.then(G,G).then(function(T,N,H){return O[46](14,function(m,r,g){r=[2,null,(g=[2,"M",14],1)];switch(m[g[1]]){case r[g[0]]:if(!(H=d[N=l,g[1]].X,H)){m[g[1]]=r[0];break}return O[28](52, +m,b,X[1](16,b,a[39](g[2],T),H));case b:N=m.I;case r[0]:return O[28](52,m,B,E[40](4,r[g[0]],r[1],d,41,T));case B:return m.return({wf:m.I,K6:N})}})}),S=d.A),(Q<=n[2]&&26>(Q^27))&&(this.I=this.M=this.l=0),Q)|40)==Q&&(l=void 0===l?t[n[2]].bind(null,4):l,k=void 0===k?!0:k,S=function(T,N,H){var m=[43,"apply",46],r=Zc[m[1]](3,arguments);T=void 0===T?O[m[0]](38):T;var g,D=this,J,Z,w,C,p,z;return O[m[2]](m[2],function(I,x,A){if(I[A=["I",15,(x=[1,3,0],"M")],A[2]]==x[0])return C8=C8||H,t6=N||t6,J= +Math.abs(O[37](10,5,T)),g=e[37](1,2,J),k&&K[45](51,x[2],function(F){return r[(F=[9510,36,"unshift"],F)[2]](W[F[1]](67,8014)(),W[F[1]](67,2990)(),W[F[1]](33,F[0]),W[F[1]](33,5109))}),C=K[46](40,4,5,"\\",!0,function(){return B.apply(D,r)},l),O[28](52,I,2,C[A[0]](J));return((w=(z=I[A[0]],Z=z.H6,z.Se),W[8](48,x[0],w,g),W[A[1]](61,g,t6.fo(),x[1]),void 0)!=H&&C8==H&&(p=new wd,a[2](13,g,x[1])==x[2]||C[A[2]].fo()==x[2]?t[14](8,2,p,x[0]):C.l?t[14](4,x[1],p,x[0]):C.A?t[14](20,4,p,x[0]):t[14](28,x[0],p,x[0]), +W[8](32,2,Z,p),K8.push(p),C8=void 0),I).return(new p8(g,Z,b))})}),Q)-n[1]^6)>=Q&&(Q-9^32)(((d=["I",7,"M"],((Q^55)&15)>=d[1]&&1>(Q^25)>>4)&&(this.A=B,this[d[0]]=k,this.l=b),18<=Q-6&&2>(Q<<1&4))&&(k[d[0]]||k[d[2]]!=B&&3!=k[d[2]]||t[17](40,b,k),k.A?k.A.next=l:k[d[0]]=l,k.A=l),Q-1&8)&&0<=Q-4>>3&&(y=NI(K[47](30," "))),y},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(!(Q-(T=[6,3,43],(Q^T[1])&30|| +(Aj.call(this,B,b),this.D=!1,this.RB=this.N=null),7)>>4)&&b)a:{for(G=(k=(S=zL,B.split(".")),0);G>T[1]||(l=K[T[2]].bind(null,13),qv=b,P5=B,Mv=k,V5=l),(Q|T[0])>>T[1]==T[1])&&(N=(l=k(B(),35))?W[36](33,136)(l)+","+W[36](65,7943)(l):""),N},function(Q,B,b,k,l,y,d,G){if(!((G=[2,23,"U8"], +Q|8)>>4))a:{l=["boolean",null,0];switch(typeof k){case b:d=isFinite(k)?k:String(k);break a;case l[0]:d=k?1:0;break a;case "object":if(k){if(Array.isArray(k)){d=FP||!t[1](G[1],!1,B,void 0,k)?k:void 0;break a}if(O[13](67,l[1],k)){d=a[49](11,l[1],l[G[0]],k);break a}if(k instanceof EP){d=(y=k[G[2]],y==l[1]?"":"string"===typeof y?y:k[G[2]]=a[49](27,l[1],l[G[0]],y));break a}}}d=k}return(Q&30)==Q&&L.call(this,B),d},function(Q,B,b,k,l,y){return 1==(Q>>2&((Q&28)==((Q-2|18)>=(4<=(y=["max",5,31],Q<<2&11)&&12> +((Q|6)&16)&&(Yf||(c5?Yf=new UP(function(d){O[31](50,d)},c5):Yf=new RR(function(){O[31](48,K[9](1))},20)),B=Yf,B.isActive()||B.start()),Q)&&(Q+1^28)=Q&&Q-8<<1=Q&&(Q-3^11)=Q)&&L.call(this,B),5)>>3&&(ee.call(this),this.M=B,K[5](29,y[2],B,this.l,y[1],this),K[5](31,"click",B,this.I,y[1],this)),d},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(!((Q^6)&((Q>>1&((Q|(T=[46,15,34],80))==Q&&((G=P[k])||"undefined"===typeof document||(G=(new hj(document)).get(l)),N=G?X[41](3,B,b,y,d,G):null),T[1])||(this.M=B,this.no=!0),6)<=(Q+9&T[1])&&17>(Q|7)&&(B=[null,!1,0],this.I=void 0,this.R=B[2],this.l=B[2],this.S=B[1],this.M=1,this.A=B[0], +this.F=B[0]),3)))for(G=b||["rc-challenge-help"],S=[1,"none",null],k=0;k>((Q^57)&(D=[2,"href","__Secure-3PAPISID"],11)||(null!=l&&"object"===typeof l&&l.OM===Da?J=l:Array.isArray(l)?(G=S=jH(l),0===G&&(G|=y&32),G|=y&D[0],G!==S&&so(l,G),J=new b(l)):(k?(y&D[0]?(n=b[f8])?d=n:(N=new b,uP(N.L,B),d=b[f8]=N):d=new b,T=d):T=void 0,J=T)),4)||(b=void 0===b?!1:b,y=["moz-extension:",1E3,"__OVERRIDE_SID"],r=e[12](16,"blob:","//", +String(P.location[D[1]])),k=[],g=b,g=void 0===g?!1:g,H=P.__SAPISID||P.__APISID||P.__3PSAPISID||P[y[D[0]]],e[27](18,g)&&(H=H||P.__1PSAPISID),H?G=!0:("undefined"!==typeof document&&(S=new hj(document),H=S.get("SAPISID")||S.get("APISID")||S.get(D[2])||S.get("SID")||S.get("OSID"),e[27](16,g)&&(H=H||S.get("__Secure-1PAPISID"))),G=!!H),G&&(m=(d=0==r.indexOf("https:")||0==r.indexOf("chrome-extension:")||0==r.indexOf(y[0]))?P.__SAPISID:P.__APISID,m||"undefined"===typeof document||(N=new hj(document),m=N.get(d? +"SAPISID":"APISID")||N.get(D[2])),(n=m?X[41](D[0],y[1],"",B,d?"SAPISIDHASH":"APISIDHASH",m):null)&&k.push(n),d&&e[27](17,b)&&((l=X[28](81,y[1],"","__1PSAPISID","__Secure-1PAPISID",B,"SAPISID1PHASH"))&&k.push(l),(T=X[28](80,y[1],"","__3PSAPISID",D[2],B,"SAPISID3PHASH"))&&k.push(T))),J=0==k.length?null:k.join(" ")),Q<=Q&&(Q-3^19) +Q-(y=[30,"D",2],9)&&(Q^y[0])>>3>=y[2]&&(k=a[21](5,2048,b),B[y[1]].push.apply(B[y[1]],a[36](18,k)),l=k),Q-8>>4||L.call(this,B),l},function(Q,B,b,k,l,y,d,G,n,S,T,N){return(Q+9&14)<((Q|32)==(Q<<(Q>>(N=[0,"div","oB"],1)&13||(d=["Verificar",!1,"Receber um desafio visual"],K1.call(this),this.XL=k,this.S=this.yl=new QQ(b,B),this.N=null,this.H_=l||d[1],this.response={},this[N[2]]=[],y=e[30](48,N[1],d[1]),this.fS=K[44](21,1,this,"rc-button",l?void 0:3,y?"rc-button-reload-on-dark":"rc-button-reload","Receber outro desafio", +void 0,"recaptcha-reload-button"),this.AG=K[44](18,1,this,"rc-button",l?void 0:1,y?"rc-button-audio-on-dark":"rc-button-audio","Receber um desafio de \u00e1udio",void 0,"recaptcha-audio-button"),this.jK=K[44](19,1,this,"rc-button",void 0,y?"rc-button-image-on-dark":"rc-button-image",d[2],void 0,"recaptcha-image-button"),this.eK=K[44](23,1,this,"rc-button",l?void 0:2,y?"rc-button-help-on-dark":"rc-button-help","Ajuda",void 0,"recaptcha-help-button",!0),this.hG=K[44](18,1,this,"rc-button",void 0,y? +"rc-button-undo-on-dark":"rc-button-undo","Desfazer",void 0,"recaptcha-undo-button",!0),this.RB=E[35](1,1,d[N[0]],this,void 0,"recaptcha-verify-button"),this.YU=new BS),2)&22||L.call(this,B,7),Q)&&(K1.call(this,B),this.M=null,this.l=W[7](26,document,"recaptcha-token")),(Q|80)==Q&&(S=[null,"dg","t"],NE.call(this,t[N[0]](3,"userverify"),t[24](54,5,bO),"POST"),X[40](26,this,"c",B),X[40](18,this,"response",b),k!=S[N[0]]&&X[40](19,this,S[2],k),l!=S[N[0]]&&X[40](22,this,"ct",l),y!=S[N[0]]&&X[40](27,this, +"bg",y),d!=S[N[0]]&&X[40](24,this,S[1],d),G!=S[N[0]]&&X[40](25,this,"mp",G),n!=S[N[0]]&&X[40](23,this,"srr",n)),Q)&&(Q+6&18)>=Q&&(T=K[13](7,E[23](26,e[32](32,B),k),[E[43](60,b),E[43](59,l)])),T},function(Q,B,b,k,l,y,d,G){if((d=[48,1,"Toque no centro das placas"],Q)+3>>d[1]=Q&&(l=new kL(B),b.dispatchEvent(l))){k=new lO(B);try{b.dispatchEvent(k)}finally{B.M()}}if((Q-5^12)=Q){y=(l=["/m/04w67_",'
((Z=[15,"indexOf","M"],(Q|1)&14||(l=k||yQ.K(),Ni.call(this,null,l,b),this.u=void 0!==B?B:!1),Q)-9&Z[0])&&2<=(Q|3)>>3&&(H=[0,.01,"&"],0!==d.I.length)){for(D=(N=(g=e[Z[0]](2,H[1],d),G=g.search(L$), +[]),H[0]);(S=O[38](4,l,"format",7,35,G,D,g))>=H[0];)N.push(g.substring(D,S)),D=Math.min(g[Z[1]](H[2],S)+1||G,G);for(m=(T=(T=(N.push(g.slice(D)),N.join("").replace(HS,b)),t$(T,"auth",d.VN(),"authuser",d.Y7||"0")),H[0]);m(Q|1)&&(l=void 0===l?{}:l,J=O[46](10,function(w,C,p){if((p= +["S",28,1],C=[1,"e",2],w.M)==C[0]){if(y=(k.l.P_(!1),k).I,k.I==C[p[2]]){w.M=C[2];return}return O[p[1]](54,w,(k.I=B,C[2]),k.l.n1())}(y==b?K[23](12,C[0],k,l):"c"!=y&&k[p[0]].then(function(z){return z.send("e")},E[10].bind(null,8)),w).M=0})),Z[0]))&&(this.l=this.I=this[Z[2]]=B),J},function(Q,B,b,k,l){return Q-(((l=[2,4,9],Q-l[1])^5)>=Q&&(Q-3^1)=Q&&(this.x=void 0!==B?B:0,this.y=void 0!==b?b:0),k},function(Q,B,b,k,l,y,d,G,n){if((Q>>((G=[7,1,4],Q-5<=Q&&(Q-8|G[1])< +Q)&&(t[6](40,b,k),b||v9?b||$L?(l=Math.trunc(Number(k)),Number.isSafeInteger(l)?n=String(l):(y=k.indexOf(B),-1!==y&&(k=k.substring(0,y)),b||mE?(t[44](79,32,k),d=X[48](83,WS,aM)):d=k,n=d)):n=E[38](15,".","0",k):n=k),G[1])&8)=Q&&(Q+5&41)>k[1]=Q&&(b.M||O[28](8,k[0]," ", +b),l=b.M[B]),l},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r){if(((Q-3<<(m=[46,2,0],m[1])>=Q&&(Q-m[1]|38)>1>=Q)if(Array.isArray(b))for(y=B;y>>m[2]:void 0:B)}return(Q^9)&11||(r=O[m[0]](9,function(g,D,J){J=[(D=[4,"could not contact reCAPTCHA.",5],43),"l",!1];switch(g.M){case 1:if(!y[J[1]])throw Error(D[1]);if(!y.I)return g.return(t[41](49,k));return O[g[J[1]]=k,28](53,g,D[0],y[J[1]]);case D[0]:t[G=g.I,33](24,0,g,3);break;case k:throw t[J[0]](17,g),Error(D[1]);case 3:return N={},T=(N[B]=y.M,N),g[J[1]]=D[2],O[28](56,g,l,G.send("r", +T,1E4));case l:return S=g.I,n=new L5(S),H=n.gU(),d=n.Cx(),y.M=W[11](17,n,k),y.M&&H!=k&&H!=b&&10!=H&&d?y.A=new jS(d):y.I=J[2],g.return(t[41](51,H,n.Ra()));case D[2]:throw t[J[0]](16,g),Error("challengeAccount request failed.");}})),r},function(Q,B,b,k,l,y,d,G){return(((Q^(d=["I",28,3],36))>>4>1=Q&&(y=l!=B?"="+encodeURIComponent(String(l)):"",G=a[36](d[1],"?",k+y,b)),2)>(Q^2)>>4&&1<=(Q|7)>>d[2]&&(sj.length?(l=sj.pop(),O[23](d[1],B,l,b),k=l): +k=new DM(B,void 0,void 0,b),this.M=k,this[d[0]]=-1,this.l=this.M.M,this.A=-1,a[13](16,b,this)),G},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J){return(Q&89)==((Q+8&61)<((((J=[26,1,34],Q-4)&13)==J[1]&&(this.M=B||P.document||document),(Q&78)==Q)&&(N=[0,"data-","HEAD"],m={timeout:1E4},T=m.document||document,H=t[44](16,y).toString(),g=t[33](J[2],"SCRIPT",new Xx(T)),d={x$:g,WL:void 0},S=new eS(Ej,d),r=B,G=m.timeout!=B?m.timeout:5E3,G>N[0]&&(r=window.setTimeout(function(Z,w){(e[Z=((w=["Timeout reached for loading script ", +!1,0],X)[w[2]](40,B,g,!0),new J$(1,w[0]+H)),13](16,w[1],S),t)[1](2,!0,w[1],Z,S)},G),d.WL=r),g.onload=g.onreadystatechange=function(Z){g[Z=[!1,"WT","readyState"],Z[2]]&&g[Z[2]]!=b&&"complete"!=g[Z[2]]||(X[0](41,B,g,m[Z[1]]||Z[0],r),S.yN(B))},g.onerror=function(Z,w){e[X[w=[13,12,43],0](w[2],B,g,!0,r),Z=new J$(0,"Error while loading script "+H),w[0]](w[1],!1,S),t[1](8,!0,!1,Z,S)},n=m.attributes||{},ZM(n,{type:"text/javascript",charset:"UTF-8"}),E[16](24,N[J[1]],"object",g,n),E[J[1]](J[1],l,k,g,y),e[33](9, +N[2],N[0],T).appendChild(g),D=S),Q)&&Q-5<=Q&&(this.M=B),Q)&&(b=new C$,B=a[J[0]](37,5,J[1],wd,b,K8),k=W[8](8,2,"05",B),D=a[39](14,k)),D},function(Q,B,b,k,l,y,d,G){if(G=["item",2,"elements"],!((Q|1)>>4))if(k.tagName==B)for(y=0,l=k[G[2]];k=l[G[0]](y);y++)X[40](G[1],"FORM",b,k);else 1==b&&k.blur(),k.disabled=b;if((Q-G[1]^30)>=Q&&(Q+G[1]&44)>1&((Q+4&63)=Q&&kb.call(this),11))&&25>Q-3&&(B.A.M["delete"](b),B.A.add(b,k)),d},function(Q, +B,b,k,l,y,d,G,n,S){if(((((Q<<1&15)==(S=["D",16,2],S[2])&&((k=wu.K()).M.apply(k,a[36](18,b[S[0]])),b[S[0]].length=B),Q+S[2]>>4)||(d=["blob:"," ",null],n=(G=String(P.location.href))&&y&&l?[l,K[7](S[2],S[1],B,b,20,e[12](17,d[0],"//",G),k||d[S[2]],y)].join(d[1]):null),Q-8)^8)>=Q&&(Q+6^28)>1)>=Q&&Q+7>>2>4&&5>(Q-8&14)){if(y=(T=[0,128,57343],!1),y=void 0===y?!1:y,zb){if(y&&/(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/.test(k))throw Error("Found an unpaired surrogate");l=(IM||(IM=new TextEncoder)).encode(k)}else{for(n= +(G=new (S=y,d=T[0],Uint8Array)(3*k.length),T[0]);nm)G[d++]=m>>b|192;else{if(55296<=m&&m<=T[2]){if(56319>=m&&n>18|B,G[d++]=N>>g[2]&63|T[1],d++]=N>>b&63|T[1],G[d++]=N&63|T[1];continue}else n--;if(S)throw Error("Found an unpaired surrogate");m=65533}G[d++]=m>>g[2]|224,G[d++]=m>>b&63|T[1]}G[d++]=m&63|T[1]}l=d===G.length?G:G.subarray(T[0],d)}r= +l}return r},function(Q,B,b,k,l,y,d,G,n,S,T){if(S=[4,3,"addEventListener"],(Q&108)==Q){if(l==S[1]&&k.I&&!k.F)for(G=y;G&&G.F;G=G.l)G.F=b;if(k.M)k.M.l=B,K[S[0]](23,2,l,d,k);else try{k.F?k.A.call(k.l):K[S[0]](27,2,l,d,k)}catch(N){xL.call(B,N)}W[22](17,100,qi,k)}return(Q-(1==((Q|24)==Q&&(n=new Map,G=W[11](1,"anchor"),d=W[11](2,k),y="recaptcha/"+(G.includes("enterprise")?"enterprise.js":"api.js"),n.set(y,B),n.set("recaptcha/releases/-QbJqHfGOUB8nuVRLvzFLVed",1),n.set(G,l),n.set(d,b),T=n),(Q^74)>>S[1])&& +(n=P.MessageChannel,"undefined"===typeof n&&"undefined"!==typeof window&&window.postMessage&&window[S[2]]&&!t[31](2,"Presto")&&(n=function(N,H,m,r,g,D,J,Z){this[((J=(D=(H=(m=((N=O[1](25,(r=[(Z=["port2","protocol","appendChild"],"IFRAME"),"callImmediate","port1"],r[0]),document),N.style.display="none",document.documentElement)[Z[2]](N),g=N.contentWindow,g.document),m.open(),m.close(),r[1]+Math.random()),g).location[Z[1]]==k?"*":g.location[Z[1]]+"//"+g.location.host,C5)(function(w){if((D==b||w.origin== +D)&&w.data==H)this.port1.onmessage()},this),g).addEventListener("message",J,l),this)[r[2]]={},Z[0]]={postMessage:function(){g.postMessage(H,D)}}}),"undefined"===typeof n||a[10](53,"MSIE")?T=function(N){P.setTimeout(N,0)}:(G=new n,y=d={},G.port1.onmessage=function(N){void 0!==d.next&&(d=d.next,N=d.E_,d.E_=B,N())},T=function(N){(y=(y.next={E_:N},y.next),G.port2).postMessage(0)})),5)|11)=Q&&(B.D4=b),T},function(Q,B,b,k,l,y){return((((y=[3,4,"b1"],Q)^53)>>y[1]||(B.didTimeout?this[y[2]](null): +this[y[2]](B)),Q+8)&38)=Q&&(l=document.body),2==Q-6>>y[0]&&(l=K[13](6,E[23](42,e[32](32,11),B),[E[43](31,b),E[43](61,k)])),l},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){if(Q-7<<(0<=(N=[30,1,77],Q-8>>4)&&10>(Q^19)&&(this.width=B,this.height=b),N)[1]=Q)W[15](N[2],b,k,B);if((Q|40)==((Q+(Q<<2&31||(d=new Date(k,l,y),0<=k&&k=Q&&Q+4>>2>4)||(l=void 0===l?0:l,d=K[12](5,null,O[40](20,B,b,k),l)),28<=(Q|6)&&11>(Q>>y[0]&12))&&(this[y[2]]=B[P.Symbol.iterator](), +this.I=b),(Q-y[0]^11)=Q&&(l=[18,45,10],d=l[y[1]]*k(b(),l[y[0]],l[0],21)+k(b(),l[y[0]],l[0],36)),d},function(Q,B,b,k,l,y,d,G,n,S,T){if(1>(S=[2,"I","getAttribute"],(Q|6)>>4)&&0<=Q-3>>3)W[15](77,b,k,B);return((Q-(23>Q-7&&11<=((Q^10)&15)&&(n=K[11](52,B,b),k=new b0(0,0),G=n?K[11](40,B,n):document,d=!Se||Number(Mi)>=B||E[48](27,a[3](32,G).M)?G.documentElement:G.body,b==d?T=k:(y=K[14](8,b),l=X[5](56,a[3](36,n).M),k.x=y.left+l.x,k.y=y.top+l.y,T=k)),8)|58)=Q&&(b.l&&E[S[0]](S[0], +null,b),b.B9=k,b[S[1]]=K[5](32,"keypress",b.B9,b,l),b.ey=K[5](29,"keydown",b.B9,b.kx,l,b),b.l=K[5](30,B,b.B9,b.ZE,l,b)),(Q|48)==Q)&&(d=k.Tk())&&(y=l[S[2]](b)||B,d!=y&&(d?l.setAttribute(b,d):l.removeAttribute(b))),T},function(Q,B,b,k,l,y,d,G,n,S,T){if(((Q|24)==(S=[1,5,2],Q)&&(B=[0,!0,"prepositional"],PM.call(this,VQ.width,VQ.height,B[S[2]],B[S[0]]),this.u=null,this.W=B[0],this.C=null,this.M=[],this.l=null),24>Q<>((((Q| +80)==Q&&(k=[0,8,"-"],b&2147483648?(O[15](3)?n=""+(BigInt(b|k[0])<>>k[0])):(d=K[S[0]](24,E[39](32,S[0],b,B)),G=d.next().value,l=d.next().value,n=k[S[2]]+e[S[0]](20,k[S[0]],l,G)),y=n):y=e[S[0]](19,k[S[0]],b,B),T=y),Q)+3^S[1])=Q&&(T=YL||(YL=new EP(null,Jj))),S)[2]&7)&&(T=new yH(function(N,H,m){0==(H=E[m=[5,22,33],m[0]](m[1],"img",document,b,B),H.length)?N():K[m[0]](m[2],"load",H[0],function(){N()})})),T},function(Q,B,b,k,l,y,d,G,n,S,T){if(23<=(T=[2,58,"M"],Q+1)&& +24>Q>>T[0]&&!cS)for(n=["+/=","+/","-_=","-_.","-_"],l=b,cS={},k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split("");5>l;l++)for(y=k.concat(n[l].split(B)),Uj[l]=y,G=b;G>((Q|(1==(q=["getAttribute",2,18],Q>>1&7)&&(PM.call(this,RM.width,RM.height,B||"imageselect"),this.ig=this.C=null,this.P9=1,this.l={Se:{je:null,element:null}},this.D=null,this.s8=void 0),40))==Q&&(this.M=null),q)[1]&15)&&(M=a[26](39,B,b,oM,k,l)),58))==Q){if(I=(K[q[2]](65,(l=["___grecaptcha_cfg",(k=void 0===(b=void 0===b?{}:b,k)?!0: +k,"data-callback"),0],B))&&1==B.nodeType||!K[q[2]](48,B)||(b=B,B=O[1](8,"DIV",document),X[44](9).appendChild(B),b[h$.MU()]="invisible"),a[29](59,1,B)),!I)throw Error("reCAPTCHA placeholder element must be an element or id");if((!b[n8.MU()]&&window[l[0]].badge&&window[l[0]].badge.length>l[q[1]]&&(b[n8.MU()]=window[l[0]].badge[l[q[1]]]),k)?(m=I,S=m[q[0]]("data-sitekey"),y=m[q[0]]("data-type"),r=m[q[0]]("data-theme"),z=m[q[0]]("data-size"),T=m[q[0]]("data-tabindex"),Z=m[q[0]]("data-bind"),n=m[q[0]]("data-preload"), +F=m[q[0]]("data-badge"),G=m[q[0]]("data-s"),J=m[q[0]]("data-pool"),g=m[q[0]]("data-content-binding"),x=m[q[0]]("data-action"),H={sitekey:S,type:y,theme:r,size:z,tabindex:T,bind:Z,preload:n,badge:F,s:G,pool:J,"content-binding":g,action:x},(w=m[q[0]](l[1]))&&(H.callback=w),(N=m[q[0]]("data-expired-callback"))&&(H["expired-callback"]=N),(A=m[q[0]]("data-error-callback"))&&(H["error-callback"]=A),(C=m[q[0]]("data-fast"))&&(H.fast="false"===C.toLowerCase()?!1:!!C),d=H,b&&ZM(d,b)):d=b,a[20](40,I))throw Error("reCAPTCHA has already been rendered in this element"); +if("BUTTON"==I.tagName||"INPUT"==I.tagName&&("submit"==I.type||"button"==I.type))d[f$.MU()]=I,D=O[1](27,"DIV",document),I.parentNode.insertBefore(D,I),I=D;if(0!==W[0](24,1,I).length)throw Error("reCAPTCHA placeholder element must be empty");if(!d||!K[q[2]](97,d))throw Error("Widget parameters should be an object");M=((p=new uO(d,I),window)[l[0]].clients[p.id]=p,p.id)}return M},function(Q,B,b,k,l,y,d,G,n){if(4==((4==(n=[15,27,13],(Q^n[1])&n[0])&&(G=O[46](n[2],function(S){return S.return(E[7](1,B,224, +k,b))})),Q+4)>>4||(l=["http","",443],"*"==b?G="*":(d=X[18](n[2],!0,l[1],new vS(b)),k=X[n[0]](10,null,d,l[1]),y=e[2](24,l[1],O[22](73,k,l[1]),X[20](36,1,B,b)),y.F!=B||("https"==y.M?W[n[1]](3,null,l[2],y):y.M==l[0]&&W[n[1]](5,null,80,y)),G=y.toString())),(Q^44)&n[0]))if(b="undefined"!=typeof Symbol&&Symbol.iterator&&B[Symbol.iterator])G=b.call(B);else if("number"==typeof B.length)G={next:W[1](3,0,B)};else throw Error(String(B)+" is not an iterable or ArrayLike");if(!((Q|4)&25)){if(b==B)k=b;else{if("number"!== +typeof b)throw Error("Value of float/double field must be a number, found "+typeof b+": "+b);k=b}G=k}return 23<=((Q^75)&29)&&2>(Q<<2&4)&&(this.I=[],this.M=[]),G},function(Q,B,b,k,l,y,d,G,n,S,T){return 2==((3==(Q+((S=[4294967296,1,40],Q+8)>>4||(this.M=0,this.A=null,this.l=new Qo,this.I=new Qo),2)&7)&&(k=b>>B,n=Math.floor((b-G)/S[0]),k&&(y=K[S[1]](S[2],E[39](2,S[1],n,G)),l=y.next().value,n=d=y.next().value,G=l),WS=G>>>B,aM=n>>>B),Q+7)&15)&&(T=null!==B&&b in B?B[b]:void 0),3==(Q>> +S[1]&7)&&B.getDate()!=b&&B.M.setUTCHours(B.M.getUTCHours()+(B.getDate()B;)if(n=T-b>>b,d[n][H[2]]>G[H[2]])d[T]=d[n],T=n;else break;d[T]=G}if(Q<<2>=H[1]&&5>Q-4)if(y=[!1,!0,")"],W[19](13,k[H[2]]))N=y[0];else{if(!(G=(l=(k[H[0]]=k[H[2]][H[2]],e[37](84,k[H[2]])),l)>>>b,d=l&7,0<=d&&5>=d))throw X[14](8,y[2],d,k[H[0]]);if(G=Q){if(bm())for(;B.lastChild;)B.removeChild(B.lastChild);B.innerHTML=t[41](2,b)}if(3==(Q|H[1])>>3)a:{if(W[33](24)&&"Silk"!==k){if(d=aR.brands.find(function(m){return m.brand===k}),!d||!d.version){N=NaN;break a}l=d.version.split(B)}else{if((y=E[32](25,"Silk",b,"9.0","Edg/",k),"")===y){N=NaN;break a}l=y.split(B)}N=0===l.length?NaN:Number(l[0])}return 10<=((Q|7)&15)&&18>(Q|H[1])&&(k=["-QbJqHfGOUB8nuVRLvzFLVed","pat", +1],NE.call(this,t[0](32,k[H[1]]),t[24](50,5,k5),"POST"),e[29](32,!0,this),W[8](16,2,k[0],B),b=a[36](25,2),W[8](24,k[2],b,B),this[H[2]]=B.J()),N},function(Q,B,b,k,l,y,d,G,n,S){if(((6>((n=["l","call",61],Q-4)&8)&&1<=Q+1>>4&&(b==B?l.A[n[1]](l[n[0]],k):l.I&&l.I[n[1]](l[n[0]],k)),Q+6)&3||13==B.keyCode&&a[45](69,!1,this),(Q&n[2])==Q)&&(l&&(d="string"===typeof l?l:O[35](55,k,l),l=y.F&&d?K[2](11,y.F,d)||B:null,d&&l&&(G=y.F,d in G&&delete G[d],W[5](16,b,l,y.P),l.ug(),l.I&&W[45](6,l.I),E[35](37,B,B,l))),!l))throw Error("Child is not in parent component"); +return S},function(Q,B,b,k,l,y,d,G,n,S){if((Q-6^2)<(Q>>(n=[!0,0,"error"],2)&11||(S=NI('Toque no centro dos objetos da imagem seguindo as instru\u00e7\u00f5es acima. Se n\u00e3o estiver claro ou se voc\u00ea preferir outro desafio, atualize a p\u00e1gina para ger\u00e1-lo. Saiba mais.')),Q)&&(Q-6^15)>=Q&&(l.M=!1,l.U&&(l.I=b,l.U.abort(),l.I=!1),l.A=k,l.l=B,t[45](51,n[0],n[2],l),K[46](2,null,l)),32>Q-5&&14<=Q>>1)if(G=[!1,null,0],l&&l.once)S= +t[33](9,G[2],b,B,k,l,y);else if(Array.isArray(B)){for(d=G[2];d=Q&&(b.M+=B,b.l+=k,k>b.I&&(b.I=k)),S},function(Q,B,b,k,l){return(Q+9^((l=["M","I",25],Q)<<1&3||(this[l[0]]=b,this[l[1]]=B),l[2]))>=Q&&Q+9>>1>2&6||(g=[],m=[],T=[1,"_"," "],r=[],(Array.isArray(d)?2:1)==T[0]?(g=[G,y],dF(m,function(Z){g.push(Z)}),J=E[41](D[2],l,B,g[D[1]](T[2]))):(H=[],dF(d,function(Z){r.push(Z.key),H.push(Z.value)}),S=Math.floor((new Date).getTime()/b),g=0==H.length?[S,G,y]:[H[D[1]](D[0]),S,G,y],dF(m,function(Z){g.push(Z)}),n=E[41](12,l,B,g[D[1]](T[2])),N=[S,n],0==r.length||N.push(r[D[1]](k)), +J=N[D[1]](T[1]))),J},function(Q,B,b,k,l,y,d,G,n,S){if(5>((((Q|1)>>(27>Q>>(n=[2,"getDate","placeholder"],1)&&8<=((Q|6)&13)&&(t[20](n[0],Gy,b)?G=e[36](32,B,b.pS()):(null==b?k="":(b instanceof im?y=e[36](3,B,b instanceof im&&b.constructor===im?b.M:"type_error:SafeStyle"):(b instanceof Hd?d=e[36](n[0],B,W[20](6,b)):(l=String(b),d=tq.test(l)?l:"zSoyz"),y=d),k=y),G=k),S=G),3)||(S=Array.prototype.map.call(b,function(T,N){return 1<(N=T.toString(16),N.length)?N:"0"+N}).join(B)),Q&60)==Q&&(y=[0,100,1],"number"=== +typeof B?(this.M=X[45](72,y[1],1900,B,b||y[0],k||y[n[0]]),K[n[0]](23,this,k||y[n[0]])):K[18](33,B)?(this.M=X[45](64,y[1],1900,B.getFullYear(),B.getMonth(),B[n[1]]()),K[n[0]](38,this,B[n[1]]())):(this.M=new Date(K[9](n[0])),l=this.M[n[1]](),this.M.setHours(y[0]),this.M.setMinutes(y[0]),this.M.setSeconds(y[0]),this.M.setMilliseconds(y[0]),K[n[0]](22,this,l))),Q<>1&11)){if((y=(k=["label-input-label",!0,""],b.O()),K)[17](27,null))b.O()[n[2]]!=b.l&&(b.O()[n[2]]=b.l);else e[3](n[0],"submit", +k[1],b);a[49](16,"label",y,b.l),W[36](38,k[n[0]],b)?(l=b.O(),K[33](49,k[0],l)):(b.S||b.jD||(l=b.O(),t[46](4,k[0],l)),K[17](26,null)||c$(b.u,B,b))}return S},function(Q,B,b,k,l,y,d,G,n){return 2==(Q+((Q<<((G=[0,5,"AG"],Q-6|39)>=Q&&(Q-2^8)=G[1]&&8>(Q-G[1]&16)&&(d=[500,"bubble",0],l&&y&&y.width==d[2]&&y.height==d[2]||(K[32](28,B,b,d[G[0]],"",k,l,y),t[12](28,k[G[2]]),l?(W[33](8,.9,d[1],k),k.S.focus(),k.l==d[1]&&(k[G[2]]=K[G[1]](30,"scroll",W[47](7),function(){return k.qU()}, +{passive:!0}))):k.F.focus(),k.Y=Date.now())),2)>>4||(n=Date.now()),Q)-4>>3&&(l.set(b,W[47](48)),n=X[15](12,null,new vS(W[11](2,k)),l.toString(),B).toString()),n},function(Q,B,b,k,l,y,d,G,n){if((Q&((Q+(G=["test",13,"pixelLeft"],8)&79)>=Q&&(Q-7|87)=Q&&(Q+2^12)>2=Q&&(n=K[G[1]](7,E[23](32,e[32](26,B),b),[E[43](29,k)])),n},function(Q,B,b,k,l,y,d,G,n,S,T){if(2==(Q+(3==(Q>>(((Q^87)>>(T=["rc-imageselect-target","I","clients"],4)||(l=[!0,"rc-imageselect-carousel-instructions",!1],t[46](5,"rc-imageselect-carousel-leaving-left", +a[20](1,B,l[2],O[12](87,T[0],k))),k.W>=k.M.length||(y=k.yR(k.M[k.W]),k.W+=B,d=k.HQ[k.W],a[16](32,600,l[0],null,B,y,k).then(function(N,H){((N=O[H=[3,44,8],20](6,"rc-imageselect-desc-wrapper"),e)[39](38,N),e[38](17,N,E[0].bind(null,24),{label:E[H[0]](6,d,B),Ob:"multicaptcha",bm:E[H[0]](H[2],d,7)}),a)[9](9,b,N,X[7](H[2],"error",N.innerHTML.replace(".",b))),E[H[1]](H[2],0,k)}),t[37](47,k,"Pular"),K[33](1,"rc-imageselect-carousel-instructions-hidden",O[20](3,l[1])))),Q<<1&6||(S=b.nodeType==B?b:b.ownerDocument|| +b.document),Q&91)==Q&&(this.M=new Map,this[T[1]]=B||null),2)&7)&&(S=O[46](45,function(N,H,m){m=(H=[null,1,4],[0,59,"M"]);switch(N[m[2]]){case H[1]:d=H[m[0]],G=m[0];case k:if(!(Gm[0])){N[m[2]]=5;break}return O[28](53,N,5,a[44](1,1E3,H[m[0]]));case 5:return N.l=7,O[28](m[1],N,9,X[39](2,H[m[0]],l,"",B,y));case 9:return N.return(N.I);case 7:d=n=t[43](16,N);case b:N[m[2]]=k,G++;break;case H[2]:throw d;}})),3)&11))a:{for(b=B;b>(m=[19,16,47],2)&15)&&(r=b!=B?b:k),Q))W[15](45,b,k,B);return((Q|(Q<<1&15||(G=k[b],d=[0,"number","data-"],y=O[1](11,String(k[d[0]]),l),G&&("string"===typeof G?y.className=G:Array.isArray(G)?y.className=G.join(" "):E[m[1]](25,d[2],"object",y,G)),k.length>B&&mp(y,d[0],d[1],l,"string",k,!1),r=y),24))==Q&&(l=[2,3,28],n=k(b(),4,43),H=new Wd,T=k(n,8),G=K[m[2]](48,T,H,1),d=k(n,l[2]), +y=K[m[2]](58,d,G,l[0]),N=k(n,m[0]),S=K[m[2]](52,N,y,l[1]),r=a[39](12,S)),2==(Q>>2&14))&&(l=b[aN],l||(y=a[48](1,!0,0,b),d=O[1](60,0,b),l=(k=d.M)?function(g,D){return k(g,D,d)}:function(g,D,J,Z,w,C,p,z,I,x,A,F,q,M,c,R){for(c=[0,1,(R=[2,"M","push"],3)];K[3](1,c[1],c[R[0]],D)&&D.I!=B;)if(J=D.A,x=d[J],x||(w=d.pR)&&(C=w[J])&&(x=d[J]=e[35](7,4,c[1],c[0],C)),!x||!x(D,g,J))if(F=D,M=F.l,E[21](5,c[1],F),z=F,z.Hq?q=void 0:(I=z[R[1]][R[1]]-M,z[R[1]][R[1]]=M,q=E[29](38," > ",c[0],z[R[1]],I)),Z=g,p=q)rF||(rF=Symbol()), +(A=Z[rF])?A[R[2]](p):Z[rF]=[p];y===gF||y===js||y.sD||(g[Uo||(Uo=Symbol())]=y)},b[aN]=l),r=l),r},function(Q,B,b,k,l){if(((4<=(l=[11,9,5],Q<<2&12)&&Q>>1=Q&&(Q-6|53)Q-l[1]&&(k=new sf(B,b)),k},function(Q,B,b,k){if((Q&107)==(Q+(k=[9,3,"getBoundingClientRect"],k)[0]&k[1]||(b=Se&&"number"===typeof B.timeout&&void 0!==B.ontimeout),Q))try{b=B[k[2]]()}catch(l){b={left:0,top:0,right:0,bottom:0}}return b}, +function(Q,B,b,k,l,y,d,G,n,S){return(Q&(Q-((Q^38)&((n=["g-recaptcha-bubble-arrow",4,63],(Q-3|5)>=Q&&(Q-3^28)>n[1]||(l=b.A,k=b.l,S=new b0(k+ +B*(b.M-k),l+B*(b.I-l))),91))==Q&&(S=K[13](13,E[23](32,e[32](27,22),B),[E[43](60,b),E[43](n[2],k)])),S},function(Q,B,b,k,l,y,d,G){return Q<<((Q|((Q+4&(d=["fill",(Q+6>>4||(this.blockSize=-1),1),"canvas"],12)||Dm.call(this,d[2]),Q>>d[1]&7)==d[1]&&(this.M=[]),24))==Q&&(b=1200,b=void 0===b?20:b,B=void 0===B?"A":B,this.M=(new Uint8Array(2100))[d[0]](0),this.l=B,this.I=b),d[1])&23||(k%=1E6,y=Math.ceil(Math.random()*B),G=[y].concat(a[36](81,l.map(function(n,S){return(n+l.length+(k+y)*(S+y))%b})))),G},function(Q, +B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z,w,C,p,z,I,x,A,F,q,M,c,R,u,B9,yi,dS,Tu,Eo,v,Oo,lk,$C,U){if(((((U=[1,0,"NU"],2)==(Q>>U[0]&30)&&($C=W[8](32,B,k,b)),2)==(Q<=G){Object.assign(b[b.length-U[0]]={},N);break}w=!0}for(Oo=(p=(z=W[25](3,(F=(m=(d=b,!l),Xq(k.L)), +A[U[1]]),F),+!!(F&512)-U[0]),B);OoB;Tu--){if(!(v=b[dS=Tu-U[0],dS],v==A[2]||!es&&t[U[0]](15,A[U[0]],dS-C,n,v)||!Ef&&X[36](14,v)&&0===v.size))break;B9=!0}q||B9?(w?c=b:c=Array.prototype.slice.call(b,B,Tu),g=c,w&&(g.length=Tu),x&&g.push(x),$C=g):$C=b}else $C=b}return(((Q^27)>>3||(Jq==B&&(Jq="placeholder"in O[U[0]](9,"INPUT",document)),$C=Jq),Q)&13)==Q&&(k=[0,64,"Int32Array"],this.blockSize=-1,this.blockSize=k[U[0]],this.l=P.Uint8Array?new Uint8Array(this.blockSize): +Array(this.blockSize),this.S=B,this.F=b,this.M=[],this.A=k[U[1]],this.I=k[U[1]],this.P=P[k[2]]?new Int32Array(64):Array(k[U[0]]),void 0===Zm&&(P[k[2]]?Zm=new Int32Array(CU):Zm=CU),this.reset()),$C},function(Q,B,b,k,l,y,d,G,n){if(2==(((Q&((8>((n=[10,"M",1],Q<<2)&24)&&-68<=Q-4&&(b=typeof B,G="object"==b&&null!=B||"function"==b),11>(Q^45)&&8<=(Q+9&23))&&27==B.keyCode&&("keydown"==B.type?this.JY=this.O().value:"keypress"==B.type?this.O().value=this.JY:"keyup"==B.type&&(this.JY=null),B.preventDefault()), +27))==Q&&(d=new Om,y=W[15](13,d,l[n[1]],n[2]),l[n[1]]>B&&e[25](14,y,b,K[n[2]](36,null,l.l/l[n[1]])),k>B&&e[25](13,y,3,K[n[2]](68,null,l.l/k)),l.I>B&&W[15](61,y,Math.ceil(l.I),4),G=y),(Q|88)==Q)&&(G=(k=E[37](n[0],B,b))?new ActiveXObject(k):new XMLHttpRequest),Q>>n[2]&15))a[13](75,null,0,a[36](38,b),k,B);return G},function(Q,B,b,k,l,y,d,G,n){if(n=[7,"M",93],!(Q<<1&n[0])){if(ac)l=e[2](4,59,173,B,91,b);else{if(wF&&m$)a:switch(b){case n[2]:k=91;break a;default:k=b}else k=b;l=k}G=l}if(!((Q^2)&3))a:{for(k= +(y=B[l=(b=0,B).I,n[1]],y+10);y=Q&&Q+N[0]>>N[0]>4||(l=[2,3,"i"],G=new KU,S=W[36](65,4614)(27,7,12,37,1),n=W[14](43,Mv.get(),pU,9),W[38](19,X[38](40,"INPUT"),function(H,m,r,g,D,J,Z,w,C,p,z){return W[C=[(z=["",31,36],2),null,"i"],z[2]](35,455)(H.name+(H.getAttribute(S[4]())||z[0]),S[0](),C[2])&&(D=W[z[2]](35, +8335)(W[z[2]](65,3631)(H).replace(/\s/g,z[0])),D())?(r=D().length,O[z[1]](16,O[9].bind(null,16),G,r,C[0]),n&&a[2](13,n,C[0])&&(Z=a[2](16,n,C[0]),J=D().substr(0,Aq[1])+D().substr(D().length-Aq[0]),p=O[46](22).call(parseFloat(Z+J)+Z,30),W[8](32,5,p,G),w=((m=H.parentElement)==C[1]?0:(g=m.lastChild)==C[1]?0:g.src)?H.parentElement.lastChild.className:"",W[8](24,7,w,G)),!0):!1}),y=W[36](35,8325)(k(X[44](19),44).slice(0,5E4)),d=W[36](66,2742)(W[36](67,6820)(y(),S[l[1]](),l[N[0]]).replace(/\D/g,"").slice(-4)), +d()&&n&&a[N[0]](18,n,l[0])&&E[39](4,6,G,W[43](1,0,35,d,a[N[0]](14,n,l[0]))),T=a[39](13,O[37](48,4,K[17](6,l[1],G,W[36](35,6154)(y(),S[l[0]]()+S[1](),l[N[0]],10)),W[36](35,4362)(y(),S[1]())))),T},function(Q,B,b,k,l,y,d,G){return(Q|((Q|88)==((Q-((Q+((G=["W","M",2],(Q|G[2])&14)==G[2]&&(uk?y==k?d=y:t[6](10,B,y)&&("string"===typeof y?d=v9?O[16](9,".",b,y,B):y:"number"===typeof y&&(d=W[0](65,B,l,y))):d=y),G[2])^16)>=Q&&(Q+4^15)=Q&&(Q+4^23)>2&3)==((T=[1,38,"L"],2>((Q|5)&3)&&-69<=Q+5)&&(n=[0,128,1],d=b instanceof Pd?b[T[2]]:Array.isArray(b)?e[15](70, +96,l[n[0]],b,l[n[2]]):void 0,null!=d&&(G=e[4](T[0],2,B,k),y(d,B),K[T[1]](23,n[T[0]],G,B))),T[0])&&(d=!!(l&32),y=b||l&B?K[T[1]].bind(null,74):X[T[0]].bind(null,32),G=e[26](6,512,T[0],256,l,function(N){return e[10](9,N,d,y)},k),uP(G,32|(b?2:0)),S=G),S},function(Q,B,b,k,l,y,d,G){if((Q-8^16)>=(G=[34,46,4],Q)&&(Q+1&42)>G[2]))O[25](5,B,function(n,S){this.add(S,n)},b);return d},function(Q,B,b,k,l,y,d){if((Q-(d=[4,10,100],d[0])^d[0])=Q){for(l=(b=new Qo,O)[49](1,!1,B(),function(G,n){return("INPUT"==(n=["TEXTAREA","",224],G.tagName)||G.tagName==n[0])&&W[36](66,n[2])(G)!=n[1]}),k=0;k(Q^40)>>5){for(;B=O[15](d[1],null);){try{B.I.call(B.M)}catch(G){E[d[1]](16,G)}W[22](16,d[2],Vo, +B)}FZ=!1}if(1==(Q>>1&5))W[15](13,b,k,B);return y},function(Q,B,b,k,l){return(Q>>(l=[70,1,"N"],Q+3>>3==l[1]&&(t[39](26,B),b=W[49](18,B,b),k=B.M.has(b)),l[1])&5||(b.S&&(W[45](21,b.S),b.S=B),b.M&&(b.l=B,P.clearTimeout(b[l[2]]),b[l[2]]=B,K[10](47,b),W[45](23,b.M),b.M=B)),Q+3)&13||!(null==B||"string"===typeof B||O[13](l[0],null,B)||B instanceof EP)||(k=B),k},function(Q,B,b,k,l,y,d,G){return Q-9<<2<((Q|(G=[10,!0,"R"],32))==Q&&(y=[0,null,3],l.M==y[0]&&(l===k&&(b=y[2],k=new TypeError("Promise cannot resolve to itself")), +l.M=1,W[21](25,y[1],G[1],l,l.C,l.B,k)||(l.l=y[1],l[G[2]]=k,l.M=b,t[17](G[0],G[1],l),b!=y[2]||k instanceof Y5||t[G[0]](72,B,y[1],k,l)))),Q)&&(Q+3^15)>=Q&&L.call(this,B),d},function(Q,B,b,k,l,y,d,G){return((1==(d=[62,45,34],2==(Q^51)>>3&&(b=["rc-anchor-checkbox-holder",'">
")),Q+6>>3)&&(k=b,y=(l=cd(8,B))?l.createHTML(k):k,G=new Uy(y,Uf)),Q)|88)==Q&&(k=b.match(oN),hq&&0<=["http","https","ws","wss","ftp"].indexOf(k[B])&&hq(b),G=k), +2==((Q^d[0])&15)&&sy.call(this,150,7),(Q+6^31)=Q&&L.call(this,B),G},function(Q,B,b,k,l,y){return((Q|((((Q-5|76)<(y=["Chromium","Silk",33],Q)&&(Q+2^14)>=Q&&(k=typeof b,l="object"==k&&b||"function"==k?B+O[y[2]](7,b):k.slice(0,1)+b),1==((Q^55)&15)&&(this.M=B),Q)|72)==Q&&(l=W[y[2]](30)?E[10](47,y[0]):(t[31](7,B)||t[31](9,"CriOS"))&&!e[19](58,"Edge")||t[31](12,y[1])),24))==Q&&L.call(this,B),Q&57)==Q&&L.call(this,B),l},function(Q,B,b,k,l,y,d,G,n,S){if((Q&105)==(((Q+(S=[5,46,'" title="'], +1)&58)>=Q&&(Q-9|25)')),14<=(Q<<1&15)&&(Q>>2&12)=Q&&(k=B.C1,n=b?function(T,N,H){return k(T,N,H,b)}:k),Q))a:{for(y in k)if(l.call(void 0,k[y],y,k)){n=b;break a}n=B}return(Q^89)>>4||(n=X[S[0]](57,document).y),n},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g){if(1==((g=[31,7,11],Q|40)==Q&&(tO.call(this),W[39](1,"click",!1,b,B,this),W[39](5,"submit",!1,b,B,this)),Q^56)>>3){if(Array.isArray(k))for(T=0;T>4)||(this.I=B>>>0,this.M=b>>>0),Q)&&k!=B&&(X[35](5,l,0,y),"number"===typeof k?(d=y.M,K[2](25,0,k),E[g[2]](13,b, +WS,aM,d)):(G=K[10](1,32,k),E[g[2]](12,b,G.I,G.M,y.M))),r},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z){if(3==((Q|(20>(Z=[7,4,64],Q)+9&&2<=(Q>>1&15)&&(B=void 0===B?{id:null,timeout:null}:B,n=this,J=O[46](40,function(w,C,p){p=[5E3,(C=[10,2,""],8),28];switch(w.M){case 1:return O[p[2]](56,w,C[1],E[18](57,"b","c"));case C[1]:return T=!1,S=w.I,l=!1,N=xC.K(),g=!O[2](67,p[1],36,N),k=[],g&&(k=[um,vd,Ql]),O[p[2]](59,w,3,n.PQ.send("o",new Bx(a[2](17,W[14](75,N.get(),pU,9),1),E[23](57,C[0],0,X[4](p[1],C[2], +1)),k,n.M.W,n.qU)));case 3:if((H=w.I,B.id)&&(!S||E[3](9,S,7)!=B.id))return w.return();return(r=(w.l=((null==(S||(S=new bq,l=!0),B.id)&&(B.id=O[43](25),W[p[1]](48,7,B.id,S),1!=a[2](15,S,4)&&(W[48](32,5,S,(a[2](15,S,5)||0)+1),T=!0),X[47](3,4,S,0)),t)[39](63,1,S,(a[2](19,S,1)||0)+1),K[12](81,C[1],S,Math.floor((a[2](14,S,C[1])||0)+(B.timeout||0))),X[47](p[1],4,S,(a[2](17,S,4)||0)+1),4),new kl(H.q9)),O)[p[2]](54,w,6,K[1](79,C[2],E[3](7,r,1),a[2](12,r,C[1])));case 6:return y=w.I,y=y.replace(/"/g,C[2]), +W[39](12,S,6,K[39].bind(null,p[1])).includes(y)||O[31](16,t[25].bind(null,25),S,y,6),m=new kl(H.Aw),O[p[2]](58,w,7,K[1](15,C[2],E[3](p[1],m,1),a[2](15,m,C[1])));case 7:if(!(X[45](1,(G=w.I,p[1]),S,+G+(a[2](13,S,p[1])||0)),g)||!H.hr){w.M=p[1];break}return D=new kl(H.hr),O[p[2]](54,w,9,K[1](47,C[2],E[3](4,D,1),a[2](12,D,C[1])));case 9:b=w.I,b=b.replace(/"/g,C[2]),e[9](2,C[0],S,e[14](1,1,0,W[14](27,S,rS,C[0]),kX(b),l,T));case p[1]:t[33](21,0,w,5);break;case 4:t[43](64,w);case 5:return O[p[2]](56,w,C[0], +E[p[2]](24,"b","c",0,1,S));case C[0]:B.timeout=(1+Math.random())*p[0]*a[2](19,S,4),d=t[35](89,B.timeout+500),c$(function(){return n.Co(B,a[17](40,0,function(){return"ee"},d))},B.timeout),w.M=0}})),Z)[2])==Q&&(k=jH(b),1!==(k&B)&&(Object.isFrozen(b)&&(b=W[32](34,b)),so(b,k|B))),(Q|Z[0])>>3))t[5](Z[1],b.O(),B,"rc-response-input-field-error");return 2==(Q|2)>>3&&(this.M=b,this.I=B),J},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){return 0<=(Q|((Q&(((H=["N","M",30],Q)&39)==Q&&(this.A=l,this.F=B,this.l=y,this[H[1]]= +b,this.I=k),(Q&92)==Q&&(S=["top",1,"0px"],T="visible"==X[11](17,l,b,y[H[1]]),O[47](19,y[H[1]],{visibility:d?"visible":"hidden",opacity:d?"1":"0",transition:d?"visibility 0s linear 0s, opacity 0.3s linear":"visibility 0s linear 0.3s, opacity 0.3s linear"}),T&&!d?y.yR=c$(function(){O[47](22,this.M,"top","-10000px")},k,y):d&&(P.clearTimeout(y.yR),O[47](26,y[H[1]],S[0],S[2])),G&&(n=W[47](9).innerHeight,E[H[2]](4,B,E[39](14,S[1],y),Math.min(G.width,W[47](8).innerWidth),Math.min(G.height,n)),E[H[2]](64, +B,W[43](34,S[1],E[39](15,S[1],y)),G.width,G.height),G.height>n&&d&&O[47](24,E[39](22,S[1],y),{"overflow-y":"auto"}))),58))==Q&&(b.U&&b.D&&(b.U.ontimeout=B),b[H[0]]&&(P.clearTimeout(b[H[0]]),b[H[0]]=B)),6))>>3&&17>Q-5&&(this[H[1]]=B),N},function(Q,B,b,k,l,y){return(Q<<1&(1==(Q>>2&(l=[11,3,13],l)[0])&&(y=B instanceof lq?!!B.pS():!!B),l)[2]||(b.classList?b.classList.remove(B):e[5](14,b,B)&&X[29](36,"class",Array.prototype.filter.call(e[6](l[2],b),function(d){return d!=B}).join(" "),b)),(Q^41)>>l[1])|| +(k=new b,k.KS=function(){return B},y=k),y},function(Q,B,b,k,l,y,d,G,n){if((n=[48,1,4],Q+5&49)>=Q&&Q+7>>n[1]>((Q|n[0])==Q&&(G=B+Math.random()*(b-B)),n[1])&7||(G=O[46](44,function(S,T,N,H,m,r,g,D,J){return(N=(H=(r=(J=[16,0,(m=(T=S.return,["","HF",3]),48)],new yl),K[47](49,y.F,r,l)),D=W[8](8,k,"-QbJqHfGOUB8nuVRLvzFLVed",H),W[8](J[0],B,m[J[1]]+d,D)),g=W[8](J[2],m[2],t[11](7), +N),T).call(S,t[27](49,m[1],m[J[1]],b,m[2],a[39](14,g),X[4](36,d6,y.M)||W[47](J[2])))})),Q-n[1]>>n[2]||(G=K[45](55,B,function(S,T,N){return(T=(N=function(H,m){return(-1!=(m=["indexOf","slice","replace"],H)[m[0]](l)&&(H=H[m[1]](H[m[0]](l))),H)[m[2]](/\s+/g,b)[m[2]](/\n/g,k).trim()},S=N(k+y),N)(k+d),S)==T})),G},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(1==((N=[6,"KS","JG"],Q-9)&3)){for(y=(d=(k=[(l=b[N[1]](),l)],n=b[N[1]](),n!=l&&k.push(n),[]),B)[N[2]];y;)S=y&-y,d.push(X[36](3,S,b)),y&=~S;T=((G=(k.push.apply(k, +d),B.C))&&k.push.apply(k,G),k)}return 14>(Q|N[0])&&8<=(Q^38)&&(this.L=e[15](68,96,b,B,k)),T},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m){if(2==((Q&121)==(1==(Q|(m=["add",14,49],7))>>3&&(this.I=B,this.tw=b,this.M=k),Q)&&(H=W[8](24,B,"-QbJqHfGOUB8nuVRLvzFLVed",b)),Q-5&m[1])){for(T=(N=W[32](98,(n=(S=d||y?jH(b):0,d)?!!(S&32):void 0,b)),B);T>1&(T=["call",4,"keyCode"],7))&&B.A.push(t[14](37,function(N,H){return!!N||!!H},B),B.ig,B.mt,B.j8,B.H_),1<=(Q^27)>>T[1])&&8>((Q^11)&8)&&(d=Gl[k],d||(d=l=t[13](33,k),void 0===b.style[l]&&(y=(m$?"Webkit":ac?"Moz":Se?"ms":null)+K[38](24,B,l),void 0!==b.style[y]&&(d=y)),Gl[k]=d),S=d),60))==Q)a:if(n=[40,0,39],y[T[2]]==B||y[T[2]]==n[2]||y[T[2]]==b||y[T[2]]==n[0]||9==y[T[2]])if(d=[],9!=y[T[2]]){if((G=(Array.prototype.forEach[T[0]](X[10](2,"TABLE"),function(N, +H){"none"!==W[31]((H=[2,"display","."],H[0]),N,H[1])&&dF(a[8](H[0],H[2],"rc-imageselect-tile",N),function(m){d.push(m)})}),d.length-1),k.s8>=n[1])&&d[k.s8]==t[21](26,null,document))switch(G=k.s8,y[T[2]]){case B:G--;break;case b:G-=l;break;case n[2]:G++;break;case n[0]:G+=l;break;default:S=void 0;break a}G>=n[1]&&G=d.length&&W[7](23,document,"recaptcha-verify-button").focus(),y.preventDefault(),y.M()}return S},function(Q,B,b,k,l,y,d,G){if(4==((Q|((d=[15,"push",1],(Q&70)==Q)&& +(b.__closure__error__context__984382||(b.__closure__error__context__984382={}),b.__closure__error__context__984382.severity=B),24))==Q&&(G=b.replace(RegExp("(^|[\\s]+)([a-z])",B),function(n,S,T){return S+T.toUpperCase()})),Q-3&d[0])){for(l=(y=b.pop(),k.I+k.M.length()-y);127>>=7,k.I++;b[d[1]](l),k.I++}return(17>Q-5&&3<=(Q|d[2])&&(G=new QQ(B.height,B.width)),Q|72)==Q&&so(b,(B|34)&-14557),G},function(Q,B,b,k,l,y){return(y=((Q&105)==Q&&(l=Fx?null==B||"string"===typeof B?B:void 0: +B),[18,2,25]),28>Q-1&&17<=Q+7)&&(l=O[y[2]](3,B,k,y[1],O[9].bind(null,y[0]),b)),l},function(Q,B,b,k,l,y,d,G){if((((Q-(d=["byteLength","constructor",2],4)|9)=Q&&(B.M(),this.isEnabled()&&3!=this.M&&!B.target.href&&(b=!this.X8(),this.dispatchEvent(b?"before_checked":"before_unchecked")&&(B.preventDefault(),this.lg(b)))),(Q^76)>>4=Q&&(Q-5^15)l?6E4:174E4,y)),S)[1]]=0})),G},function(Q,B,b,k,l,y,d,G,n,S,T){if((Q&((Q-8^25)>=(4==Q+5>>(S=[3,2,"M"],4)&&(k=B.L,T=1===e[26](16,null,Xq(k),k,b)?1:-1),Q)&&(Q-5|74)>4||(l=k.O?k.O():k)&&(b?K[42].bind(null,16):E[36].bind(null,12))(l,[B]),52))=Q&&(y=b=O[22](G[1],b),l=(k=cd(8,B))?k.createScriptURL(y):y,d=new n9(l,S3)),Q)<<2&15))if(B.classList)Array[G[0]].forEach.call(b,function(n){t[46](4,n,B)});else{for(y in Array[G[0]].forEach.call(e[G[1]](33,(l={},B)),function(n){l[n]=!0}),Array[G[0]].forEach.call(b,function(n){l[n]=!0}),k="",l)k+=0>(2==((N=[33,"Verifique seu n\u00famero de telefone",3],18<=(Q+5&30)&&32>Q+9)&&(H=""+Array.from(tj.keys())),Q<<1&31)&&(d=B.identifier,l=B.V6,k=["rc-2fa-header-override","rc-2fa-container",'">'],G=B.MV,n=B.uv,S='
Para confirmar sua identidade, enviamos um c\u00f3digo de verifica\u00e7\u00e3o para o n\u00famero "+W[13](8,d)+".

Insira o c\u00f3digo abaixo. Ele tem validade de "+W[13](9,l)+" minutos.

",S+=b):(y="

Para confirmar sua identidade, enviamos um c\u00f3digo de verifica\u00e7\u00e3o para o e-mail "+ +W[13](9,d)+".

Insira o c\u00f3digo abaixo. Ele tem validade de "+W[13](11,l)+" minutos.

",W[13](8,d),W[13](N[2],l),S+=y),S+='
',H=NI(S)),2==Q-5>>N[2]&&b.O()&&t[5](9,b.O(),B,k),N[2]))){a:{if(G=(T=B(b||l0,k),l||a[N[2]](32)),T&&T.M?n=T.M():(n=t[N[0]](32,"DIV",G),S=a[0](21,"zSoyz",T),K[N[2]](17,n,S)),1==n.childNodes.length&&(d=n.firstChild,1==d.nodeType)){y=d;break a}y=n}H=y}return 2==((Q^64)&7)&&X[29](31, +b,t[26](38,1,k))&&(y=X[2](1,10,k),t[14](4,l,y,B)),H},function(Q,B,b,k,l,y,d,G,n,S,T,N,H){return 1==Q-9>>((2==(Q<<1&(N=[0,15,16],N)[1])&&(H=(l=k(b(),31))?l.length+","+k(l,N[1]).length:"-1,-1"),(Q&28)==Q)&&(k=W[36](67,B),l=new Tl(new Nu(b)),L9&&k.prototype&&L9(l,k.prototype),H=l),3)&&(T=new Hx(k,G,l,b.X,function(m){return X[9](29,8,B,b.YU,m)}),n&&E[5](1,n,T),d&&T.vq(d),y&&e[36](7,!0,T,y),S&&E[38](12,!1,!0,N[2],T),t[46](47,N[0],b,T),H=T),H},function(Q,B,b,k,l,y,d,G,n){if((Q+(15>Q>>(n=["isArray",1,6], +n[1])&&12<=(Q+n[2]&15)&&(y=[29,40,4],l=k(b(),y[2],y[0],y[n[1]]),G=0=Q&&(Q-7|39)(Q^54))try{G=b()}catch(S){G=B}if((Q|40)==Q)if(k==B||""==k)G=new l;else{if(!(y=JSON.parse(k),Array[n[0]](y)))throw Error(void 0);G=(uP(y,b), +X)[26](28,l,y)}return 4==(Q|n[1])>>4&&(t[34](n[2],B.M),K[19](18,B.M),t[34](18,B.M),G=B.u()),G},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(((N=[59,1,"U"],(Q|40)==Q)&&(S=t6,n=function(H,m){return O[46](46,function(r,g){return 1==(g=[2,45,"M"],r)[g[2]]?O[28](56,r,g[0],d(m,H)):r.return({Se:r.I,H6:O[g[0]](g[1],B,1,m)})})},G=new td,G.I=function(H,m){return O[46](8,function(r,g,D){g=[2,"number",'"'],D=[null,3,"A"];switch(r.M){case 1:if(0==(m=(r.l=g[0],D[0]),G.M).fo()){r.M=B;break}return O[28](57,r,b,a[17](22, +0,y,S));case b:if(m=r.I,m!=D[0])return"string"!=typeof m||m.includes(g[2])||m.includes(k)?typeof m==g[1]?m=""+m:m instanceof Oq?(m=m.M,G[D[2]]=l):m=e[31](D[1],0,function(J){return J.stringify(m)}):m=g[2]+m+g[2],r.return(n(H,m));case B:t[33](19,0,r,D[1]);break;case g[0]:t[43](65,r),G.l=l;case D[1]:return r.return(O[21](42,H))}})},G.M=t[35](91,200),T=G),Q&74)==Q&&b[N[2]]){(b.u=(b[(y=b[(K[32](40,B,b),l=b.u[0]?function(){}:null,N)[2]],N)[2]]=B,B),k)||b.dispatchEvent("ready");try{y.onreadystatechange= +l}catch(H){}}return(((Q>>2&15)==N[1]&&(T=K[13](6,E[23](40,e[32](25,B),b),[E[43](N[0],k),E[43](27,l)])),Q)|48)==Q&&(T=function(H,m,r,g,D,J,Z,w,C){C=[11,"A",17];a:{D=($X.length?(Z=$X.pop(),a[13](C[2],m,Z),O[23](27,H,Z.M,m),w=Z):w=new mu(m,H),w);try{g=(J=new l,J).L,K[12](C[0],b,k)(g,D),Uo&&delete g[Uo],r=J;break a}finally{D.M.clear(),D.I=-1,D[C[1]]=-1,$X.length>(Q-5>>(d=[34,63,15],3)||(K[17](31,null)||(K[30](50,this.M, +this.O(),"click",this.xB),this.JY=null),this.jD=!1,K[8](17,10,this)),3)||(Dc.call(this),this.I=k,this.M=B,this.A=b||0,this.l=C5(this.gP,this)),Q^d[2])&&2>(Q+5&24)&&(this.l=B,this.F=l,this.M=k,this.I=y,this.A=b),4==((Q^18)&6))&&(b=['">
')),Q)|48)==Q&&(G=e[25](10,b,k,t[29](1,".",B))),G},function(Q,B,b,k,l,y,d,G,n,S){return(Q| +((((n=[0,9582,13],5)<=Q+9&&(Q|8)(Q^76))&&12<=(Q|3)&&(S=t[11](73,n[0],function(){return W[47](7).frames})),(Q+1^2)>=Q)&&(Q+7&43)>d[2])&&(Q>>d[0]&16)=Q&&(G=NI('Digite seu melhor palpite a respeito do texto exibido. Para receber um novo desafio, clique no \u00edcone "Atualizar". Saiba mais.')),Q)){for(y=(l=K[d[0]](88,k.F),l.next());!y.done;y=l.next())E[10](24,B,y.value,k);E[10](26,B,(k.F.length=B,{um:0,o_:b,LZ:2,Xk:0,BL:null}),k)}return G}]}(),t=function(){return[function(Q, +B,b,k,l,y,d,G,n,S,T,N,H,m){if(!(Q+(Q>>2&(H=[11,"M",3],7)||(m=(new vS(W[H[0]](H[2],B))).A),H)[2]&15))if(S=l.R[H[1]][String(k)]){for(d=(S=(N=!0,S.concat()),B);d>1&H[0])==H[2]&&(G=d.L,T=Xq(G),n=a[49](87,b,T,l,G,k),S=X[29](41,B,y,!1,n,T),S!==n&&null!=S&&X[9](14,S,G,l,T,k),m=S),Q-9&7)){for(;127>>=B;k[H[1]].push(b)}return m}, +function(Q,B,b,k,l,y,d,G){return(Q&(((2==((d=["A","hasOwnProperty",!0],Q)+7&3)&&(!Array.isArray(l)||l.length?G=B:(y=jH(l),y&1?G=d[2]:k&&(Array.isArray(k)?k.includes(b):k.has(b))?(so(l,y|1),G=d[2]):G=B)),Q)|48)==Q&&(G=Object.prototype[d[1]].call(B,b)),91))==Q&&(l.I=k,l[d[0]]=!b,l.l=B,W[44](2,2,1,l)),G},function(Q,B,b,k,l,y,d,G,n,S){if(2<=Q+8>>(S=[15,9,"push"],4)&&Q>>1>3&&1>((Q^27)&16))O[46](S[1],function(T,N){if(T[N=[58,"I","M"],N[2]]==l)return O[28](N[0],T,b,y.l);T[(d=T[N[1]],d).send(k,new Wx),N[2]]=B});return 2==(Q^25)>>3&&L.call(this,B),n},function(Q,B,b,k,l){return(((Q&82)==((Q|(k=[9,24,49],k[1]))==Q&&L.call(this,B),Q)&&(l=Object.prototype.hasOwnProperty.call(B,b)),6>(Q+k[0]&11)&&3<=Q-k[0]>>4&&(this.promise=new Promise(function(y,d){B=(b=y,d)}),this.resolve=b,this.reject=B),Q)^k[2])&7||L.call(this,B),l},function(Q,B,b,k,l,y,d,G,n,S,T){if((((T= +[1,21,16],(Q&114)==Q&&(y=[2,4503599627370496,1],n=W[34](T[1],T[2],b),l=W[34](20,T[2],b),G=4294967296*(l&1048575)+n,k=l>>>20&2047,d=(l>>31)*y[0]+y[2],S=2047==k?G?NaN:Infinity*d:k==B?d*Math.pow(y[0],-1074)*G:d*Math.pow(y[0],k-1075)*(G+y[T[0]])),8<=(Q-9&11)&&8>((Q|4)&T[2]))&&(S=O[46](11,function(N,H){if((H=[63,31,28],N).M==b)return G=e[H[1]](8,l,function(m){return O[21](59,m.parse(y))}),O[H[2]](53,N,k,K[1](H[0],B,G[l],G[b]+G[k]));return N.return(new az(e[H[1]](2,(d=N.I,l),function(m){return O[21](61, +m.parse(d))}),G[b],G[k]))})),Q)|24)==Q)if(y.vQ(b),d)O[47](29,y.N,"opacity",l),O[47](28,y.N,"transform","scale(0)"),c$(C5(function(){O[47](29,this.N,"display",k)},y),B);else O[47](23,y.N,"display",k);return 10<=(Q^62)&&19>Q-4&&(this.hw=B=void 0===B?!1:B,this.I=this.locale=null,this.M=new r6,Number.isInteger(b)&&this.M.c_(b),B||(this.locale=document.documentElement.getAttribute("lang")),E[48](17,9,this,new g6)),S},function(Q,B,b,k,l,y,d){return 1>((Q&(Q<<(y=[8,null,19],1)>=y[0]&&6>(Q-2&y[0])&&(b?t[46](y[0], +k,B):K[33](y[0],k,B)),90))==Q&&(b=B.V,B.V=[],d=b),Q<<2&16)&&10<=Q>>2&&(l=B,l=void 0===l?0:l,d=K[12](6,y[1],O[y[2]](9,k,b),l)),d},function(Q,B,b,k,l,y,d,G,n,S,T,N){if(13<=(T=[8,"forEach","toString"],Q-5&14)&&28>Q-9){for(S=[0,"=",(d=[],"")],k=(b.M.cookie||S[2]).split(B),n=[],l=S[0];l>2&23)&&(N=B||$L?W[17](5,b):"number"===typeof b&& +Number.isFinite(b)||!!b&&"string"===typeof b&&isFinite(b)),88))==Q&&(l=e[34](21,"object",sq),b=[],k=function(H,m,r){Array.isArray((r=[41,34,"toString"],H))?H.forEach(k):(m=e[r[1]](20,"object",H),b.push(t[r[0]](3,m)[r[2]]()))},B[T[1]](k),N=K[27](5,"error",b.join(t[41](T[0],l)[T[2]]()))),30))=Q&&(k=b.M,d=[4,16,1],G=b.I,n=G[k+0],S=G[k+d[2]],l=G[k+3],y=G[k+2],a[0](15,d[0],b),N=n<<0|S<=Q&&(l=E[18](12,b,B,D3()),N=Array.from({length:void 0===k?1:k}, +function(){return b+l()})),N},function(Q,B,b,k,l,y,d,G){if((G=[65533,40,3],Q|G[1])==Q){if(b)throw Error("Invalid UTF8");B.push(G[0])}return(Q-5^((Q&59)==(24>(Q|9)&&5<=(Q-1&14)&&(d=X7&&!b?P.btoa(B):O[2](92,0,a[28](8,8,255,B),b)),Q)&&L.call(this,B),24))=Q&&(a[G[2]](18,Jj),l=k.U8,y=null==l||O[13](72,null,l)?l:"string"===typeof l?a[46](12,B,b,l):null,d=null==y?y:k.U8=y),d},function(Q,B,b,k,l){return(3==(Q-((((Q&45)==(k=[2,"dresp",11],Q)&&(l=Promise.resolve(a[32](24,0,19,b,B))),Q-8)&15)== +k[0]&&(b=O[29](8),dL?P.setTimeout(function(){e[20](14,b)},B):E[10](15,b)),4)&k[2])&&L.call(this,B,0,k[1]),(Q<<1&k[2])==k[0])&&L.call(this,B,0,"ctask"),l},function(Q,B,b,k,l,y){if(!(Q<<((Q-(y=[5,2,"call"],y[0])&8)=y[0]&&(l=new e3(B,b,k,19)),y)[1]&y[0]))lq[y[2]](this);return l},function(Q,B,b,k,l,y,d,G,n,S){return Q>>((Q|(n=["F",9,40],(Q&60)==Q&&((k=b[Eq])?S=k:(k=O[27](n[1],B,t[15].bind(null,1),b[Eq]={},b,K[n[2]].bind(null,64)),Jd in b&&Eq in b&&(b.length=B),S=k)),32))==Q&&(Dc.call(this), +this.M=window.Worker&&B?new Worker(t[44](5,K[42](37,"error",B)),void 0):null),(Q^72)>>3||(l[n[0]]=B,a[14](58,B,function(){l.F&&xL.call(b,k)})),2)&15||(G=function(){return l.rU(k,d,y)},l.response={},l.tG(b),K[38](12,l.S).width!=l.SM().width||K[38](14,l.S).height!=l.SM().height?(a[23](39,G,l),e[25](72,B,l,l.SM())):G()),S},function(Q,B,b,k,l,y,d,G,n,S,T,N,H,m,r,g,D,J,Z,w,C,p){if((Q>>(Q+1&((Q+(p=[3,2,"push"],p[0])&47)>=Q&&Q-6<<1= +Q&&(C=function(){var z=arguments,I=this;return K[45](49,null,function(){return a[17](6,B,function(){return b.apply(I,z)},t6)})}),C},function(Q,B,b,k,l,y,d,G,n){if((Q&(G=[30,8,"src"],77))==Q&&(this.Wq=B.altKey,this.Ea=this.M=-1),(Q+G[1]&G[0])=Q&&(b=[0,null,"on"],"number"!==typeof B&&B&&!B.r4))if(k=B[G[2]],e[29](27,k))E[14](1,b[0],k.R,B);else if(l=B.type,d=B.proxy,k.removeEventListener?k.removeEventListener(l,d,B.capture):k.detachEvent?k.detachEvent(E[45](1,b[2],l),d):k.addListener&&k.removeListener&& +k.removeListener(d),wS--,y=W[2](15,k))E[14](3,b[0],y,B),y.I==b[0]&&(y[G[2]]=b[1],k[eH]=b[1]);else W[12](G[1],b[1],B);return n},function(Q,B,b,k,l,y){return 2<=((Q|(((((y=[13,5,"I"],Q+9)^8)>=Q&&Q-y[1]<<2(Q^33)&&(l=String(B).replace(/\-([a-z])/g,function(d,G){return G.toUpperCase()})),l},function(Q,B,b,k,l,y,d){return(Q&((Q|48)==((d=[4,"attachEvent",28],Q+d[0]>=d[2]&&(Q<<2&16)(Q-d[0]&16))&&18<=Q+7&&(y=function(G,n,S,T){b[G=(n=(T=[3,"I","map"],E[12](T[0],b)),t[17](25,b)),S=t[17](21,b),T[1]][n]=(null==G?0:G[T[2]])?G[T[2]](function(N){return B(N,S)}):B(G,S)}),Q)&&(y=function(G){return K[45](40,B,32,G,b)}),d[2]))==Q&&(y=e[25](11,b,k,null==B?B:X[42](6,B))),y},function(Q,B,b,k,l,y,d){if((Q+((Q&121)==((Q&92)==(y=[0,57,"A"],(Q|80)==Q&&(d=Math.floor(Math.random()*B)),Q)&&(d=B?B:Array.prototype.fill), +Q)&&(d=B.RI),1==(Q+9&13)&&(B=['