[
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\ncover/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\n.pybuilder/\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n#   For a library or package, you might want to ignore these files since the code is\n#   intended to run in multiple environments; otherwise, check them in:\n# .python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# poetry\n#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.\n#   This is especially recommended for binary packages to ensure reproducibility, and is more\n#   commonly ignored for libraries.\n#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control\n#poetry.lock\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# pytype static type analyzer\n.pytype/\n\n# Cython debug symbols\ncython_debug/\nnode_modules/\n.DS_Store\n\ndb.sqlite3-shm\ndb.sqlite3-wal\n\ntmp/\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2022 Matt Butterfield\nCopyright (c) 2024 Iwana Labs\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": "PROJECT_DIR=$(shell pwd)\nSRC_DIR=$(PROJECT_DIR)/src\nINPUT_DIR=$(PROJECT_DIR)/src/static/input\nOUTPUT_DIR=$(PROJECT_DIR)/src/static/output\n\nrun:\n\tcd ${SRC_DIR} && poetry run python manage.py runserver 8000\n\ngenerate-key:\n\tpoetry run python -c \"from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())\"\n\nmigrate:\n\tcd ${SRC_DIR} && poetry run python manage.py makemigrations && poetry run python manage.py migrate\n\ntailwind:\n\tnpx tailwindcss -i $(INPUT_DIR)/style.css -o $(OUTPUT_DIR)/style.css --watch -c tailwind.config.js --minify\n\ncollectstatic:\n\tcd ${SRC_DIR} && poetry run python manage.py collectstatic\n\nredis:\n\tdocker run --rm --name redis-server -p 6379:6379 -v ${PROJECT_DIR}/tmp:/data redis\n\nclear-cache:\n\tcd $(SRC_DIR) && poetry run python manage.py clear_cache\n"
  },
  {
    "path": "README.md",
    "content": "# Django HTMX Components\n\nThis is a collection of components for [Django](https://www.djangoproject.com/) and [htmx](https://htmx.org/). They are meant to be copy-pasted into your project and customized to your needs.\n\nThey're designed to be as simple as possible, so you can easily understand how they work and modify them to your needs. They have very little styling, for the same reason.\n\n## Installation\n\n1. Install [Django](https://www.djangoproject.com/) and [htmx](https://htmx.org/).\n2. Install and set up [django-components](https://github.com/EmilStenstrom/django-components)\n3. Create a `urls.py` file in `components/` and add the following code:\n   ```python\n       from django.urls import path\n       urlpatterns = []\n   ```\n   Then import this file in your project's `urls.py` file:\n   ```python\n       from django.urls import path, include\n       urlpatterns = [\n           path('components/', include('components.urls')),\n       ]\n   ```\n   This step simplifies adding URL patterns for your components and keeps them separate from your project's URL patterns. Then, adding a single-file component to your `components/urls.py` file is as easy as:\n   ```python\n       from django.urls import path\n       from components.mycomponent import MyComponent\n       urlpatterns = [\n           path('mycomponent/', MyComponent.as_view()),\n       ]\n   ```\n   It will handle requests to `/components/mycomponent/` and render the component.\n4. Copy-paste the components you want to use into your `components/` folder. Add them to your `components/urls.py` file as described above.\n\n## Contributing\n\nContributions are welcome! Please open an issue or pull request if you have a component you'd like to add or a bug to report.\n\n### Local development\n\n1. Clone this repository.\n2. Create a virtual environment and install the dependencies:\n   ```bash\n   poetry install\n   npm install\n   ```\n3. Run the Tailwind CSS build:\n   ```bash\n   make tailwind\n   ```\n4. Start redis:\n   ```bash\n   make redis\n   ```\n5. Run the development server:\n   ```bash\n   make run\n   ```\n6. Open http://localhost:8000/ in your browser.\n7. Make your changes and test them in your browser.\n8. Commit your changes and open a pull request.\n\n## License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) for details.\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"devDependencies\": {\n    \"@tailwindcss/typography\": \"^0.5.10\",\n    \"flowbite-typography\": \"^1.0.3\",\n    \"tailwindcss\": \"^3.4.1\"\n  },\n  \"dependencies\": {\n    \"flowbite\": \"^2.2.1\"\n  }\n}\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[tool.poetry]\nname = \"django_htmx_components\"\nversion = \"0.1.0\"\ndescription = \"\"\nauthors = [\"Dylan Castillo <dylan@iwanalabs.com>\"]\npackages = [\n    {include = \"src\"}\n]\n\n[tool.poetry.dependencies]\npython = \"^3.10\"\nDjango = \"^5.0.1\"\ndjango-htmx = \"^1.17.2\"\nWebTest = \"^3.0.0\"\ndjango-environ = \"^0.11.2\"\nwhitenoise = \"^6.6.0\"\nredis = \"^5.0.1\"\ngunicorn = \"^21.2.0\"\ndjango-components = \"^0.67\"\n\n[tool.poetry.group.dev.dependencies]\nblack = \"^23.7.0\"\nmypy = \"^1.4.1\"\nruff = \"^0.0.282\"\nnotebook = \"^7.0.2\"\ntypes-requests = \"^2.31.0.3\"\ndjlint = \"^1.34.0\"\nflake8 = \"^7.0.0\"\n\n[build-system]\nrequires = [\"poetry-core>=1.0.0\"]\nbuild-backend = \"poetry.core.masonry.api\"\n"
  },
  {
    "path": "src/app/__init__.py",
    "content": ""
  },
  {
    "path": "src/app/admin.py",
    "content": "from django.contrib import admin\n\n# Register your models here.\n"
  },
  {
    "path": "src/app/apps.py",
    "content": "from django.apps import AppConfig\n\n\nclass AppConfig(AppConfig):\n    default_auto_field = \"django.db.models.BigAutoField\"\n    name = \"app\"\n"
  },
  {
    "path": "src/app/management/commands/clear_cache.py",
    "content": "from django.core.cache import cache\nfrom django.core.management.base import BaseCommand\n\n\nclass Command(BaseCommand):\n    help = \"Clear the cache\"\n\n    def handle(self, *args, **kwargs):\n        cache.clear()\n        self.stdout.write(self.style.SUCCESS(\"Cache has been cleared!\"))\n"
  },
  {
    "path": "src/app/management/commands/regenerate_data.py",
    "content": "from django.core.management.base import BaseCommand\nfrom app.utils import create_contacts, create_brands_and_cars, delete_contacts\n\n\nclass Command(BaseCommand):\n    help = \"Deletes old data and regenerates new data\"\n\n    def handle(self, *args, **kwargs):\n        delete_contacts()\n\n        create_contacts(count=100)\n        create_brands_and_cars()\n\n        self.stdout.write(self.style.SUCCESS(\"Successfully regenerated data\"))\n"
  },
  {
    "path": "src/app/migrations/0001_initial.py",
    "content": "# Generated by Django 5.0.1 on 2024-01-31 21:59\n\nimport django.db.models.deletion\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n    initial = True\n\n    dependencies = []\n\n    operations = [\n        migrations.CreateModel(\n            name=\"Brand\",\n            fields=[\n                (\n                    \"id\",\n                    models.BigAutoField(\n                        auto_created=True,\n                        primary_key=True,\n                        serialize=False,\n                        verbose_name=\"ID\",\n                    ),\n                ),\n                (\"name\", models.CharField(max_length=100)),\n            ],\n        ),\n        migrations.CreateModel(\n            name=\"Contact\",\n            fields=[\n                (\n                    \"id\",\n                    models.BigAutoField(\n                        auto_created=True,\n                        primary_key=True,\n                        serialize=False,\n                        verbose_name=\"ID\",\n                    ),\n                ),\n                (\"first_name\", models.CharField(max_length=100)),\n                (\"last_name\", models.CharField(max_length=100)),\n                (\"email\", models.EmailField(max_length=254)),\n                (\"status\", models.CharField(default=\"Inactive\", max_length=100)),\n            ],\n        ),\n        migrations.CreateModel(\n            name=\"Job\",\n            fields=[\n                (\n                    \"id\",\n                    models.BigAutoField(\n                        auto_created=True,\n                        primary_key=True,\n                        serialize=False,\n                        verbose_name=\"ID\",\n                    ),\n                ),\n                (\"progress\", models.IntegerField(default=0)),\n            ],\n        ),\n        migrations.CreateModel(\n            name=\"CarModel\",\n            fields=[\n                (\n                    \"id\",\n                    models.BigAutoField(\n                        auto_created=True,\n                        primary_key=True,\n                        serialize=False,\n                        verbose_name=\"ID\",\n                    ),\n                ),\n                (\"name\", models.CharField(max_length=100)),\n                (\n                    \"brand\",\n                    models.ForeignKey(\n                        on_delete=django.db.models.deletion.CASCADE, to=\"app.brand\"\n                    ),\n                ),\n            ],\n        ),\n    ]\n"
  },
  {
    "path": "src/app/migrations/0002_init_data.py",
    "content": "# Generated by Django 5.0.1 on 2024-01-31 21:10\n\nfrom django.db import migrations\n\n\ndef create_initial_data(apps, schema_editor):\n    from app.utils import create_contacts, create_brands_and_cars\n\n    Contact = apps.get_model(\"app\", \"Contact\")\n    Brand = apps.get_model(\"app\", \"Brand\")\n    CarModel = apps.get_model(\"app\", \"CarModel\")\n\n    create_contacts(count=100)\n    create_brands_and_cars()\n\n\nclass Migration(migrations.Migration):\n    dependencies = [\n        (\"app\", \"0001_initial\"),\n    ]\n\n    operations = [\n        migrations.RunPython(create_initial_data),\n    ]\n"
  },
  {
    "path": "src/app/migrations/0003_sitemap.py",
    "content": "from django.db import migrations\nfrom django.contrib.sites.models import Site\n\n\ndef create_site(apps, schema_editor):\n    Site.objects.all().delete()\n    Site.objects.create(domain=\"dhc.iwanalabs.com\", name=\"Iwana Labs\")\n\n\nclass Migration(migrations.Migration):\n    dependencies = [\n        (\"app\", \"0002_init_data\"),\n        (\"sites\", \"0002_alter_domain_unique\"),\n    ]\n\n    operations = [\n        migrations.RunPython(create_site),\n    ]\n"
  },
  {
    "path": "src/app/migrations/__init__.py",
    "content": ""
  },
  {
    "path": "src/app/models.py",
    "content": "from django.db import models\n\n# Create your models here.\n\n\nclass Contact(models.Model):\n    first_name = models.CharField(max_length=100)\n    last_name = models.CharField(max_length=100)\n    email = models.EmailField()\n    status = models.CharField(max_length=100, default=\"Inactive\")\n\n\nclass Job(models.Model):\n    progress = models.IntegerField(default=0)\n\n\nclass Brand(models.Model):\n    name = models.CharField(max_length=100)\n\n\nclass CarModel(models.Model):\n    name = models.CharField(max_length=100)\n    brand = models.ForeignKey(Brand, on_delete=models.CASCADE)\n"
  },
  {
    "path": "src/app/sitemap.py",
    "content": "from django.contrib.sitemaps import Sitemap\nfrom django.urls import reverse\n\n\nclass StaticViewSitemap(Sitemap):\n    priority = 0.5\n    changefreq = \"daily\"\n\n    def items(self):\n        return [\n            # \"index\",\n            \"active_search\",\n            \"bulk_update\",\n            \"cascading_selects\",\n            \"click_to_edit\",\n            \"click_to_load\",\n            \"delete_row\",\n            \"edit_row\",\n            \"infinite_scroll\",\n            \"inline_validation\",\n            \"progress_bar\",\n        ]\n\n    def location(self, item):\n        return reverse(item)\n"
  },
  {
    "path": "src/app/tests.py",
    "content": "from django.test import TestCase\n\n# Create your tests here.\n"
  },
  {
    "path": "src/app/urls.py",
    "content": "from django.urls import path\n\nfrom app import views\n\nurlpatterns = [\n    path(\"\", views.index, name=\"index\"),\n    path(\"active_search/\", views.active_search, name=\"active_search\"),\n    path(\"bulk_update/\", views.bulk_update, name=\"bulk_update\"),\n    path(\"cascading_selects/\", views.cascading_selects, name=\"cascading_selects\"),\n    path(\"click_to_edit/\", views.click_to_edit, name=\"click_to_edit\"),\n    path(\"click_to_load/\", views.click_to_load, name=\"click_to_load\"),\n    path(\"delete_row/\", views.delete_row, name=\"delete_row\"),\n    path(\"edit_row/\", views.edit_row, name=\"edit_row\"),\n    path(\"infinite_scroll/\", views.infinite_scroll, name=\"infinite_scroll\"),\n    path(\"inline_validation/\", views.inline_validation, name=\"inline_validation\"),\n    path(\"progress_bar/\", views.progress_bar, name=\"progress_bar\"),\n]\n"
  },
  {
    "path": "src/app/utils.py",
    "content": "from app.models import Contact, Brand, CarModel\n\ncontacts_list = [\n    {\n        \"id\": 1,\n        \"first_name\": \"Kathy\",\n        \"last_name\": \"Lang\",\n        \"email\": \"kathy.lang@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 2,\n        \"first_name\": \"Roberto\",\n        \"last_name\": \"Perez\",\n        \"email\": \"roberto.perez@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 3,\n        \"first_name\": \"Cody\",\n        \"last_name\": \"House\",\n        \"email\": \"cody.house@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 4,\n        \"first_name\": \"Brittany\",\n        \"last_name\": \"Thomas\",\n        \"email\": \"brittany.thomas@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 5,\n        \"first_name\": \"Tina\",\n        \"last_name\": \"Hines\",\n        \"email\": \"tina.hines@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 6,\n        \"first_name\": \"Nicholas\",\n        \"last_name\": \"Smith\",\n        \"email\": \"nicholas.smith@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 7,\n        \"first_name\": \"Robert\",\n        \"last_name\": \"Bennett\",\n        \"email\": \"robert.bennett@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 8,\n        \"first_name\": \"Sherri\",\n        \"last_name\": \"Stone\",\n        \"email\": \"sherri.stone@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 9,\n        \"first_name\": \"Nichole\",\n        \"last_name\": \"Hart\",\n        \"email\": \"nichole.hart@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 10,\n        \"first_name\": \"Kelly\",\n        \"last_name\": \"Hines\",\n        \"email\": \"kelly.hines@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 11,\n        \"first_name\": \"Annette\",\n        \"last_name\": \"Munoz\",\n        \"email\": \"annette.munoz@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 12,\n        \"first_name\": \"Matthew\",\n        \"last_name\": \"Conner\",\n        \"email\": \"matthew.conner@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 13,\n        \"first_name\": \"Miranda\",\n        \"last_name\": \"Beck\",\n        \"email\": \"miranda.beck@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 14,\n        \"first_name\": \"Michelle\",\n        \"last_name\": \"Wilson\",\n        \"email\": \"michelle.wilson@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 15,\n        \"first_name\": \"Sarah\",\n        \"last_name\": \"Collins\",\n        \"email\": \"sarah.collins@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 16,\n        \"first_name\": \"Jack\",\n        \"last_name\": \"Hall\",\n        \"email\": \"jack.hall@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 17,\n        \"first_name\": \"Brandon\",\n        \"last_name\": \"Taylor\",\n        \"email\": \"brandon.taylor@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 18,\n        \"first_name\": \"Stacey\",\n        \"last_name\": \"Stevens\",\n        \"email\": \"stacey.stevens@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 19,\n        \"first_name\": \"Brandon\",\n        \"last_name\": \"Pitts\",\n        \"email\": \"brandon.pitts@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 20,\n        \"first_name\": \"Matthew\",\n        \"last_name\": \"Bowers\",\n        \"email\": \"matthew.bowers@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 21,\n        \"first_name\": \"John\",\n        \"last_name\": \"Mccullough\",\n        \"email\": \"john.mccullough@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 22,\n        \"first_name\": \"Lisa\",\n        \"last_name\": \"Bartlett\",\n        \"email\": \"lisa.bartlett@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 23,\n        \"first_name\": \"Brittany\",\n        \"last_name\": \"Buck\",\n        \"email\": \"brittany.buck@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 24,\n        \"first_name\": \"Elizabeth\",\n        \"last_name\": \"Campbell\",\n        \"email\": \"elizabeth.campbell@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 25,\n        \"first_name\": \"Emily\",\n        \"last_name\": \"Maldonado\",\n        \"email\": \"emily.maldonado@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 26,\n        \"first_name\": \"Andrew\",\n        \"last_name\": \"Murphy\",\n        \"email\": \"andrew.murphy@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 27,\n        \"first_name\": \"Kristen\",\n        \"last_name\": \"Ramsey\",\n        \"email\": \"kristen.ramsey@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 28,\n        \"first_name\": \"Jason\",\n        \"last_name\": \"Williams\",\n        \"email\": \"jason.williams@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 29,\n        \"first_name\": \"Deborah\",\n        \"last_name\": \"Wagner\",\n        \"email\": \"deborah.wagner@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 30,\n        \"first_name\": \"Paula\",\n        \"last_name\": \"Fisher\",\n        \"email\": \"paula.fisher@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 31,\n        \"first_name\": \"Alicia\",\n        \"last_name\": \"Clark\",\n        \"email\": \"alicia.clark@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 32,\n        \"first_name\": \"James\",\n        \"last_name\": \"Holt\",\n        \"email\": \"james.holt@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 33,\n        \"first_name\": \"Laura\",\n        \"last_name\": \"Davis\",\n        \"email\": \"laura.davis@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 34,\n        \"first_name\": \"Jason\",\n        \"last_name\": \"Richardson\",\n        \"email\": \"jason.richardson@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 35,\n        \"first_name\": \"Richard\",\n        \"last_name\": \"Jordan\",\n        \"email\": \"richard.jordan@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 36,\n        \"first_name\": \"Natalie\",\n        \"last_name\": \"Armstrong\",\n        \"email\": \"natalie.armstrong@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 37,\n        \"first_name\": \"Matthew\",\n        \"last_name\": \"Hunt\",\n        \"email\": \"matthew.hunt@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 38,\n        \"first_name\": \"Joseph\",\n        \"last_name\": \"Maldonado\",\n        \"email\": \"joseph.maldonado@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 39,\n        \"first_name\": \"Caleb\",\n        \"last_name\": \"White\",\n        \"email\": \"caleb.white@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 40,\n        \"first_name\": \"Andrew\",\n        \"last_name\": \"Dodson\",\n        \"email\": \"andrew.dodson@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 41,\n        \"first_name\": \"Veronica\",\n        \"last_name\": \"Cortez\",\n        \"email\": \"veronica.cortez@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 42,\n        \"first_name\": \"Jesse\",\n        \"last_name\": \"Arroyo\",\n        \"email\": \"jesse.arroyo@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 43,\n        \"first_name\": \"Tina\",\n        \"last_name\": \"Jensen\",\n        \"email\": \"tina.jensen@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 44,\n        \"first_name\": \"Todd\",\n        \"last_name\": \"Gallagher\",\n        \"email\": \"todd.gallagher@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 45,\n        \"first_name\": \"Roberto\",\n        \"last_name\": \"Anderson\",\n        \"email\": \"roberto.anderson@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 46,\n        \"first_name\": \"Stacey\",\n        \"last_name\": \"Morrison\",\n        \"email\": \"stacey.morrison@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 47,\n        \"first_name\": \"David\",\n        \"last_name\": \"Hicks\",\n        \"email\": \"david.hicks@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 48,\n        \"first_name\": \"Richard\",\n        \"last_name\": \"Tucker\",\n        \"email\": \"richard.tucker@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 49,\n        \"first_name\": \"Miguel\",\n        \"last_name\": \"Baker\",\n        \"email\": \"miguel.baker@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 50,\n        \"first_name\": \"Antonio\",\n        \"last_name\": \"Flynn\",\n        \"email\": \"antonio.flynn@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 51,\n        \"first_name\": \"Katrina\",\n        \"last_name\": \"Butler\",\n        \"email\": \"katrina.butler@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 52,\n        \"first_name\": \"Jennifer\",\n        \"last_name\": \"Pitts\",\n        \"email\": \"jennifer.pitts@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 53,\n        \"first_name\": \"Randall\",\n        \"last_name\": \"Sanchez\",\n        \"email\": \"randall.sanchez@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 54,\n        \"first_name\": \"Sara\",\n        \"last_name\": \"Garcia\",\n        \"email\": \"sara.garcia@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 55,\n        \"first_name\": \"Scott\",\n        \"last_name\": \"Edwards\",\n        \"email\": \"scott.edwards@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 56,\n        \"first_name\": \"Kelly\",\n        \"last_name\": \"Arnold\",\n        \"email\": \"kelly.arnold@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 57,\n        \"first_name\": \"Jeffrey\",\n        \"last_name\": \"Johnson\",\n        \"email\": \"jeffrey.johnson@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 58,\n        \"first_name\": \"Carlos\",\n        \"last_name\": \"Jennings\",\n        \"email\": \"carlos.jennings@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 59,\n        \"first_name\": \"Jodi\",\n        \"last_name\": \"Gray\",\n        \"email\": \"jodi.gray@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 60,\n        \"first_name\": \"James\",\n        \"last_name\": \"Davis\",\n        \"email\": \"james.davis@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 61,\n        \"first_name\": \"Anita\",\n        \"last_name\": \"Day\",\n        \"email\": \"anita.day@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 62,\n        \"first_name\": \"Christopher\",\n        \"last_name\": \"Gilbert\",\n        \"email\": \"christopher.gilbert@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 63,\n        \"first_name\": \"David\",\n        \"last_name\": \"Farrell\",\n        \"email\": \"david.farrell@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 64,\n        \"first_name\": \"Elizabeth\",\n        \"last_name\": \"Williams\",\n        \"email\": \"elizabeth.williams@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 65,\n        \"first_name\": \"Bill\",\n        \"last_name\": \"Walters\",\n        \"email\": \"bill.walters@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 66,\n        \"first_name\": \"Carla\",\n        \"last_name\": \"Jones\",\n        \"email\": \"carla.jones@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 67,\n        \"first_name\": \"Tiffany\",\n        \"last_name\": \"Berry\",\n        \"email\": \"tiffany.berry@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 68,\n        \"first_name\": \"Eddie\",\n        \"last_name\": \"Mclean\",\n        \"email\": \"eddie.mclean@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 69,\n        \"first_name\": \"Amanda\",\n        \"last_name\": \"Johns\",\n        \"email\": \"amanda.johns@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 70,\n        \"first_name\": \"Jennifer\",\n        \"last_name\": \"Gray\",\n        \"email\": \"jennifer.gray@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 71,\n        \"first_name\": \"Melinda\",\n        \"last_name\": \"Whitney\",\n        \"email\": \"melinda.whitney@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 72,\n        \"first_name\": \"Vanessa\",\n        \"last_name\": \"Carr\",\n        \"email\": \"vanessa.carr@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 73,\n        \"first_name\": \"Alyssa\",\n        \"last_name\": \"Riley\",\n        \"email\": \"alyssa.riley@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 74,\n        \"first_name\": \"Sarah\",\n        \"last_name\": \"Torres\",\n        \"email\": \"sarah.torres@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 75,\n        \"first_name\": \"Tanya\",\n        \"last_name\": \"Alexander\",\n        \"email\": \"tanya.alexander@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 76,\n        \"first_name\": \"Kaitlyn\",\n        \"last_name\": \"Baker\",\n        \"email\": \"kaitlyn.baker@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 77,\n        \"first_name\": \"Lori\",\n        \"last_name\": \"Kim\",\n        \"email\": \"lori.kim@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 78,\n        \"first_name\": \"Jeff\",\n        \"last_name\": \"Pace\",\n        \"email\": \"jeff.pace@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 79,\n        \"first_name\": \"Christopher\",\n        \"last_name\": \"Mclaughlin\",\n        \"email\": \"christopher.mclaughlin@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 80,\n        \"first_name\": \"Erica\",\n        \"last_name\": \"Suarez\",\n        \"email\": \"erica.suarez@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 81,\n        \"first_name\": \"Steven\",\n        \"last_name\": \"Hicks\",\n        \"email\": \"steven.hicks@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 82,\n        \"first_name\": \"Emily\",\n        \"last_name\": \"Graham\",\n        \"email\": \"emily.graham@gmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 83,\n        \"first_name\": \"Austin\",\n        \"last_name\": \"Villarreal\",\n        \"email\": \"austin.villarreal@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 84,\n        \"first_name\": \"Rebecca\",\n        \"last_name\": \"Smith\",\n        \"email\": \"rebecca.smith@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 85,\n        \"first_name\": \"Daniel\",\n        \"last_name\": \"Booth\",\n        \"email\": \"daniel.booth@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 86,\n        \"first_name\": \"Alexandra\",\n        \"last_name\": \"Underwood\",\n        \"email\": \"alexandra.underwood@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 87,\n        \"first_name\": \"Ashley\",\n        \"last_name\": \"Mills\",\n        \"email\": \"ashley.mills@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 88,\n        \"first_name\": \"Ashley\",\n        \"last_name\": \"Vaughn\",\n        \"email\": \"ashley.vaughn@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 89,\n        \"first_name\": \"Kimberly\",\n        \"last_name\": \"Gomez\",\n        \"email\": \"kimberly.gomez@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 90,\n        \"first_name\": \"Kristin\",\n        \"last_name\": \"Davis\",\n        \"email\": \"kristin.davis@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 91,\n        \"first_name\": \"Gerald\",\n        \"last_name\": \"James\",\n        \"email\": \"gerald.james@gmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 92,\n        \"first_name\": \"Alyssa\",\n        \"last_name\": \"Adams\",\n        \"email\": \"alyssa.adams@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 93,\n        \"first_name\": \"Hector\",\n        \"last_name\": \"Smith\",\n        \"email\": \"hector.smith@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 94,\n        \"first_name\": \"Amanda\",\n        \"last_name\": \"Hill\",\n        \"email\": \"amanda.hill@hotmail.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 95,\n        \"first_name\": \"Karla\",\n        \"last_name\": \"Thornton\",\n        \"email\": \"karla.thornton@yahoo.com\",\n        \"status\": \"inactive\",\n    },\n    {\n        \"id\": 96,\n        \"first_name\": \"Elizabeth\",\n        \"last_name\": \"Johnson\",\n        \"email\": \"elizabeth.johnson@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 97,\n        \"first_name\": \"Benjamin\",\n        \"last_name\": \"Chambers\",\n        \"email\": \"benjamin.chambers@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 98,\n        \"first_name\": \"James\",\n        \"last_name\": \"Coleman\",\n        \"email\": \"james.coleman@yahoo.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 99,\n        \"first_name\": \"Joseph\",\n        \"last_name\": \"Johnson\",\n        \"email\": \"joseph.johnson@hotmail.com\",\n        \"status\": \"active\",\n    },\n    {\n        \"id\": 100,\n        \"first_name\": \"Amanda\",\n        \"last_name\": \"Roman\",\n        \"email\": \"amanda.roman@gmail.com\",\n        \"status\": \"inactive\",\n    },\n]\n\nbrands_list = [\n    \"Toyota\",\n    \"Ford\",\n    \"Honda\",\n    \"Chevrolet\",\n]\n\ncar_models_list = {\n    \"Toyota\": [\n        \"4Runner\",\n        \"Avalon\",\n        \"Camry\",\n        \"Corolla\",\n        \"Highlander\",\n        \"Land Cruiser\",\n        \"Prius\",\n        \"RAV4\",\n        \"Sequoia\",\n        \"Sienna\",\n        \"Tacoma\",\n        \"Tundra\",\n        \"Yaris\",\n    ],\n    \"Ford\": [\n        \"Bronco\",\n        \"EcoSport\",\n        \"Edge\",\n        \"Escape\",\n        \"Expedition\",\n        \"Explorer\",\n        \"F-150\",\n        \"F-250\",\n        \"F-350\",\n        \"F-450\",\n        \"Fiesta\",\n        \"Flex\",\n        \"Focus\",\n        \"Fusion\",\n        \"Mustang\",\n        \"Ranger\",\n        \"Taurus\",\n        \"Transit\",\n    ],\n    \"Honda\": [\n        \"Accord\",\n        \"Civic\",\n        \"Clarity\",\n        \"CR-V\",\n        \"Fit\",\n        \"HR-V\",\n        \"Insight\",\n        \"Odyssey\",\n        \"Passport\",\n        \"Pilot\",\n        \"Ridgeline\",\n    ],\n    \"Chevrolet\": [\n        \"Blazer\",\n        \"Bolt EV\",\n        \"Camaro\",\n        \"Colorado\",\n        \"Corvette\",\n        \"Equinox\",\n        \"Express\",\n        \"Impala\",\n        \"Malibu\",\n        \"Silverado\",\n        \"Sonic\",\n        \"Spark\",\n        \"Suburban\",\n        \"Tahoe\",\n        \"Trailblazer\",\n        \"Traverse\",\n        \"Trax\",\n    ],\n}\n\n\ndef source_link(link):\n    return \"https://github.com/iwanalabs/django-htmx-components/blob/main/src/\" + link\n\n\ndef delete_contacts():\n    Contact.objects.all().delete()\n\n\ndef create_contacts(contacts=contacts_list, count=None):\n    for contact in contacts[:count]:\n        Contact.objects.get_or_create(\n            id=contact[\"id\"],\n            defaults={\n                \"first_name\": contact[\"first_name\"],\n                \"last_name\": contact[\"last_name\"],\n                \"email\": contact[\"email\"],\n                \"status\": contact[\"status\"],\n            },\n        )\n\n\ndef create_brands_and_cars():\n    for brand in brands_list:\n        Brand.objects.get_or_create(name=brand)\n        for car_model in car_models_list[brand]:\n            CarModel.objects.get_or_create(\n                name=car_model, brand=Brand.objects.get(name=brand)\n            )\n"
  },
  {
    "path": "src/app/views.py",
    "content": "from django.shortcuts import render, resolve_url\n\nfrom app.models import Contact\nfrom app.utils import source_link\n\n\ndef index(request):\n    components = [\n        {\"name\": \"Active Search\", \"url\": resolve_url(\"active_search\")},\n        {\"name\": \"Bulk Update\", \"url\": resolve_url(\"bulk_update\")},\n        {\"name\": \"Cascading Selects\", \"url\": resolve_url(\"cascading_selects\")},\n        {\"name\": \"Click to Edit\", \"url\": resolve_url(\"click_to_edit\")},\n        {\"name\": \"Click to Load\", \"url\": resolve_url(\"click_to_load\")},\n        {\"name\": \"Delete Row\", \"url\": resolve_url(\"delete_row\")},\n        {\"name\": \"Edit Row\", \"url\": resolve_url(\"edit_row\")},\n        {\"name\": \"Infinite Scroll\", \"url\": resolve_url(\"infinite_scroll\")},\n        {\"name\": \"Inline Validation\", \"url\": resolve_url(\"inline_validation\")},\n        {\"name\": \"Progress Bar\", \"url\": resolve_url(\"progress_bar\")},\n    ]\n    return render(request, \"index.html\", {\"components\": components})\n\n\ndef inline_validation(request):\n    files = [\n        {\n            \"name\": \"components/inline_validation/form.py\",\n            \"path\": \"inline_validation/form.py\",\n        },\n        {\n            \"name\": \"components/inline_validation/forms.py\",\n            \"path\": \"inline_validation/forms.py\",\n        },\n        {\n            \"name\": \"components/inline_validation/input.py\",\n            \"path\": \"inline_validation/input.py\",\n        },\n        {\n            \"name\": \"components/urls.py\",\n            \"path\": \"inline_validation/urls.py\",\n        },\n        {\"name\": \"template/inline_validation.html\", \"path\": \"inline_validation.html\"},\n    ]\n    return render(\n        request,\n        \"inline_validation.html\",\n        {\n            \"files\": files,\n            \"title\": \"Inline Validation\",\n            \"description\": \"Inline validation of a Django form\",\n            \"full_code_url\": source_link(\"components/inline_validation\"),\n        },\n    )\n\n\ndef bulk_update(request):\n    files = [\n        {\"name\": \"components/bulk_update/table.py\", \"path\": \"bulk_update/table.py\"},\n        {\"name\": \"components/bulk_update/tbody.py\", \"path\": \"bulk_update/tbody.py\"},\n        {\"name\": \"components/bulk_update/urls.py\", \"path\": \"bulk_update/urls.py\"},\n        {\"name\": \"template/bulk_update.html\", \"path\": \"bulk_update.html\"},\n    ]\n    return render(\n        request,\n        \"bulk_update.html\",\n        {\n            \"files\": files,\n            \"title\": \"Bulk Update\",\n            \"description\": \"Bulk update of Django models\",\n            \"full_code_url\": source_link(\"components/bulk_update\"),\n        },\n    )\n\n\ndef click_to_load(request):\n    files = [\n        {\"name\": \"components/click_to_load/table.py\", \"path\": \"click_to_load/table.py\"},\n        {\"name\": \"components/click_to_load/tbody.py\", \"path\": \"click_to_load/tbody.py\"},\n        {\"name\": \"components/click_to_load/urls.py\", \"path\": \"click_to_load/urls.py\"},\n        {\"name\": \"template/click_to_load.html\", \"path\": \"click_to_load.html\"},\n    ]\n\n    return render(\n        request,\n        \"click_to_load.html\",\n        {\n            \"files\": files,\n            \"title\": \"Click to Load\",\n            \"description\": \"Click to load more data\",\n            \"full_code_url\": source_link(\"components/click_to_load\"),\n        },\n    )\n\n\ndef edit_row(request):\n    files = [\n        {\"name\": \"components/edit_row/row.py\", \"path\": \"edit_row/row.py\"},\n        {\"name\": \"components/edit_row/table.py\", \"path\": \"edit_row/table.py\"},\n        {\"name\": \"components/edit_row/urls.py\", \"path\": \"edit_row/urls.py\"},\n        {\"name\": \"template/edit_row.html\", \"path\": \"edit_row.html\"},\n    ]\n    return render(\n        request,\n        \"edit_row.html\",\n        {\n            \"files\": files,\n            \"title\": \"Edit Row\",\n            \"description\": \"Inline editing of a Django model\",\n            \"full_code_url\": source_link(\"components/edit_row\"),\n        },\n    )\n\n\ndef delete_row(request):\n    files = [\n        {\"name\": \"components/delete_row.py\", \"path\": \"delete_row.py\"},\n        {\"name\": \"components/urls.py\", \"path\": \"urls.py\", \"lines\": [10, 14]},\n        {\"name\": \"template/delete_row.html\", \"path\": \"delete_row.html\"},\n    ]\n\n    return render(\n        request,\n        \"delete_row.html\",\n        {\n            \"files\": files,\n            \"title\": \"Delete Row\",\n            \"description\": \"Inline editing of a Django model\",\n            \"full_code_url\": source_link(\"components/delete_row.py\"),\n        },\n    )\n\n\ndef click_to_edit(request):\n    files = [\n        {\"name\": \"components/click_to_edit.py\", \"path\": \"click_to_edit.py\"},\n        {\"name\": \"components/urls.py\", \"path\": \"urls.py\", \"lines\": [15, 24]},\n        {\"name\": \"template/click_to_edit.html\", \"path\": \"click_to_edit.html\"},\n    ]\n    id = Contact.objects.first().id\n\n    return render(\n        request,\n        \"click_to_edit.html\",\n        {\n            \"files\": files,\n            \"first_available_id\": id,\n            \"title\": \"Click to Edit\",\n            \"description\": \"Inline editing of a Django model\",\n            \"full_code_url\": source_link(\"components/click_to_edit.py\"),\n        },\n    )\n\n\ndef infinite_scroll(request):\n    files = [\n        {\n            \"name\": \"components/infinite_scroll/table.py\",\n            \"path\": \"infinite_scroll/table.py\",\n        },\n        {\n            \"name\": \"components/infinite_scroll/tbody.py\",\n            \"path\": \"infinite_scroll/tbody.py\",\n        },\n        {\n            \"name\": \"components/infinite_scroll/urls.py\",\n            \"path\": \"infinite_scroll/urls.py\",\n        },\n        {\"name\": \"template/infinite_scroll.html\", \"path\": \"infinite_scroll.html\"},\n    ]\n\n    return render(\n        request,\n        \"infinite_scroll.html\",\n        {\n            \"files\": files,\n            \"title\": \"Infinite Scroll\",\n            \"description\": \"Infinite scroll of a Django model\",\n            \"full_code_url\": source_link(\"components/infinite_scroll\"),\n        },\n    )\n\n\ndef active_search(request):\n    files = [\n        {\"name\": \"components/active_search/input.py\", \"path\": \"active_search/input.py\"},\n        {\"name\": \"components/active_search/tbody.py\", \"path\": \"active_search/tbody.py\"},\n        {\"name\": \"components/active_search/urls.py\", \"path\": \"active_search/urls.py\"},\n        {\"name\": \"template/active_search.html\", \"path\": \"active_search.html\"},\n    ]\n    return render(\n        request,\n        \"active_search.html\",\n        {\n            \"files\": files,\n            \"title\": \"Active Search\",\n            \"description\": \"Active search of a Django model\",\n            \"full_code_url\": source_link(\"components/active_search\"),\n        },\n    )\n\n\ndef progress_bar(request):\n    files = [\n        {\"name\": \"components/progress_bar/bar.py\", \"path\": \"progress_bar/bar.py\"},\n        {\"name\": \"components/progress_bar/start.py\", \"path\": \"progress_bar/start.py\"},\n        {\"name\": \"components/progress_bar/status.py\", \"path\": \"progress_bar/status.py\"},\n        {\"name\": \"components/progress_bar/urls.py\", \"path\": \"progress_bar/urls.py\"},\n        {\"name\": \"template/progress_bar.html\", \"path\": \"progress_bar.html\"},\n    ]\n    return render(\n        request,\n        \"progress_bar.html\",\n        {\n            \"files\": files,\n            \"title\": \"Progress Bar\",\n            \"description\": \"Progress bar\",\n            \"full_code_url\": source_link(\"components/progress_bar\"),\n        },\n    )\n\n\ndef cascading_selects(request):\n    files = [\n        {\n            \"name\": \"components/cascading_selects/parent_select.py\",\n            \"path\": \"cascading_selects/parent_select.py\",\n        },\n        {\n            \"name\": \"components/cascading_selects/select.py\",\n            \"path\": \"cascading_selects/select.py\",\n        },\n        {\n            \"name\": \"components/cascading_selects/urls.py\",\n            \"path\": \"cascading_selects/urls.py\",\n        },\n        {\"name\": \"template/cascading_selects.html\", \"path\": \"cascading_selects.html\"},\n    ]\n    return render(\n        request,\n        \"cascading_selects.html\",\n        {\n            \"files\": files,\n            \"title\": \"Cascading Selects\",\n            \"description\": \"Cascading selects\",\n            \"full_code_url\": source_link(\"components/cascading_selects\"),\n        },\n    )\n"
  },
  {
    "path": "src/components/__init__.py",
    "content": ""
  },
  {
    "path": "src/components/active_search/input.py",
    "content": "from django_components import component\n\n\n@component.register(\"input_active_search\")\nclass InputActiveSearchComponent(component.Component):\n    template = \"\"\"\n        <div class=\"mb-4 w-[256px]\">\n            <input class=\"input form-control\" type=\"search\" \n                name=\"search\" placeholder=\"Search for a user\" \n                hx-post=\"{% url 'tbody_active_search' %}\" \n                hx-trigger=\"input changed delay:500ms, search\" \n                hx-target=\"#search-results\">\n        </div>\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th class=\"th\">First Name</th>\n                    <th class=\"th\">Last Name</th>\n                    <th class=\"th\">Email</th>\n                    <th class=\"th\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"search-results\">\n            </tbody>\n        </table>\n    \"\"\"\n"
  },
  {
    "path": "src/components/active_search/tbody.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_active_search\")\nclass TBodyActiveSearchComponent(component.Component):\n    template = \"\"\"\n        {% for contact in contacts %}\n            <tr class=\"tr\"> \n                <td class=\"td\">{{ contact.first_name }}</td>\n                <td class=\"td\">{{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def post(self, request, **kwargs):\n        search = request.POST.get(\"search\")\n        if not search:\n            return self.render_to_response({})\n        contacts = Contact.objects.filter(\n            first_name__icontains=search\n        ) | Contact.objects.filter(last_name__icontains=search)\n        context = {\"contacts\": contacts.order_by(\"id\")[:10]}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/components/active_search/urls.py",
    "content": "from django.urls import path\n\nfrom components.active_search.tbody import TBodyActiveSearchComponent\n\nurlpatterns = [\n    path(\n        \"search/\",\n        TBodyActiveSearchComponent.as_view(),\n        name=\"tbody_active_search\",\n    ),\n]\n"
  },
  {
    "path": "src/components/bulk_update/table.py",
    "content": "from django_components import component\n\nfrom django.middleware.csrf import get_token\n\nfrom app.models import Contact\n\n\n@component.register(\"table_bulk_update\")\nclass TableBulkUpdateComponent(component.Component):\n    template = \"\"\"\n        <form id=\"checked-contacts\">\n            <table class=\"table\">\n                <thead class=\"thead\">\n                    <tr>\n                        <th class=\"th\"></th>\n                        <th class=\"th\">Name</th>\n                        <th class=\"th\">Email</th>\n                        <th class=\"th\">Status</th>\n                    </tr>\n                </thead>\n                <tbody id=\"tbody\">\n                    {% component \"tbody_bulk_update\" contacts=contacts only %}{% endcomponent %}\n                </tbody>\n            </table>\n        </form>\n        <div class=\"mt-4\" hx-include=\"#checked-contacts\" hx-target=\"#tbody\">\n            <button class=\"btn-primary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='activate' %}\">Activate</button>\n            <button class=\"btn-secondary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='deactivate' %}\">Deactivate</button>\n        </div>\n    \"\"\"\n\n    css = \"\"\"\n        .htmx-settling tr.deactivate td {\n            background: lightcoral;\n        }\n        .htmx-settling tr.activate td {\n            background: darkseagreen;\n        }\n        tr td {\n            transition: all 1.2s;\n        }\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/components/bulk_update/tbody.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_bulk_update\")\nclass TBodyBulkUpdateComponent(component.Component):\n    template = \"\"\"\n        {% for contact in contacts %}\n        <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n            <td class=\"td\"><input class=\"checkbox\" type='checkbox' name='ids' value='{{ contact.id }}'></td>\n            <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n            <td class=\"td\">{{ contact.email }}</td>\n            <td class=\"td\">{{ contact.status }}</td>\n        </tr>\n        {% endfor %}\n    \"\"\"\n\n    css = \"\"\"\n        .htmx-settling tr.deactivate td {\n            background: lightcoral;\n        }\n        .htmx-settling tr.activate td {\n            background: darkseagreen;\n        }\n        tr td {\n            transition: all 1.2s;\n        }\n    \"\"\"\n\n    def get_context_data(self, contacts, **kwargs):\n        return {\"contacts\": contacts}\n\n    def post(self, request, update, *args, **kwargs):\n        if update == \"activate\":\n            Contact.objects.filter(id__in=request.POST.getlist(\"ids\")).update(\n                status=\"Active\"\n            )\n        elif update == \"deactivate\":\n            Contact.objects.filter(id__in=request.POST.getlist(\"ids\")).update(\n                status=\"Inactive\"\n            )\n        context = {\n            \"contacts\": Contact.objects.all().order_by(\"id\")[:5],  # remove limit\n            \"update\": update,\n            \"ids\": [int(id_) for id_ in request.POST.getlist(\"ids\")],\n        }\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/components/bulk_update/urls.py",
    "content": "from django.urls import path\n\nfrom components.bulk_update.tbody import TBodyBulkUpdateComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<str:update>\",\n        TBodyBulkUpdateComponent.as_view(),\n        name=\"contacts_bulk_update\",\n    ),\n]\n"
  },
  {
    "path": "src/components/cascading_selects/parent_select.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\n\nfrom app.models import Brand\n\n\n@component.register(\"parent_select_cascading_selects\")\nclass ParentSelectCascadingSelectsComponent(component.Component):\n    template = \"\"\"\n        <div>\n            <label class=\"label\">Brand</label>\n            <select class=\"input\" name=\"brand\" hx-get=\"{% url 'select_cascading_selects' %}\" hx-target=\"#models\">\n            {% for brand in brands %}\n                <option value=\"{{ brand.id }}\">{{ brand.name }}</option>\n            {% endfor %}\n            </select>\n        </div>\n        <div class=\"mt-2\">\n            <label class=\"label\">Model</label>\n            <select id=\"models\" name=\"model\" class=\"input\">\n                {% component \"select_cascading_selects\" brand=brands.0.id %}{% endcomponent %}\n            </select>\n        </div>\n    \"\"\"\n\n    def get_context_data(self, *args, **kwargs) -> Dict[str, Any]:\n        brands = Brand.objects.order_by(\"name\")\n        return {\"brands\": brands}\n"
  },
  {
    "path": "src/components/cascading_selects/select.py",
    "content": "from django_components import component\n\nfrom app.models import CarModel\n\n\n@component.register(\"select_cascading_selects\")\nclass SelectCascadingSelectsComponent(component.Component):\n    template = \"\"\"\n        {% for model in models %}\n            <option value=\"{{ model.id }}\">{{ model.name }}</option>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, brand, *args, **kwargs):\n        models = CarModel.objects.filter(brand=brand).order_by(\"name\")\n        return {\"models\": models}\n\n    def get(self, request, *args, **kwargs):\n        brand = request.GET.get(\"brand\")\n        models = CarModel.objects.filter(brand=brand).order_by(\"name\")\n        return self.render_to_response({\"models\": models})\n"
  },
  {
    "path": "src/components/cascading_selects/urls.py",
    "content": "from django.urls import path\n\nfrom components.cascading_selects.select import SelectCascadingSelectsComponent\n\n\nurlpatterns = [\n    path(\n        \"models/\",\n        SelectCascadingSelectsComponent.as_view(),\n        name=\"select_cascading_selects\",\n    ),\n]\n"
  },
  {
    "path": "src/components/click_to_edit.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\ndef build_context(contact, editing=False):\n    return {\n        \"first_name\": contact.first_name,\n        \"last_name\": contact.last_name,\n        \"email\": contact.email,\n        \"id\": contact.id,\n        \"editing\": editing,\n    }\n\n\n@component.register(\"click_to_edit\")\nclass ClickToEditComponent(component.Component):\n    template = \"\"\"\n        {% if editing %}\n            <form hx-post=\"{% url 'contact' id=id %}\" hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n                <div class=\"mb-5\">\n                    <label class=\"label\" >First Name</label>\n                    <input class=\"input\" type=\"text\" name=\"firstName\" value=\"{{ first_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Last Name</label>\n                    <input class=\"input\" type=\"text\" name=\"lastName\" value=\"{{ last_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Email Address</label>\n                    <input class=\"input\" type=\"email\" name=\"email\" value=\"{{ email }}\">\n                </div>\n                <div>\n                    <button class=\"btn-primary\">Submit</button>\n                    <button class=\"btn-secondary\" hx-get=\"{% url 'contact' id=id %}\" preload>\n                        Cancel\n                    </button>\n                </div>\n            </form>\n        {% else %}\n        <div hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n            <div class=\"mb-5\">\n                <label class=\"label\" >First Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ first_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Last Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ last_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Email Address</label>\n                <input class=\"disabled-input\" type=\"email\" value=\"{{ email }}\" disabled>\n            </div>\n            <button class=\"btn-primary\" hx-get=\"{% url 'contact_edit' id=id %}\" preload>Edit contact</button>\n        </div>\n        {% endif %}\n    \"\"\"\n\n    def get_context_data(self, id, **kwargs):\n        contact = Contact.objects.get(id=id)\n        return build_context(contact)\n\n    def get(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n\n    def post(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        contact.first_name = request.POST.get(\"firstName\")\n        contact.last_name = request.POST.get(\"lastName\")\n        contact.email = request.POST.get(\"email\")\n        contact.save()\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/components/click_to_load/table.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_click_to_load\")\nclass TableClickToLoadComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_click_to_load\" page_obj=page_obj only %}{% endcomponent %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/components/click_to_load/tbody.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_click_to_load\")\nclass TBodyClickToLoadComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"> \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n            {% if forloop.last and page_obj.has_next %} \n                <tr id=\"replaceMe\">\n                    <td colspan=\"4\" class=\"td-tight text-center\">\n                        <button \n                            class='btn-primary' \n                            hx-get=\"{% url 'tbody_click_to_load' page=page_obj.next_page_number %}\"\n                            hx-target=\"#replaceMe\"\n                            hx-swap=\"outerHTML\"\n                            preload\n                            >\n                            Load more\n                        </button>\n                    </td>\n                </tr>\n            {% endif %}\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/components/click_to_load/urls.py",
    "content": "from django.urls import path\n\nfrom components.click_to_load.tbody import TBodyClickToLoadComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<int:page>\",\n        TBodyClickToLoadComponent.as_view(),\n        name=\"tbody_click_to_load\",\n    ),\n]\n"
  },
  {
    "path": "src/components/component_tabs/component_tabs.css",
    "content": "pre {\n  font-size: 14px !important;\n  max-height: 100vh;\n  overflow: scroll;\n}\n\ndiv.code-toolbar > .toolbar {\n  top: 0.8em;\n  right: 0.5em;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a,\ndiv.code-toolbar > .toolbar > .toolbar-item > button,\ndiv.code-toolbar > .toolbar > .toolbar-item > span {\n  padding: 0.2em 0.5em;\n  border-radius: 0.3rem;\n}\n"
  },
  {
    "path": "src/components/component_tabs/component_tabs.html",
    "content": "{% load static %}\n<div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between\">\n    <div class=\"w-full md:w-1/2 mx-auto my-10 flex flex-col items-center px-4\">\n        <h1 class=\"text-center text-4xl font-bold mt-20\">{{ title }}</h1>\n        <p class=\"text-center font-light\">{{ description }}</p>\n        <div class=\" w-full flex flex-col items-center mt-6\">{% slot \"component_code\" %} {% endslot %}</div>\n    </div>\n    <div class=\"px-8 py-12 lg:py-8 flex flex-col items-center min-h-screen w-full lg:mt-0 lg:w-1/2 bg-slate-100\">\n        <div class=\"w-full flex flex-col gap-2 items-center sm:flex sm:flex-row sm:items-start justify-between lg:mt-20\">\n            <div>\n                <label for=\"tabs\" class=\"sr-only\">Select a file</label>\n                <select id=\"tabs\"\n                        class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\">\n                    {% for file in files %}\n                        <option value=\"button-{{ forloop.counter }}\"\n                                id=\"button-{{ forloop.counter }}\"\n                                data-target=\"content-{{ forloop.counter }}\">{{ file.name }}</option>\n                    {% endfor %}\n                </select>\n            </div>\n            <a href=\"{{ full_code_url }}\"\n               class=\"btn-primary flex flex-row items-center gap-2 whitespace-nowrap\"\n               target=\"_blank\"\n               rel=\"noopener noreferrer\">\n                <svg class=\"w-[16px] h-[16px] text-white-600 dark:text-slate-800\"\n                     aria-hidden=\"true\"\n                     xmlns=\"http://www.w3.org/2000/svg\"\n                     fill=\"none\"\n                     viewBox=\"0 0 24 24\">\n                    <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 14v4.8a1.2 1.2 0 0 1-1.2 1.2H5.2A1.2 1.2 0 0 1 4 18.8V7.2A1.2 1.2 0 0 1 5.2 6h4.6m4.4-2H20v5.8m-7.9 2L20 4.2\" />\n                </svg>\n            Source code</a>\n        </div>\n        <div class=\"w-full\">\n            {% for file in files %}\n                <div id=\"content-{{ forloop.counter }}\"\n                     role=\"tabpanel\"\n                     class=\"tab-content\"\n                     aria-labelledby=\"button-{{ forloop.counter }}\">\n                    {# djlint: off #}\n                    <pre class=\"language-python line-numbers\" \n                         {% if file.lines %}data-range=\"{{ file.lines.0 }}, {{ file.lines.1 }}\"{% endif %} \n                         data-src=\"{% static ''|add:file.path %}\">\n                    </pre>\n                    {# djlint:  on #}\n                </div>\n            {% endfor %}\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "src/components/component_tabs/component_tabs.js",
    "content": "function updateTabs() {\n  Prism.highlightAll();\n  const tabsSelect = document.getElementById(\"tabs\");\n  const contentTabs = document.getElementsByClassName(\"tab-content\");\n\n  for (let i = 0; i < contentTabs.length; i++) {\n    contentTabs[i].classList.add(\"hidden\");\n  }\n\n  let tabOption = document.getElementById(tabsSelect.value);\n  let tabContent = document.getElementById(tabOption.dataset.target);\n  console.log(tabContent);\n  tabContent.classList.remove(\"hidden\");\n\n  tabsSelect.addEventListener(\"change\", function (event) {\n    tabOption = document.getElementById(event.target.value);\n    tabContent = document.getElementById(tabOption.dataset.target);\n\n    for (let i = 0; i < contentTabs.length; i++) {\n      contentTabs[i].classList.add(\"hidden\");\n    }\n\n    tabContent.classList.remove(\"hidden\");\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\n  if (window.location.pathname !== \"/\") {\n    updateTabs();\n  }\n});\n\ndocument.addEventListener(\"htmx:afterSwap\", function (event) {\n  if (event.detail.target.id == \"header\" && window.location.pathname !== \"/\") {\n    updateTabs();\n  }\n});\n"
  },
  {
    "path": "src/components/component_tabs/component_tabs.py",
    "content": "from django_components import component\n\n\n@component.register(\"component_tabs\")\nclass ComponentTabsComponent(component.Component):\n    template_name = \"component_tabs/component_tabs.html\"\n\n    class Media:\n        js = \"component_tabs/component_tabs.js\"\n        css = \"component_tabs/component_tabs.css\"\n"
  },
  {
    "path": "src/components/delete_row.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"delete_row\")\nclass DeleteRowComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                    <th class=\"td\"></th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\" hx-confirm=\"Are you sure?\" hx-target=\"closest tr\" hx-swap=\"outerHTML\">\n                {% for contact in contacts %}\n                <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n                    <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                    <td class=\"td\">{{ contact.email }}</td>\n                    <td class=\"td\">{{ contact.status }}</td>\n                    <td class=\"td-tight\">\n                        <button class=\"btn-red-small\" hx-delete=\"{% url 'contact_delete_row' id=contact.id %}\">\n                        Delete\n                        </button>\n                    </td>\n                </tr>\n                {% endfor %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    css = \"\"\"\n        tr.htmx-swapping td {\n        opacity: 0;\n        transition: opacity 1s ease-out;\n        }\n    \"\"\"\n\n    def delete(self, request, id, *args, **kwargs):\n        delete_id = int(id)\n        Contact.objects.filter(id=delete_id).delete()\n        return HttpResponse(status=200)\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]} # remove limit\n"
  },
  {
    "path": "src/components/edit_row/row.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"row_edit_row\")\nclass RowEditRowComponent(component.Component):\n    template = \"\"\"\n        {% if not editing %}\n            <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n                <td class=\"td\">{{ contact.first_name }}</td>\n                <td class=\"td\">{{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">\n                    <button class=\"link\" hx-get=\"{% url 'row_edit_row' id=contact.id %}?edit=True\" hx-trigger=\"edit\" onClick=\"editClick(this)\">\n                    Edit \n                    </button>\n                </td>\n            </tr>\n        {% else %}\n            <tr hx-trigger='cancel' class='tr editing' hx-get=\"{% url 'row_edit_row' id=contact.id %}\">\n                <td class=\"td-tight\"><input class=\"input\" name='first_name' value='{{ contact.first_name }}'></td>\n                <td class=\"td-tight\"><input class=\"input\" name='last_name' value='{{ contact.last_name }}'></td>\n                <td class=\"td-tight\"><input class=\"input\" name='email' value='{{ contact.email }}'></td>\n                <td class=\"td-tight flex flex-row gap-1\">\n                    <button class=\"btn-secondary-small\" hx-get=\"{% url 'row_edit_row' id=contact.id %}\">\n                    ✘\n                    </button>\n                    <button class=\"btn-primary-small\" hx-post=\"{% url 'row_edit_row' id=contact.id %}\" hx-include=\"closest tr\">\n                    ✓\n                    </button>\n                </td>\n            </tr>\n        {% endif %}\n    \"\"\"\n\n    js = \"\"\"\n        function editClick(e) {\n            let editing = document.querySelector(\".editing\");\n            if (editing) {\n                let changeRow = confirm(\n                    \"Hey!  You are already editing a row!  Do you want to cancel that edit and continue?\"\n                );\n\n                if (changeRow) {\n                    htmx.trigger(editing, \"cancel\");\n                } else {\n                    return;\n                }\n                \n                htmx.trigger(e, \"edit\");\n            } else {\n                htmx.trigger(e, \"edit\");\n            }\n        }\n    \"\"\"\n\n    def get(self, request, id, *args, **kwargs):\n        editing = request.GET.get(\"edit\", False)\n        contact = Contact.objects.get(id=id)\n        context = {\"contact\": contact, \"editing\": editing}\n        return self.render_to_response(context)\n\n    def post(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        contact.first_name = request.POST.get(\"first_name\")\n        contact.last_name = request.POST.get(\"last_name\")\n        contact.email = request.POST.get(\"email\")\n        contact.save()\n        return self.render_to_response({\"contact\": contact, \"editing\": False})\n\n    def get_context_data(self, contact, **kwargs):\n        return {\"contact\": contact}\n"
  },
  {
    "path": "src/components/edit_row/table.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_edit_row\")\nclass TableEditRowComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th scope=\"col\" class=\"th\">First name</th>\n                    <th scope=\"col\" class=\"th\">Last name</th>\n                    <th scope=\"col\" class=\"th\">Email</th>\n                    <th scope=\"col\" class=\"th\"></th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\" hx-target=\"closest tr\" hx-swap=\"outerHTML\">\n                {% for contact in contacts %}\n                    {% component \"row_edit_row\" contact=contact only %}{% endcomponent %}\n                {% endfor %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/components/edit_row/urls.py",
    "content": "from django.urls import path\n\nfrom components.edit_row.row import RowEditRowComponent\n\nurlpatterns = [\n    path(\n        \"contact/<int:id>\",\n        RowEditRowComponent.as_view(),\n        name=\"row_edit_row\",\n    ),\n]\n"
  },
  {
    "path": "src/components/infinite_scroll/table.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_infinite_scroll\")\nclass TableInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% load static %}\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_infinite_scroll\" page_obj=page_obj only %}{% endcomponent %}\n            </tbody>\n        </table>\n        <img id=\"busy-indicator\"\n             width=\"24\"\n             height=\"24\"\n             src=\"{% static 'spinner.svg' %}\" class=\"mt-2\"/>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 5)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/components/infinite_scroll/tbody.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_infinite_scroll\")\nclass TBodyInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"\n            {% if forloop.last and page_obj.has_next %} \n                hx-get=\"{% url 'tbody_infinite_scroll' page=page_obj.next_page_number %}\"\n                hx-trigger=\"revealed\"\n                hx-swap=\"afterend\"\n                hx-target=\"this\"\n            {% endif %}\n            > \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 10)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/components/infinite_scroll/urls.py",
    "content": "from django.urls import path\n\nfrom components.infinite_scroll.tbody import TBodyInfiniteScrollComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<int:page>\",\n        TBodyInfiniteScrollComponent.as_view(),\n        name=\"tbody_infinite_scroll\",\n    ),\n]\n"
  },
  {
    "path": "src/components/inline_validation/form.py",
    "content": "from django_components import component\n\nfrom components.inline_validation.forms import InlineValidationForm\n\n\n@component.register(\"form_inline_validation\")\nclass FormInlineValidationComponent(component.Component):\n    template = \"\"\"\n        <form id=\"inline-validation-form\" class=\"form\">\n            <div class=\"mb-5\">\n                {{ form.name }}\n                {{ form.name.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.email }}\n                {{ form.email.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.age }}\n                {{ form.age.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.message }}\n                {{ form.message.type.errors }}\n            </div>\n        </form>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        form = InlineValidationForm()\n        return {\"form\": form}\n\n    def post(self, request, *args, **kwargs):\n        form = InlineValidationForm(request.POST)\n        return self.render_to_response({\"form\": form})\n"
  },
  {
    "path": "src/components/inline_validation/forms.py",
    "content": "from django import forms\nfrom django.urls import reverse_lazy\nfrom components.inline_validation.input import InputInlineValidationComponent\n\n\ndef htmx_inline_validated_input_widget_factory(base_widget_class):\n    class HtmxInlineValidatedInputWidget(base_widget_class):\n        def __init__(self, attrs=None, form=None, field_name=None, form_url=None):\n            super().__init__(attrs)\n            self.form = form\n            self.field_name = field_name\n            self.form_url = form_url\n\n        def get_context(self, name, value, attrs):\n            context = super().get_context(name, value, attrs)\n            context[\"form_url\"] = self.form_url\n\n            if self.form and self.field_name:\n                context[\"label\"] = self.form.fields[self.field_name].label\n                context[\"errors\"] = self.form.errors.get(self.field_name, [])\n            return context\n\n        def render(self, name, value, attrs=None, renderer=None):\n            context = self.get_context(name, value, attrs)\n            return InputInlineValidationComponent().render(context)\n\n    return HtmxInlineValidatedInputWidget\n\n\nclass HtmxFormBase(forms.Form):\n    form_url = \"\"\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.label_suffix = \"\"\n\n        for name, field in self.fields.items():\n            if isinstance(field.widget, (forms.Select, forms.FileInput)):\n                continue\n\n            custom_widget = htmx_inline_validated_input_widget_factory(\n                type(field.widget)\n            )\n            field.widget = custom_widget(\n                form=self,\n                field_name=name,\n                attrs=field.widget.attrs,\n                form_url=self.form_url,\n            )\n\n\nHtmxValidatedTextInput = htmx_inline_validated_input_widget_factory(forms.TextInput)\nHtmxValidatedNumberInput = htmx_inline_validated_input_widget_factory(forms.NumberInput)\nHtmxValidatedEmailInput = htmx_inline_validated_input_widget_factory(forms.EmailInput)\nHtmxValidatedTextarea = htmx_inline_validated_input_widget_factory(forms.Textarea)\n\n\nclass InlineValidationForm(HtmxFormBase):\n    form_url = reverse_lazy(\"form_inline_validation\")\n    name = forms.CharField(\n        label=\"Name\",\n        max_length=100,\n        widget=HtmxValidatedTextInput(\n            attrs={\"placeholder\": \"John Doe\"},\n        ),\n    )\n    email = forms.EmailField(\n        label=\"Email\",\n        widget=HtmxValidatedEmailInput(attrs={\"placeholder\": \"john@doe.com\"}),\n    )\n    age = forms.IntegerField(\n        label=\"Age\",\n        min_value=13,\n        max_value=120,\n        widget=HtmxValidatedNumberInput(\n            attrs={\"placeholder\": \"e.g., 25\"},\n        ),\n    )\n    message = forms.CharField(\n        label=\"Message\",\n        max_length=500,\n        widget=HtmxValidatedTextarea(\n            attrs={\"placeholder\": \"Your message here...\", \"rows\": 3},\n        ),\n    )\n"
  },
  {
    "path": "src/components/inline_validation/input.py",
    "content": "from django_components import component\n\n\n@component.register(\"input_inline_validation\")\nclass InputInlineValidationComponent(component.Component):\n    template = \"\"\"\n        <div id=\"{{ widget.attrs.id }}-field\"\n            hx-select=\"#{{ widget.attrs.id }}-field\"\n            hx-post=\"{{ form_url }}\"\n            hx-trigger=\"blur from:#{{ widget.attrs.id }}\"\n            hx-target=\"this\"\n            hx-swap=\"outerHTML\">\n            {% if label %}\n                <label class=\"label {% if errors %} text-red-700 dark:text-red-500 {% endif %}\" for=\"{{ widget.attrs.id }}\">{{ label }}</label>\n            {% endif %}\n            {% if not widget.type %}\n                <textarea class=\"{% if errors %} input-error {% else %} input {% endif %}\" name=\"{{ widget.name }}\"\n                        {% for name, value in widget.attrs.items %}\n                            {% if value is not False %}\n                            {{ name }}\n                            {% if value is not True %}=\"{{ value|stringformat:'s' }}\"{% endif %}\n                            {% endif %}\n                        {% endfor %}>{% if widget.value != None %}{{ widget.value|stringformat:'s' }}{% endif %}</textarea>\n            {% else %}\n                <input class=\"{% if errors %} input-error {% else %} input {% endif %}\" type=\"{{ widget.type }}\"\n                    name=\"{{ widget.name }}\"\n                    {% if widget.value != None %}value=\"{{ widget.value|stringformat:'s' }}\"{% endif %}\n                    {% for name, value in widget.attrs.items %}\n                            {% if value is not False %}\n                            {{ name }}\n                            {% if value is not True %}=\"{{ value|stringformat:'s' }}\"{% endif %}\n                            {% endif %}\n                    {% endfor %} />\n            {% endif %}\n            {% if errors %}\n                <ul> \n                    {% for error in errors %}<li class=\"text-sm text-red-600 dark:text-red-500\">{{ error }}</li>{% endfor %}\n                </ul>\n            {% endif %}\n        </div>\n    \"\"\"\n"
  },
  {
    "path": "src/components/inline_validation/urls.py",
    "content": "from django.urls import path\n\nfrom components.inline_validation.form import FormInlineValidationComponent\n\nurlpatterns = [\n    path(\n        \"\",\n        FormInlineValidationComponent.as_view(),\n        name=\"form_inline_validation\",\n    ),\n]\n"
  },
  {
    "path": "src/components/progress_bar/bar.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"bar_progress_bar\")\nclass BarProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div\n            hx-get=\"{% url 'bar_progress_bar' id=job.id %}\"\n            {% if not done %}\n            hx-trigger=\"every 600ms\"\n            {% else %}\n            hx-trigger=\"none\"\n            {% endif %}\n            hx-target=\"this\"\n            hx-swap=\"innerHTML\">\n            <div class=\"progress\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"{{ current_progress }}\" aria-labelledby=\"pblabel\">\n                <div id=\"pb\" class=\"progress-bar\" style=\"width:{{ current_progress }}%\">\n            </div>\n        </div>\n    \"\"\"\n\n    css = \"\"\"\n        .progress {\n            height: 20px;\n            margin-bottom: 20px;\n            overflow: hidden;\n            background-color: #f5f5f5;\n            border-radius: 4px;\n            box-shadow: inset 0 1px 2px rgba(0,0,0,.1);\n        }\n        .progress-bar {\n            float: left;\n            width: 0%;\n            height: 100%;\n            font-size: 12px;\n            line-height: 20px;\n            color: #fff;\n            text-align: center;\n            background-color: rgb(26 86 219);\n            -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);\n            box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);\n            -webkit-transition: width .6s ease;\n            -o-transition: width .6s ease;\n            transition: width .6s ease;\n        }\n    \"\"\"\n\n    def get_context_data(self, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return {\"job\": job, \"current_progress\": job.progress}\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        job.progress += 10\n        job.save()\n\n        context = {\n            \"job\": job,\n            \"current_progress\": job.progress,\n        }\n        headers = {}\n\n        if job.progress >= 100:\n            headers = {\"HX-Trigger\": \"done\"}\n\n        return HttpResponse(self.render(context), headers=headers)\n"
  },
  {
    "path": "src/components/progress_bar/start.py",
    "content": "from django_components import component\n\n\n@component.register(\"start_progress_bar\")\nclass StartProgressBar(component.Component):\n    template = \"\"\"\n        <div hx-target=\"this\" hx-swap=\"outerHTML\" class=\"progress-bar-div\">\n            <h3 class=\"h3 mb-2\">Start background task</h3>\n            <button class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\">    \n                Start Job \n            </button>\n        </div>\n    \"\"\"\n"
  },
  {
    "path": "src/components/progress_bar/status.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"status_progress_bar\")\nclass StatusProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div class=\"progress-bar-div\" hx-trigger=\"done\" hx-get=\"{% url 'completed_progress_bar' id=job.id %}\" hx-swap=\"outerHTML\" hx-target=\"this\">\n            <h3 role=\"status\" id=\"pblabel\" tabindex=\"-1\" autofocus>\n                {% if not done %}\n                    Running\n                {% else %}\n                    Complete\n                {% endif %}\n            </h3>\n            {% component \"bar_progress_bar\" id=job.id done=done %}{% endcomponent %}\n        </div>\n        {% if done %}\n            <button id=\"restart-btn\" class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\" classes=\"add show:600ms\">\n                Restart Job\n            </button>\n        {% endif %}\n    \"\"\"\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return self.render_to_response({\"job\": job, \"done\": True})\n\n    def post(self, request, **kwargs):\n        job = Job.objects.create(progress=0)\n        return self.render_to_response({\"job\": job})\n"
  },
  {
    "path": "src/components/progress_bar/urls.py",
    "content": "from django.urls import path\n\nfrom components.progress_bar.bar import BarProgressBarComponent\nfrom components.progress_bar.status import StatusProgressBarComponent\n\n\nurlpatterns = [\n    path(\n        \"start/\",\n        StatusProgressBarComponent.as_view(),\n        name=\"start_progress_bar\",\n    ),\n    path(\n        \"job/<int:id>/completed\",\n        StatusProgressBarComponent.as_view(),\n        name=\"completed_progress_bar\",\n    ),\n    path(\n        \"job/<int:id>/progress\",\n        BarProgressBarComponent.as_view(),\n        name=\"bar_progress_bar\",\n    ),\n]\n"
  },
  {
    "path": "src/components/urls.py",
    "content": "from django.urls import include, path\nfrom components.click_to_edit import ClickToEditComponent\nfrom components.delete_row import DeleteRowComponent\n\nurlpatterns = [\n    path(\"active_search/\", include(\"components.active_search.urls\")),\n    path(\"bulk_update/\", include(\"components.bulk_update.urls\")),\n    path(\"cascading_selects/\", include(\"components.cascading_selects.urls\")),\n    path(\n        \"click_to_edit/contact/<int:id>\",\n        ClickToEditComponent.as_view(),\n        name=\"contact\",\n    ),\n    path(\n        \"click_to_edit/contact/<int:id>/edit\",\n        ClickToEditComponent.as_view(),\n        name=\"contact_edit\",\n    ),\n    path(\"click_to_load/\", include(\"components.click_to_load.urls\")),\n    path(\n        \"delete_row/contact/<int:id>\",\n        DeleteRowComponent.as_view(),\n        name=\"contact_delete_row\",\n    ),\n    path(\"edit_row/\", include(\"components.edit_row.urls\")),\n    path(\"infinite_scroll/\", include(\"components.infinite_scroll.urls\")),\n    path(\"inline_validation/\", include(\"components.inline_validation.urls\")),\n    path(\"progress_bar/\", include(\"components.progress_bar.urls\")),\n]\n"
  },
  {
    "path": "src/config/__init__.py",
    "content": ""
  },
  {
    "path": "src/config/asgi.py",
    "content": "\"\"\"\nASGI config for config project.\n\nIt exposes the ASGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/4.1/howto/deployment/asgi/\n\"\"\"\n\nimport os\n\nfrom django.core.asgi import get_asgi_application\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"config.settings\")\n\napplication = get_asgi_application()\n"
  },
  {
    "path": "src/config/settings.py",
    "content": "\"\"\"\nDjango settings for config project.\n\nGenerated by 'django-admin startproject' using Django 4.1.1.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/4.1/topics/settings/\n\nFor the full list of settings and their values, see\nhttps://docs.djangoproject.com/en/4.1/ref/settings/\n\"\"\"\n\nfrom pathlib import Path\n\nimport environ\n\n# Build paths inside the project like this: BASE_DIR / 'subdir'.\nROOT_DIR = Path(__file__).resolve(strict=True).parent.parent.parent\nBASE_DIR = ROOT_DIR / \"src\"\nAPP_DIR = BASE_DIR / \"app\"\n\n# Read .env file\nenv = environ.Env()\nenviron.Env.read_env(\n    env_file=ROOT_DIR / \".env\",\n)\n\n# Environment variables\nSECRET_KEY = env(\"DJANGO_SECRET_KEY\")\nDEBUG = env.bool(\"DJANGO_DEBUG\", default=False)\nSECURE_SSL_REDIRECT = env.bool(\"DJANGO_SECURE_SSL_REDIRECT\", default=True)\nSECURE_HSTS_SECONDS = env.int(\"DJANGO_SECURE_HSTS_SECONDS\", 31536000)\nSECURE_HSTS_INCLUDE_SUBDOMAINS = env.bool(\n    \"DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS\", default=True\n)\nSECURE_HSTS_PRELOAD = env.bool(\"DJANGO_SECURE_HSTS_PRELOAD\", default=True)\nSESSION_COOKIE_SECURE = env.bool(\"DJANGO_SESSION_COOKIE_SECURE\", default=True)\nCSRF_COOKIE_SECURE = env.bool(\"DJANGO_CSRF_COOKIE_SECURE\", default=True)\nSECURE_PROXY_SSL_HEADER: tuple[str, str] | None = (\"HTTP_X_FORWARDED_PROTO\", \"https\")\n\nALLOWED_HOSTS = [\"dhc.iwanalabs.com\"]\nDOMAIN_URL = \"https://dhc.iwanalabs.com\"\n\nif DEBUG:\n    ALLOWED_HOSTS = [\"*\"]\n    SECURE_PROXY_SSL_HEADER = None\n    DOMAIN_URL = \"http://localhost:8000\"\n\n# Application definition\n\nINSTALLED_APPS = [\n    \"django.contrib.admin\",\n    \"django.contrib.auth\",\n    \"django.contrib.contenttypes\",\n    \"django.contrib.sessions\",\n    \"django.contrib.messages\",\n    \"whitenoise.runserver_nostatic\",\n    \"django.contrib.staticfiles\",\n    # 3rd party\n    \"django_components\",\n    \"django_htmx\",\n    \"django.contrib.sites\",\n    \"django.contrib.sitemaps\",\n    # local\n    \"app\",\n]\n\nMIDDLEWARE = [\n    \"django.middleware.security.SecurityMiddleware\",\n    \"django.contrib.sessions.middleware.SessionMiddleware\",\n    \"whitenoise.middleware.WhiteNoiseMiddleware\",\n    \"django.middleware.common.CommonMiddleware\",\n    \"django.middleware.csrf.CsrfViewMiddleware\",\n    \"django.contrib.auth.middleware.AuthenticationMiddleware\",\n    \"django.contrib.messages.middleware.MessageMiddleware\",\n    \"django.middleware.clickjacking.XFrameOptionsMiddleware\",\n    \"django_htmx.middleware.HtmxMiddleware\",\n]\n\nROOT_URLCONF = \"config.urls\"\n\nTEMPLATES = [\n    {\n        \"BACKEND\": \"django.template.backends.django.DjangoTemplates\",\n        \"DIRS\": [\n            BASE_DIR / \"templates\",\n        ],\n        \"OPTIONS\": {\n            \"context_processors\": [\n                \"django.template.context_processors.debug\",\n                \"django.template.context_processors.request\",\n                \"django.contrib.auth.context_processors.auth\",\n                \"django.contrib.messages.context_processors.messages\",\n            ],\n            \"loaders\": [\n                (\n                    \"django.template.loaders.cached.Loader\",\n                    [\n                        \"django.template.loaders.filesystem.Loader\",\n                        \"django.template.loaders.app_directories.Loader\",\n                        \"django_components.template_loader.Loader\",\n                    ],\n                )\n            ],\n            \"builtins\": [\n                \"django_components.templatetags.component_tags\",\n            ],\n        },\n    },\n]\n\nWSGI_APPLICATION = \"config.wsgi.application\"\n\n\n# Database\n# https://docs.djangoproject.com/en/4.1/ref/settings/#databases\n\nDATABASES = {\n    \"default\": {\n        \"ENGINE\": \"django.db.backends.sqlite3\",\n        \"NAME\": ROOT_DIR / \"db.sqlite3\",\n    }\n}\n\n\n# Password validation\n# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators\n\nAUTH_PASSWORD_VALIDATORS = [\n    {\n        \"NAME\": \"django.contrib.auth.password_validation.UserAttributeSimilarityValidator\",\n    },\n    {\n        \"NAME\": \"django.contrib.auth.password_validation.MinimumLengthValidator\",\n    },\n    {\n        \"NAME\": \"django.contrib.auth.password_validation.CommonPasswordValidator\",\n    },\n    {\n        \"NAME\": \"django.contrib.auth.password_validation.NumericPasswordValidator\",\n    },\n]\n\n\n# Internationalization\n# https://docs.djangoproject.com/en/4.1/topics/i18n/\n\nLANGUAGE_CODE = \"en-us\"\n\nTIME_ZONE = \"UTC\"\n\nUSE_I18N = True\n\nUSE_TZ = True\n\n\n# Static files (CSS, JavaScript, Images)\n# https://docs.djangoproject.com/en/4.1/howto/static-files/\n\nSTATIC_URL = \"static/\"\n\n# Default primary key field type\n# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field\n\nDEFAULT_AUTO_FIELD = \"django.db.models.BigAutoField\"\n\n\n# whitenoise config\nSTATICFILES_DIRS = [\n    BASE_DIR / \"components\",\n    BASE_DIR / \"static/output\",\n    BASE_DIR / \"templates\",\n]\nSTATIC_ROOT = BASE_DIR / \"staticfiles\"\nSTORAGES = {\n    \"default\": {\n        \"BACKEND\": \"example.storages.ExtendedFileSystemStorage\",\n    },\n    \"staticfiles\": {\n        \"BACKEND\": \"whitenoise.storage.CompressedManifestStaticFilesStorage\",\n    },\n}\n\n# cache settings\n# CACHE_REDIS_URL = env(\"CACHE_REDIS_URL\")\n# CACHES = {\n#     \"default\": {\n#         \"BACKEND\": \"django.core.cache.backends.redis.RedisCache\",\n#         \"LOCATION\": CACHE_REDIS_URL,\n#         \"OPTIONS\": {\n#             \"db\": 1,\n#         },\n#     }\n# }\nSITE_ID = 1\n"
  },
  {
    "path": "src/config/urls.py",
    "content": "\"\"\"config URL Configuration\n\nThe `urlpatterns` list routes URLs to views. For more information please see:\n    https://docs.djangoproject.com/en/4.1/topics/http/urls/\nExamples:\nFunction views\n    1. Add an import:  from my_app import views\n    2. Add a URL to urlpatterns:  path('', views.home, name='home')\nClass-based views\n    1. Add an import:  from other_app.views import Home\n    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')\nIncluding another URLconf\n    1. Import the include() function: from django.urls import include, path\n    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))\n\"\"\"\n\nfrom django.contrib import admin\nfrom django.contrib.sitemaps.views import sitemap\nfrom django.urls import include, path\n\nfrom app.sitemap import StaticViewSitemap\n\nsitemaps = {\n    \"static\": StaticViewSitemap,\n}\n\n\nurlpatterns = [\n    path(\"\", include(\"app.urls\")),\n    path(\"components/\", include(\"components.urls\")),\n    path(\n        \"sitemap.xml\",\n        sitemap,\n        {\"sitemaps\": sitemaps},\n        name=\"django.contrib.sitemaps.views.sitemap\",\n    ),\n    # path(\"admin/\", admin.site.urls),\n]\n"
  },
  {
    "path": "src/config/wsgi.py",
    "content": "import os\n\nfrom django.core.wsgi import get_wsgi_application\nfrom django.db.backends.signals import connection_created\nfrom django.dispatch import receiver\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"config.settings\")\n\napplication = get_wsgi_application()\n\n\n@receiver(connection_created)\ndef setup_sqlite(connection, **kwargs):\n    if connection.vendor != \"sqlite\":\n        return\n\n    with connection.cursor() as cursor:\n        cursor.execute(\"pragma journal_mode = WAL;\")\n        cursor.execute(\"pragma synchronous = NORMAL;\")\n        cursor.execute(\"PRAGMA busy_timeout = 10000;\")\n        cursor.execute(\"pragma temp_store = memory;\")\n        cursor.execute(\"pragma mmap_size = 256000000;\")\n"
  },
  {
    "path": "src/manage.py",
    "content": "#!/usr/bin/env python\n\"\"\"Django's command-line utility for administrative tasks.\"\"\"\nimport os\nimport sys\n\n\ndef main():\n    \"\"\"Run administrative tasks.\"\"\"\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"config.settings\")\n    try:\n        from django.core.management import execute_from_command_line\n    except ImportError as exc:\n        raise ImportError(\n            \"Couldn't import Django. Are you sure it's installed and \"\n            \"available on your PYTHONPATH environment variable? Did you \"\n            \"forget to activate a virtual environment?\"\n        ) from exc\n    execute_from_command_line(sys.argv)\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "src/static/input/style.css",
    "content": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n@layer components {\n  .btn-primary {\n    @apply text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 me-2 mb-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800;\n  }\n\n  .btn-primary-small {\n    @apply px-3 py-2 text-xs font-medium text-center text-white bg-blue-700 rounded-lg hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800;\n  }\n\n  .btn-red {\n    @apply text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded-lg text-sm px-5 py-2.5 me-2 mb-2 dark:bg-red-600 dark:hover:bg-red-700 focus:outline-none dark:focus:ring-red-800;\n  }\n\n  .btn-red-small {\n    @apply px-3 py-2 text-xs font-medium text-center text-white bg-red-700 rounded-lg hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-800;\n  }\n\n  .btn-red-outline-small {\n    @apply px-3 py-2 text-xs font-medium text-center text-red-700 border border-red-700 rounded-lg hover:text-white hover:bg-red-800 focus:ring-4 focus:outline-none focus:ring-red-300 dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:hover:bg-red-500 dark:focus:ring-red-800;\n  }\n\n  .btn-secondary {\n    @apply text-blue-700 hover:text-white border border-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center me-2 mb-2 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-500 dark:focus:ring-blue-800;\n  }\n\n  .btn-secondary-small {\n    @apply px-3 py-2 text-xs font-medium text-center text-blue-700 border border-blue-700 rounded-lg hover:text-white hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-500 dark:focus:ring-blue-800;\n  }\n\n  .label {\n    @apply block mb-2 text-sm font-medium text-slate-900 dark:text-white;\n  }\n\n  .input {\n    @apply bg-slate-50 border border-slate-300 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-slate-700 dark:border-slate-600 dark:placeholder-slate-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500;\n  }\n\n  .input-error {\n    @apply bg-red-50 border border-red-500 text-red-900 placeholder-red-700 text-sm rounded-lg focus:ring-red-500 dark:bg-slate-700 focus:border-red-500 block w-full p-2.5 dark:text-red-500 dark:placeholder-red-500 dark:border-red-500;\n  }\n\n  .disabled-input {\n    @apply mb-5 bg-slate-100 border border-slate-300 text-slate-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 cursor-not-allowed dark:bg-slate-700 dark:border-slate-600 dark:placeholder-slate-400 dark:text-slate-400 dark:focus:ring-blue-500 dark:focus:border-blue-500;\n  }\n\n  .active-tab {\n    @apply inline-block px-4 py-3 text-white bg-blue-600 rounded-lg;\n  }\n\n  .inactive-tab {\n    @apply inline-block px-4 py-3 rounded-lg hover:text-slate-900 hover:bg-slate-100 dark:hover:bg-slate-800 dark:hover:text-white;\n  }\n\n  .link {\n    @apply font-medium text-blue-600 dark:text-blue-500 hover:underline;\n  }\n\n  .form {\n    @apply max-w-sm mx-auto max-w-sm mx-auto min-w-96;\n  }\n\n  .table {\n    @apply text-xs w-full sm:text-sm text-left rtl:text-right text-slate-500 dark:text-slate-400;\n  }\n\n  .thead {\n    @apply text-xs text-slate-700 uppercase bg-slate-50 dark:bg-slate-700 dark:text-slate-400;\n  }\n\n  .tr {\n    @apply bg-white border-b dark:bg-slate-800 dark:border-slate-700;\n  }\n\n  .td-tight {\n    @apply px-1 py-1 sm:px-3 sm:py-2;\n  }\n\n  .td {\n    @apply px-3 py-2 sm:px-6 sm:py-4;\n  }\n\n  .th {\n    @apply px-3 py-1.5 sm:px-6 sm:py-3;\n  }\n\n  .checkbox {\n    @apply w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600;\n  }\n\n  .h3 {\n    @apply text-lg font-semibold text-slate-900 dark:text-white;\n  }\n\n  .progress-bar-div {\n    @apply w-96 flex flex-col text-center justify-center;\n  }\n}\n"
  },
  {
    "path": "src/static/output/preload.js",
    "content": "// This adds the \"preload\" extension to htmx.  By default, this will\n// preload the targets of any tags with `href` or `hx-get` attributes\n// if they also have a `preload` attribute as well.  See documentation\n// for more details\nhtmx.defineExtension(\"preload\", {\n  onEvent: function (name, event) {\n    // Only take actions on \"htmx:afterProcessNode\"\n    if (name !== \"htmx:afterProcessNode\") {\n      return;\n    }\n\n    // SOME HELPER FUNCTIONS WE'LL NEED ALONG THE WAY\n\n    // attr gets the closest non-empty value from the attribute.\n    var attr = function (node, property) {\n      if (node == undefined) {\n        return undefined;\n      }\n      return (\n        node.getAttribute(property) ||\n        node.getAttribute(\"data-\" + property) ||\n        attr(node.parentElement, property)\n      );\n    };\n\n    // load handles the actual HTTP fetch, and uses htmx.ajax in cases where we're\n    // preloading an htmx resource (this sends the same HTTP headers as a regular htmx request)\n    var load = function (node) {\n      // Called after a successful AJAX request, to mark the\n      // content as loaded (and prevent additional AJAX calls.)\n      var done = function (html) {\n        if (!node.preloadAlways) {\n          node.preloadState = \"DONE\";\n        }\n\n        if (attr(node, \"preload-images\") == \"true\") {\n          document.createElement(\"div\").innerHTML = html; // create and populate a node to load linked resources, too.\n        }\n      };\n\n      return function () {\n        // If this value has already been loaded, then do not try again.\n        if (node.preloadState !== \"READY\") {\n          return;\n        }\n\n        // Special handling for HX-GET - use built-in htmx.ajax function\n        // so that headers match other htmx requests, then set\n        // node.preloadState = TRUE so that requests are not duplicated\n        // in the future\n        var hxGet =\n          node.getAttribute(\"hx-get\") || node.getAttribute(\"data-hx-get\");\n        if (hxGet) {\n          htmx.ajax(\"GET\", hxGet, {\n            source: node,\n            handler: function (elt, info) {\n              done(info.xhr.responseText);\n            },\n          });\n          return;\n        }\n\n        // Otherwise, perform a standard xhr request, then set\n        // node.preloadState = TRUE so that requests are not duplicated\n        // in the future.\n        if (node.getAttribute(\"href\")) {\n          var r = new XMLHttpRequest();\n          r.open(\"GET\", node.getAttribute(\"href\"));\n          r.onload = function () {\n            done(r.responseText);\n          };\n          r.send();\n          return;\n        }\n      };\n    };\n\n    // This function processes a specific node and sets up event handlers.\n    // We'll search for nodes and use it below.\n    var init = function (node) {\n      // If this node DOES NOT include a \"GET\" transaction, then there's nothing to do here.\n      if (\n        node.getAttribute(\"href\") +\n          node.getAttribute(\"hx-get\") +\n          node.getAttribute(\"data-hx-get\") ==\n        \"\"\n      ) {\n        return;\n      }\n\n      // Guarantee that we only initialize each node once.\n      if (node.preloadState !== undefined) {\n        return;\n      }\n\n      // Get event name from config.\n      var on = attr(node, \"preload\") || \"mousedown\";\n      const always = on.indexOf(\"always\") !== -1;\n      if (always) {\n        on = on.replace(\"always\", \"\").trim();\n      }\n\n      // FALL THROUGH to here means we need to add an EventListener\n\n      // Apply the listener to the node\n      node.addEventListener(on, function (evt) {\n        if (node.preloadState === \"PAUSE\") {\n          // Only add one event listener\n          node.preloadState = \"READY\"; // Required for the `load` function to trigger\n\n          // Special handling for \"mouseover\" events.  Wait 100ms before triggering load.\n          if (on === \"mouseover\") {\n            window.setTimeout(load(node), 100);\n          } else {\n            load(node)(); // all other events trigger immediately.\n          }\n        }\n      });\n\n      // Special handling for certain built-in event handlers\n      switch (on) {\n        case \"mouseover\":\n          // Mirror `touchstart` events (fires immediately)\n          node.addEventListener(\"touchstart\", load(node));\n\n          // WHhen the mouse leaves, immediately disable the preload\n          node.addEventListener(\"mouseout\", function (evt) {\n            if (evt.target === node && node.preloadState === \"READY\") {\n              node.preloadState = \"PAUSE\";\n            }\n          });\n          break;\n\n        case \"mousedown\":\n          // Mirror `touchstart` events (fires immediately)\n          node.addEventListener(\"touchstart\", load(node));\n          break;\n      }\n\n      // Mark the node as ready to run.\n      node.preloadState = \"PAUSE\";\n      node.preloadAlways = always;\n      htmx.trigger(node, \"preload:init\"); // This event can be used to load content immediately.\n    };\n\n    // Search for all child nodes that have a \"preload\" attribute\n    event.target.querySelectorAll(\"[preload]\").forEach(function (node) {\n      // Initialize the node with the \"preload\" attribute\n      init(node);\n\n      // Initialize all child elements that are anchors or have `hx-get` (use with care)\n      node.querySelectorAll(\"a,[hx-get],[data-hx-get]\").forEach(init);\n    });\n  },\n});\n"
  },
  {
    "path": "src/static/output/prism.css",
    "content": "/* PrismJS 1.29.0\nhttps://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+python&plugins=line-numbers+file-highlight+toolbar+copy-to-clipboard */\ncode[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}\npre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}\ndiv.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}\n"
  },
  {
    "path": "src/static/output/prism.js",
    "content": "/* PrismJS 1.29.0\nhttps://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+python&plugins=line-numbers+file-highlight+normalize-whitespace+toolbar+copy-to-clipboard */\nvar _self=\"undefined\"!=typeof window?window:\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/\\u00a0/g,\" \")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,\"__id\",{value:++t}),e.__id},clone:function e(n,t){var r,i;switch(t=t||{},a.util.type(n)){case\"Object\":if(i=a.util.objId(n),t[i])return t[i];for(var l in r={},t[i]=r,n)n.hasOwnProperty(l)&&(r[l]=e(n[l],t));return r;case\"Array\":return i=a.util.objId(n),t[i]?t[i]:(r=[],t[i]=r,n.forEach((function(n,a){r[a]=e(n,t)})),r);default:return n}},getLanguage:function(e){for(;e;){var t=n.exec(e.className);if(t)return t[1].toLowerCase();e=e.parentElement}return\"none\"},setLanguage:function(e,t){e.className=e.className.replace(RegExp(n,\"gi\"),\"\"),e.classList.add(\"language-\"+t)},currentScript:function(){if(\"undefined\"==typeof document)return null;if(\"currentScript\"in document)return document.currentScript;try{throw new Error}catch(r){var e=(/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(r.stack)||[])[1];if(e){var n=document.getElementsByTagName(\"script\");for(var t in n)if(n[t].src==e)return n[t]}return null}},isActive:function(e,n,t){for(var r=\"no-\"+n;e;){var a=e.classList;if(a.contains(n))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!t}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,n){var t=a.util.clone(a.languages[e]);for(var r in n)t[r]=n[r];return t},insertBefore:function(e,n,t,r){var i=(r=r||a.languages)[e],l={};for(var o in i)if(i.hasOwnProperty(o)){if(o==n)for(var s in t)t.hasOwnProperty(s)&&(l[s]=t[s]);t.hasOwnProperty(o)||(l[o]=i[o])}var u=r[e];return r[e]=l,a.languages.DFS(a.languages,(function(n,t){t===u&&n!=e&&(this[n]=l)})),l},DFS:function e(n,t,r,i){i=i||{};var l=a.util.objId;for(var o in n)if(n.hasOwnProperty(o)){t.call(n,o,n[o],r||o);var s=n[o],u=a.util.type(s);\"Object\"!==u||i[l(s)]?\"Array\"!==u||i[l(s)]||(i[l(s)]=!0,e(s,t,o,i)):(i[l(s)]=!0,e(s,t,null,i))}}},plugins:{},highlightAll:function(e,n){a.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var r={callback:t,container:e,selector:'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'};a.hooks.run(\"before-highlightall\",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),a.hooks.run(\"before-all-elements-highlight\",r);for(var i,l=0;i=r.elements[l++];)a.highlightElement(i,!0===n,r.callback)},highlightElement:function(n,t,r){var i=a.util.getLanguage(n),l=a.languages[i];a.util.setLanguage(n,i);var o=n.parentElement;o&&\"pre\"===o.nodeName.toLowerCase()&&a.util.setLanguage(o,i);var s={element:n,language:i,grammar:l,code:n.textContent};function u(e){s.highlightedCode=e,a.hooks.run(\"before-insert\",s),s.element.innerHTML=s.highlightedCode,a.hooks.run(\"after-highlight\",s),a.hooks.run(\"complete\",s),r&&r.call(s.element)}if(a.hooks.run(\"before-sanity-check\",s),(o=s.element.parentElement)&&\"pre\"===o.nodeName.toLowerCase()&&!o.hasAttribute(\"tabindex\")&&o.setAttribute(\"tabindex\",\"0\"),!s.code)return a.hooks.run(\"complete\",s),void(r&&r.call(s.element));if(a.hooks.run(\"before-highlight\",s),s.grammar)if(t&&e.Worker){var c=new Worker(a.filename);c.onmessage=function(e){u(e.data)},c.postMessage(JSON.stringify({language:s.language,code:s.code,immediateClose:!0}))}else u(a.highlight(s.code,s.grammar,s.language));else u(a.util.encode(s.code))},highlight:function(e,n,t){var r={code:e,grammar:n,language:t};if(a.hooks.run(\"before-tokenize\",r),!r.grammar)throw new Error('The language \"'+r.language+'\" has no grammar.');return r.tokens=a.tokenize(r.code,r.grammar),a.hooks.run(\"after-tokenize\",r),i.stringify(a.util.encode(r.tokens),r.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var r in t)n[r]=t[r];delete n.rest}var a=new s;return u(a,a.head,e),o(e,a,n,a.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=a.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=a.hooks.all[e];if(t&&t.length)for(var r,i=0;r=t[i++];)r(n)}},Token:i};function i(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||\"\").length}function l(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function o(e,n,t,r,s,g){for(var f in t)if(t.hasOwnProperty(f)&&t[f]){var h=t[f];h=Array.isArray(h)?h:[h];for(var d=0;d<h.length;++d){if(g&&g.cause==f+\",\"+d)return;var v=h[d],p=v.inside,m=!!v.lookbehind,y=!!v.greedy,k=v.alias;if(y&&!v.pattern.global){var x=v.pattern.toString().match(/[imsuy]*$/)[0];v.pattern=RegExp(v.pattern.source,x+\"g\")}for(var b=v.pattern||v,w=r.next,A=s;w!==n.tail&&!(g&&A>=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(j<O||\"string\"==typeof C.value);C=C.next)L++,j+=C.value.length;L--,E=e.slice(A,j),P.index-=A}else if(!(P=l(b,0,E,m)))continue;S=P.index;var N=P[0],_=E.slice(0,S),M=E.slice(S+N.length),W=A+E.length;g&&W>g.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+\",\"+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a<t&&r!==e.tail;a++)r=r.next;n.next=r,r.prev=n,e.length-=a}if(e.Prism=a,i.stringify=function e(n,t){if(\"string\"==typeof n)return n;if(Array.isArray(n)){var r=\"\";return n.forEach((function(n){r+=e(n,t)})),r}var i={type:n.type,content:e(n.content,t),tag:\"span\",classes:[\"token\",n.type],attributes:{},language:t},l=n.alias;l&&(Array.isArray(l)?Array.prototype.push.apply(i.classes,l):i.classes.push(l)),a.hooks.run(\"wrap\",i);var o=\"\";for(var s in i.attributes)o+=\" \"+s+'=\"'+(i.attributes[s]||\"\").replace(/\"/g,\"&quot;\")+'\"';return\"<\"+i.tag+' class=\"'+i.classes.join(\" \")+'\"'+o+\">\"+i.content+\"</\"+i.tag+\">\"},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener(\"message\",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute(\"data-manual\")&&(a.manual=!0)),!a.manual){var h=document.readyState;\"loading\"===h||\"interactive\"===h&&g&&g.defer?document.addEventListener(\"DOMContentLoaded\",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);\"undefined\"!=typeof module&&module.exports&&(module.exports=Prism),\"undefined\"!=typeof global&&(global.Prism=Prism);\nPrism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside[\"internal-subset\"].inside=Prism.languages.markup,Prism.hooks.add(\"wrap\",(function(a){\"entity\"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,\"&\"))})),Object.defineProperty(Prism.languages.markup.tag,\"addInlined\",{value:function(a,e){var s={};s[\"language-\"+e]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i;var t={\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:s}};t[\"language-\"+e]={pattern:/[\\s\\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp(\"(<__[^>]*>)(?:<!\\\\[CDATA\\\\[(?:[^\\\\]]|\\\\](?!\\\\]>))*\\\\]\\\\]>|(?!<!\\\\[CDATA\\\\[)[^])*?(?=</__>)\".replace(/__/g,(function(){return a})),\"i\"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore(\"markup\",\"cdata\",n)}}),Object.defineProperty(Prism.languages.markup.tag,\"addAttribute\",{value:function(a,e){Prism.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(\"(^|[\\\"'\\\\s])(?:\"+a+\")\\\\s*=\\\\s*(?:\\\"[^\\\"]*\\\"|'[^']*'|[^\\\\s'\\\">=]+(?=[\\\\s>]))\",\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[e,\"language-\"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend(\"markup\",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;\n!function(s){var e=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;s.languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:[^;{\\\\s\\\"']|\\\\s+(?!\\\\s)|\"+e.source+\")*?(?:;|(?=\\\\s*\\\\{))\"),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+e.source+\"|(?:[^\\\\\\\\\\r\\n()\\\"']|\\\\\\\\[^])*)\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+e.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+e.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined(\"style\",\"css\"),t.tag.addAttribute(\"style\",\"css\"))}(Prism);\nPrism.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/};\nPrism.languages.javascript=Prism.languages.extend(\"clike\",{\"class-name\":[Prism.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(\"(^|[^\\\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\\\dA-Fa-f]+(?:_[\\\\dA-Fa-f]+)*n?|\\\\d+(?:_\\\\d+)*n|(?:\\\\d+(?:_\\\\d+)*(?:\\\\.(?:\\\\d+(?:_\\\\d+)*)?)?|\\\\.\\\\d+(?:_\\\\d+)*)(?:[Ee][+-]?\\\\d+(?:_\\\\d+)*)?)(?![\\\\w$])\"),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),Prism.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,Prism.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(\"((?:^|[^$\\\\w\\\\xA0-\\\\uFFFF.\\\"'\\\\])\\\\s]|\\\\b(?:return|yield))\\\\s*)/(?:(?:\\\\[(?:[^\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}|(?:\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\])*\\\\])*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\\\s|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/)*(?:$|[\\r\\n,.;:})\\\\]]|//))\"),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:Prism.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),Prism.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:Prism.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),Prism.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined(\"script\",\"javascript\"),Prism.languages.markup.tag.addAttribute(\"on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)\",\"javascript\")),Prism.languages.js=Prism.languages.javascript;\nPrism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern:/![sra](?=[:}]$)/,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){var e=\"line-numbers\",n=/\\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){if(\"PRE\"===n.tagName&&n.classList.contains(e)){var i=n.querySelector(\".line-numbers-rows\");if(i){var r=parseInt(n.getAttribute(\"data-start\"),10)||1,s=r+(i.children.length-1);t<r&&(t=r),t>s&&(t=s);var l=t-r;return i.children[l]}}},resize:function(e){r([e])},assumeViewportIndependence:!0},i=void 0;window.addEventListener(\"resize\",(function(){t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll(\"pre.line-numbers\"))))})),Prism.hooks.add(\"complete\",(function(t){if(t.code){var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector(\".line-numbers-rows\")&&Prism.util.isActive(i,e)){i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join(\"<span></span>\");(l=document.createElement(\"span\")).setAttribute(\"aria-hidden\",\"true\"),l.className=\"line-numbers-rows\",l.innerHTML=u,s.hasAttribute(\"data-start\")&&(s.style.counterReset=\"linenumber \"+(parseInt(s.getAttribute(\"data-start\"),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run(\"line-numbers\",t)}}})),Prism.hooks.add(\"line-numbers\",(function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}))}function r(e){if(0!=(e=e.filter((function(e){var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)[\"white-space\"];return\"pre-wrap\"===t||\"pre-line\"===t}))).length){var t=e.map((function(e){var t=e.querySelector(\"code\"),i=e.querySelector(\".line-numbers-rows\");if(t&&i){var r=e.querySelector(\".line-numbers-sizer\"),s=t.textContent.split(n);r||((r=document.createElement(\"span\")).className=\"line-numbers-sizer\",t.appendChild(r)),r.innerHTML=\"0\",r.style.display=\"block\";var l=r.getBoundingClientRect().height;return r.innerHTML=\"\",{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}}})).filter(Boolean);t.forEach((function(e){var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){if(e&&e.length>1){var s=n.appendChild(document.createElement(\"span\"));s.style.display=\"block\",s.textContent=e}else i[t]=r}))})),t.forEach((function(e){for(var n=e.sizer,t=e.lineHeights,i=0,r=0;r<t.length;r++)void 0===t[r]&&(t[r]=n.children[i++].getBoundingClientRect().height)})),t.forEach((function(e){var n=e.sizer,t=e.element.querySelector(\".line-numbers-rows\");n.style.display=\"none\",n.innerHTML=\"\",e.lineHeights.forEach((function(e,n){t.children[n].style.height=e+\"px\"}))}))}}}();\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var t={js:\"javascript\",py:\"python\",rb:\"ruby\",ps1:\"powershell\",psm1:\"powershell\",sh:\"bash\",bat:\"batch\",h:\"c\",tex:\"latex\"},e=\"data-src-status\",i='pre[data-src]:not([data-src-status=\"loaded\"]):not([data-src-status=\"loading\"])';Prism.hooks.add(\"before-highlightall\",(function(t){t.selector+=\", \"+i})),Prism.hooks.add(\"before-sanity-check\",(function(a){var n=a.element;if(n.matches(i)){a.code=\"\",n.setAttribute(e,\"loading\");var s=n.appendChild(document.createElement(\"CODE\"));s.textContent=\"Loading…\";var r=n.getAttribute(\"data-src\"),l=a.language;if(\"none\"===l){var o=(/\\.(\\w+)$/.exec(r)||[,\"none\"])[1];l=t[o]||o}Prism.util.setLanguage(s,l),Prism.util.setLanguage(n,l);var h=Prism.plugins.autoloader;h&&h.loadLanguages(l),function(t,i,a){var r=new XMLHttpRequest;r.open(\"GET\",t,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?function(t){n.setAttribute(e,\"loaded\");var i=function(t){var e=/^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(t||\"\");if(e){var i=Number(e[1]),a=e[2],n=e[3];return a?n?[i,Number(n)]:[i,void 0]:[i,i]}}(n.getAttribute(\"data-range\"));if(i){var a=t.split(/\\r\\n?|\\n/g),r=i[0],l=null==i[1]?a.length:i[1];r<0&&(r+=a.length),r=Math.max(0,Math.min(r-1,a.length)),l<0&&(l+=a.length),l=Math.max(0,Math.min(l,a.length)),t=a.slice(r,l).join(\"\\n\"),n.hasAttribute(\"data-start\")||n.setAttribute(\"data-start\",String(r+1))}s.textContent=t,Prism.highlightElement(s)}(r.responseText):r.status>=400?a(\"✖ Error \"+r.status+\" while fetching file: \"+r.statusText):a(\"✖ Error: File does not exist or is empty\"))},r.send(null)}(r,0,(function(t){n.setAttribute(e,\"failed\"),s.textContent=t}))}})),Prism.plugins.fileHighlight={highlight:function(t){for(var e,a=(t||document).querySelectorAll(i),n=0;e=a[n++];)Prism.highlightElement(e)}};var a=!1;Prism.fileHighlight=function(){a||(console.warn(\"Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.\"),a=!0),Prism.plugins.fileHighlight.highlight.apply(this,arguments)}}}();\n!function(){if(\"undefined\"!=typeof Prism){var e=Object.assign||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t={\"remove-trailing\":\"boolean\",\"remove-indent\":\"boolean\",\"left-trim\":\"boolean\",\"right-trim\":\"boolean\",\"break-lines\":\"number\",indent:\"number\",\"remove-initial-line-feed\":\"boolean\",\"tabs-to-spaces\":\"number\",\"spaces-to-tabs\":\"number\"};n.prototype={setDefaults:function(t){this.defaults=e(this.defaults,t)},normalize:function(t,n){for(var r in n=e(this.defaults,n)){var i=r.replace(/-(\\w)/g,(function(e,t){return t.toUpperCase()}));\"normalize\"!==r&&\"setDefaults\"!==i&&n[r]&&this[i]&&(t=this[i].call(this,t,n[r]))}return t},leftTrim:function(e){return e.replace(/^\\s+/,\"\")},rightTrim:function(e){return e.replace(/\\s+$/,\"\")},tabsToSpaces:function(e,t){return t=0|t||4,e.replace(/\\t/g,new Array(++t).join(\" \"))},spacesToTabs:function(e,t){return t=0|t||4,e.replace(RegExp(\" {\"+t+\"}\",\"g\"),\"\\t\")},removeTrailing:function(e){return e.replace(/\\s*?$/gm,\"\")},removeInitialLineFeed:function(e){return e.replace(/^(?:\\r?\\n|\\r)/,\"\")},removeIndent:function(e){var t=e.match(/^[^\\S\\n\\r]*(?=\\S)/gm);return t&&t[0].length?(t.sort((function(e,t){return e.length-t.length})),t[0].length?e.replace(RegExp(\"^\"+t[0],\"gm\"),\"\"):e):e},indent:function(e,t){return e.replace(/^[^\\S\\n\\r]*(?=\\S)/gm,new Array(++t).join(\"\\t\")+\"$&\")},breakLines:function(e,t){t=!0===t?80:0|t||80;for(var n=e.split(\"\\n\"),i=0;i<n.length;++i)if(!(r(n[i])<=t)){for(var o=n[i].split(/(\\s+)/g),a=0,l=0;l<o.length;++l){var s=r(o[l]);(a+=s)>t&&(o[l]=\"\\n\"+o[l],a=s)}n[i]=o.join(\"\")}return n.join(\"\\n\")}},\"undefined\"!=typeof module&&module.exports&&(module.exports=n),Prism.plugins.NormalizeWhitespace=new n({\"remove-trailing\":!0,\"remove-indent\":!0,\"left-trim\":!0,\"right-trim\":!0}),Prism.hooks.add(\"before-sanity-check\",(function(e){var n=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings[\"whitespace-normalization\"])&&Prism.util.isActive(e.element,\"whitespace-normalization\",!0))if(e.element&&e.element.parentNode||!e.code){var r=e.element.parentNode;if(e.code&&r&&\"pre\"===r.nodeName.toLowerCase()){for(var i in null==e.settings&&(e.settings={}),t)if(Object.hasOwnProperty.call(t,i)){var o=t[i];if(r.hasAttribute(\"data-\"+i))try{var a=JSON.parse(r.getAttribute(\"data-\"+i)||\"true\");typeof a===o&&(e.settings[i]=a)}catch(e){}}for(var l=r.childNodes,s=\"\",c=\"\",u=!1,m=0;m<l.length;++m){var f=l[m];f==e.element?u=!0:\"#text\"===f.nodeName&&(u?c+=f.nodeValue:s+=f.nodeValue,r.removeChild(f),--m)}if(e.element.children.length&&Prism.plugins.KeepMarkup){var d=s+e.element.innerHTML+c;e.element.innerHTML=n.normalize(d,e.settings),e.code=e.element.textContent}else e.code=s+e.code+c,e.code=n.normalize(e.code,e.settings)}}else e.code=n.normalize(e.code,e.settings)}))}function n(t){this.defaults=e({},t)}function r(e){for(var t=0,n=0;n<e.length;++n)e.charCodeAt(n)==\"\\t\".charCodeAt(0)&&(t+=3);return e.length+t}}();\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r=\"function\"==typeof a?a:function(e){var t;return\"function\"==typeof a.onClick?((t=document.createElement(\"button\")).type=\"button\",t.addEventListener(\"click\",(function(){a.onClick.call(this,e)}))):\"string\"==typeof a.url?(t=document.createElement(\"a\")).href=a.url:t=document.createElement(\"span\"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key \"'+n+'\" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains(\"code-toolbar\")){var o=document.createElement(\"div\");o.classList.add(\"code-toolbar\"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement(\"div\");i.classList.add(\"toolbar\");var l=e,d=function(e){for(;e;){var t=e.getAttribute(\"data-toolbar-order\");if(null!=t)return(t=t.trim()).length?t.split(/\\s*,\\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement(\"div\");n.classList.add(\"toolbar-item\"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a(\"label\",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute(\"data-label\")){var n,a,r=t.getAttribute(\"data-label\");try{a=document.querySelector(\"template#\"+r)}catch(e){}return a?n=a.content:(t.hasAttribute(\"data-url\")?(n=document.createElement(\"a\")).href=t.getAttribute(\"data-url\"):n=document.createElement(\"span\"),n.textContent=r),n}})),Prism.hooks.add(\"complete\",r)}}();\n!function(){function t(t){var e=document.createElement(\"textarea\");e.value=t.getText(),e.style.top=\"0\",e.style.left=\"0\",e.style.position=\"fixed\",document.body.appendChild(e),e.focus(),e.select();try{var o=document.execCommand(\"copy\");setTimeout((function(){o?t.success():t.error()}),1)}catch(e){setTimeout((function(){t.error(e)}),1)}document.body.removeChild(e)}\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document&&(Prism.plugins.toolbar?Prism.plugins.toolbar.registerButton(\"copy-to-clipboard\",(function(e){var o=e.element,n=function(t){var e={copy:\"Copy\",\"copy-error\":\"Press Ctrl+C to copy\",\"copy-success\":\"Copied!\",\"copy-timeout\":5e3};for(var o in e){for(var n=\"data-prismjs-\"+o,c=t;c&&!c.hasAttribute(n);)c=c.parentElement;c&&(e[o]=c.getAttribute(n))}return e}(o),c=document.createElement(\"button\");c.className=\"copy-to-clipboard-button\",c.setAttribute(\"type\",\"button\");var r=document.createElement(\"span\");return c.appendChild(r),u(\"copy\"),function(e,o){e.addEventListener(\"click\",(function(){!function(e){navigator.clipboard?navigator.clipboard.writeText(e.getText()).then(e.success,(function(){t(e)})):t(e)}(o)}))}(c,{getText:function(){return o.textContent},success:function(){u(\"copy-success\"),i()},error:function(){u(\"copy-error\"),setTimeout((function(){!function(t){window.getSelection().selectAllChildren(t)}(o)}),1),i()}}),c;function i(){setTimeout((function(){u(\"copy\")}),n[\"copy-timeout\"])}function u(t){r.textContent=n[t],c.setAttribute(\"data-copy-state\",t)}})):console.warn(\"Copy to Clipboard plugin loaded before Toolbar plugin.\"))}();\n"
  },
  {
    "path": "src/static/output/sse.js",
    "content": ""
  },
  {
    "path": "src/static/output/style.css",
    "content": "/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:after,[data-popper-arrow]:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:after,[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 10 6'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}:is([dir=rtl]) select:not([size]){background-position:left .75rem center;padding-right:.75rem;padding-left:0}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark [type=checkbox]:checked,.dark [type=radio]:checked,[type=checkbox]:checked,[type=radio]:checked{border-color:#0000;background-color:currentColor;background-size:.55em .55em;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.dark [type=radio]:checked,[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\");background-size:1em 1em}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[type=checkbox]:indeterminate,[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;margin-inline-start:-1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}:is([dir=rtl]) input[type=file]::file-selector-button{padding-right:2rem;padding-left:1rem}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1px;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}.toggle-bg:after{content:\"\";position:absolute;top:.125rem;left:.125rem;background:#fff;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translateX(100%);;border-color:#fff}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3f83f880;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.apexcharts-canvas .apexcharts-tooltip{background-color:#fff;color:#6b7280;border:0!important;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-tooltip{background-color:#374151;color:#9ca3af;border-color:#0000;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{padding:.5rem .75rem;margin-bottom:.75rem;background-color:#f3f4f6;border-bottom-color:#e5e7eb;font-size:.875rem!important;font-weight:400;color:#6b7280}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{background-color:#4b5563;border-color:#6b7280;color:#9ca3af}.apexcharts-canvas .apexcharts-xaxistooltip{color:#6b7280;padding:.5rem .75rem;border-color:#0000;background-color:#fff;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-xaxistooltip{color:#9ca3af;background-color:#374151}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#6b7280;font-size:.875rem}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#9ca3af}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#111827;font-size:.875rem}:is([dir=rtl]) .apexcharts-tooltip .apexcharts-tooltip-marker{margin-right:0;margin-left:e}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip-text{font-weight:400;font-size:.875rem!important}.apexcharts-canvas .apexcharts-xaxistooltip:after,.apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip:after{border-width:8px;margin-left:-8px}.apexcharts-canvas .apexcharts-xaxistooltip:before{border-width:10px;margin-left:-10px}.dark .apexcharts-canvas .apexcharts-xaxistooltip:after,.dark .apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#374151}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-y-group{padding:0}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{padding-left:.75rem;padding-right:.75rem;padding-bottom:.75rem;background-color:#fff!important;color:#6b7280!important}.dark .apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{background-color:#374151!important;color:#9ca3af!important}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active:first-of-type{padding-top:.75rem}.apexcharts-canvas .apexcharts-legend{padding:0!important}.apexcharts-canvas .apexcharts-legend-text{font-size:.75rem;font-weight:500!important;padding-left:1.25rem;color:#6b7280!important}:is([dir=rtl]) .apexcharts-canvas .apexcharts-legend-text{padding-right:.5rem}.apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#111827!important}.dark .apexcharts-canvas .apexcharts-legend-text{color:#9ca3af!important}.dark .apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#fff!important}.apexcharts-canvas .apexcharts-legend-series{margin-left:.5rem;margin-right:.5rem;margin-bottom:.25rem!important;display:flex;align-items:center}.apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#111827!important;font-size:1.875rem;font-weight:700}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#fff!important}.apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#6b7280!important;font-size:1rem;font-weight:400}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#9ca3af!important}.apexcharts-canvas .apexcharts-datalabels .apexcharts-text.apexcharts-pie-label{font-size:.75rem!important;font-weight:600!important;text-shadow:none!important;filter:none!important}.apexcharts-gridline,.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{stroke:#e5e7eb!important}.dark .apexcharts-gridline,.dark .apexcharts-xcrosshairs,.dark .apexcharts-ycrosshairs{stroke:#374151!important}.format{color:var(--tw-format-body);max-width:65ch}.format :where([class~=lead]):not(:where([class~=not-format] *)){color:var(--tw-format-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.format :where(a):not(:where([class~=not-format] *)){color:var(--tw-format-links);text-decoration:underline;font-weight:500}.format :where(a):not(:where([class~=not-format] *)):hover{text-decoration:none}.format :where(strong):not(:where([class~=not-format] *)){color:var(--tw-format-bold);font-weight:700}.format :where(a strong):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote strong):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th strong):not(:where([class~=not-format] *)){color:inherit}.format :where(ol):not(:where([class~=not-format] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol[type=A]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=A s]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a s]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=I]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=I s]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i s]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=\"1\"]):not(:where([class~=not-format] *)){list-style-type:decimal}.format :where(ul):not(:where([class~=not-format] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol>li):not(:where([class~=not-format] *))::marker{font-weight:400;color:var(--tw-format-counters)}.format :where(ul>li):not(:where([class~=not-format] *))::marker{color:var(--tw-format-bullets)}.format :where(hr):not(:where([class~=not-format] *)){border-color:var(--tw-format-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.format :where(blockquote):not(:where([class~=not-format] *)){font-size:1.1111111em;font-weight:700;font-style:italic;color:var(--tw-format-quotes);quotes:\"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";margin-bottom:1.6em}.format :where(blockquote):not(:where([class~=not-format] *)):before{content:\"\";background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='24' fill='none'%3E%3Cpath fill='%239CA3AF' d='M18.69 24v-9.855C18.69 6.54 23.663 1.385 30.666 0l1.326 2.868c-3.242 1.223-5.326 4.85-5.326 7.799H32V24H18.69ZM0 24v-9.855C0 6.54 4.997 1.384 12 0l1.328 2.868C10.084 4.091 8 7.718 8 10.667h5.31V24H0Z'/%3E%3C/svg%3E\");background-repeat:no-repeat;color:var(--tw-format-quotes);width:1.7777778em;height:1.3333333em;display:block;margin-top:1.6em}.format :where(blockquote p:first-of-type):not(:where([class~=not-format] *)):before{content:open-quote}.format :where(blockquote p:last-of-type):not(:where([class~=not-format] *)):after{content:close-quote}.format :where(h1):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.format :where(h1 strong):not(:where([class~=not-format] *)){font-weight:900;color:inherit}.format :where(h2):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.5em;margin-top:0;margin-bottom:1em;line-height:1.3333333}.format :where(h2 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h3):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.25em;margin-top:0;margin-bottom:.6em;line-height:1.6}.format :where(h3 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h4):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;margin-top:0;margin-bottom:.5em;line-height:1.5}.format :where(h4 strong):not(:where([class~=not-format] *)){font-weight:700;color:inherit}.format :where(img):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.format :where(figcaption):not(:where([class~=not-format] *)){color:var(--tw-format-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.format :where(code):not(:where([class~=not-format] *)){color:var(--tw-format-code);font-weight:600;background-color:var(--tw-format-code-bg);padding:.3333333em .5555556em;border-radius:.2222222em;font-size:.875em}.format :where(a code):not(:where([class~=not-format] *)){color:inherit}.format :where(h1 code):not(:where([class~=not-format] *)){color:inherit}.format :where(h2 code):not(:where([class~=not-format] *)){color:inherit;font-size:.875em}.format :where(h3 code):not(:where([class~=not-format] *)){color:inherit;font-size:.9em}.format :where(h4 code):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote code):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th code):not(:where([class~=not-format] *)){color:inherit}.format :where(pre):not(:where([class~=not-format] *)){color:var(--tw-format-pre-code);background-color:var(--tw-format-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.format :where(pre code):not(:where([class~=not-format] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.format :where(pre code):not(:where([class~=not-format] *)):before{content:none}.format :where(pre code):not(:where([class~=not-format] *)):after{content:none}.format :where(table):not(:where([class~=not-format] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.format :where(thead):not(:where([class~=not-format] *)){background-color:var(--tw-format-th-bg);border-radius:.2777778em}.format :where(thead th):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;vertical-align:bottom;padding:.5555556em .5714286em .5714286em}.format :where(tbody tr):not(:where([class~=not-format] *)){border-bottom-width:1px;border-bottom-color:var(--tw-format-td-borders)}.format :where(tbody tr:last-child):not(:where([class~=not-format] *)){border-bottom-width:0}.format :where(tbody td):not(:where([class~=not-format] *)){vertical-align:initial}.format :where(tfoot):not(:where([class~=not-format] *)){border-top-width:1px;border-top-color:var(--tw-format-th-borders)}.format :where(tfoot td):not(:where([class~=not-format] *)){vertical-align:top}.format{--tw-format-body:#6b7280;--tw-format-headings:#111827;--tw-format-lead:#6b7280;--tw-format-links:#4b5563;--tw-format-bold:#111827;--tw-format-counters:#6b7280;--tw-format-bullets:#6b7280;--tw-format-hr:#e5e7eb;--tw-format-quotes:#111827;--tw-format-quote-borders:#e5e7eb;--tw-format-captions:#6b7280;--tw-format-code:#111827;--tw-format-code-bg:#f3f4f6;--tw-format-pre-code:#4b5563;--tw-format-pre-bg:#f3f4f6;--tw-format-th-borders:#e5e7eb;--tw-format-th-bg:#f9fafb;--tw-format-td-borders:#e5e7eb;--tw-format-invert-body:#9ca3af;--tw-format-invert-headings:#fff;--tw-format-invert-lead:#9ca3af;--tw-format-invert-links:#fff;--tw-format-invert-bold:#fff;--tw-format-invert-counters:#9ca3af;--tw-format-invert-bullets:#4b5563;--tw-format-invert-hr:#374151;--tw-format-invert-quotes:#f3f4f6;--tw-format-invert-quote-borders:#374151;--tw-format-invert-captions:#9ca3af;--tw-format-invert-code:#fff;--tw-format-invert-code-bg:#1f2937;--tw-format-invert-pre-code:#d1d5db;--tw-format-invert-pre-bg:#374151;--tw-format-invert-th-borders:#4b5563;--tw-format-invert-td-borders:#374151;--tw-format-invert-th-bg:#374151;font-size:1rem;line-height:1.75}.format :where(p):not(:where([class~=not-format] *)){margin-top:1.25em;margin-bottom:1.25em}.format :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(video):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(li):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format :where(ol>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(ul>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.5714286em}.format :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-sm :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format-sm :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-sm :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-base :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format-base :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-base :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.btn-primary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.625rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-primary-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary-small){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-red-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-red-small:hover{--tw-bg-opacity:1;background-color:rgb(155 28 28/var(--tw-bg-opacity))}.btn-red-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(248 180 180/var(--tw-ring-opacity))}:is(.dark .btn-red-small){--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity))}:is(.dark .btn-red-small:hover){--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity))}:is(.dark .btn-red-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(155 28 28/var(--tw-ring-opacity))}.btn-secondary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.625rem 1.25rem;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-secondary-small{border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary-small){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .label){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.input{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.input-error{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(119 29 29/var(--tw-text-opacity))}.input-error::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error::placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error:focus{--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(240 82 82/var(--tw-ring-opacity))}:is(.dark .input-error){--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .input-error)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}:is(.dark .input-error)::placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}.disabled-input{margin-bottom:1.25rem;display:block;width:100%;cursor:not-allowed;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.disabled-input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .disabled-input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:is(.dark .disabled-input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.link{font-weight:500;--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.link:hover{text-decoration-line:underline}:is(.dark .link){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}.form{margin-left:auto;margin-right:auto;min-width:24rem;max-width:24rem}.table{width:100%;text-align:left;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:is(.dark .table){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}@media (min-width:640px){.table{font-size:.875rem;line-height:1.25rem}}.table:where([dir=rtl],[dir=rtl] *){text-align:right}.thead{background-color:rgb(248 250 252/var(--tw-bg-opacity));font-size:.75rem;line-height:1rem;text-transform:uppercase;color:rgb(51 65 85/var(--tw-text-opacity))}.thead,:is(.dark .thead){--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .thead){background-color:rgb(51 65 85/var(--tw-bg-opacity));color:rgb(148 163 184/var(--tw-text-opacity))}.tr{border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .tr){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.td-tight{padding:.25rem}@media (min-width:640px){.td-tight{padding:.5rem .75rem}}.td{padding:.5rem .75rem}@media (min-width:640px){.td{padding:1rem 1.5rem}}.th{padding:.375rem .75rem}@media (min-width:640px){.th{padding:.75rem 1.5rem}}.checkbox{height:1rem;width:1rem;border-radius:.25rem;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.checkbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .checkbox){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity));--tw-ring-offset-color:#1f2937}:is(.dark .checkbox:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(28 100 242/var(--tw-ring-opacity))}.h3{font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .h3){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.progress-bar-div{display:flex;width:24rem;flex-direction:column;justify-content:center;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-\\[60px\\]{bottom:60px}.left-0{left:0}.right-0{right:0}.start-0{inset-inline-start:0}.top-0{top:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\\[16px\\]{height:16px}.min-h-screen{min-height:100vh}.w-1\\/2{width:50%}.w-4{width:1rem}.w-64{width:16rem}.w-\\[16px\\]{width:16px}.w-\\[256px\\]{width:256px}.w-full{width:100%}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-e-lg{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-s-lg{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-blue-600{--tw-border-opacity:1;border-color:rgb(28 100 242/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900\\/50{background-color:#11182780}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\\/50{background-color:#ffffff80}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.font-body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.text-blue-600{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(224 36 36/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(200 30 30/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:1024px){.lg\\:format-lg{font-size:1.125rem;line-height:1.7777778}.lg\\:format-lg :where(p):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:format-lg :where([class~=lead]):not(:where([class~=not-format] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\\:format-lg :where(blockquote):not(:where([class~=not-format] *)):before{margin-top:1.6666667em}.lg\\:format-lg :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:.5em}.lg\\:format-lg :where(h1):not(:where([class~=not-format] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\\:format-lg :where(h2):not(:where([class~=not-format] *)){font-size:2em;margin-top:0;margin-bottom:.6666667em;line-height:1.3333333}.lg\\:format-lg :where(h3):not(:where([class~=not-format] *)){font-size:1.3333333em;margin-top:0;margin-bottom:.6666667em;line-height:1.5}.lg\\:format-lg :where(h4):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:.4444444em;line-height:1.5555556}.lg\\:format-lg :where(img):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(video):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.lg\\:format-lg :where(figcaption):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\\:format-lg :where(code):not(:where([class~=not-format] *)){font-size:.8888889em}.lg\\:format-lg :where(h2 code):not(:where([class~=not-format] *)){font-size:.8666667em}.lg\\:format-lg :where(h3 code):not(:where([class~=not-format] *)){font-size:.875em}.lg\\:format-lg :where(pre):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding:1em 1.5em}.lg\\:format-lg :where(ol):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(ul):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(li):not(:where([class~=not-format] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\\:format-lg :where(ol>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(ul>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(hr):not(:where([class~=not-format] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\\:format-lg :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(table):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5}.lg\\:format-lg :where(thead th):not(:where([class~=not-format] *)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\\:format-lg :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.75em}.lg\\:format-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}}.hover\\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-2:focus,.focus\\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.focus\\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}:is(.dark .dark\\:border-blue-500){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-600){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-700){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\\:border-transparent){border-color:#0000}:is(.dark .dark\\:bg-blue-600){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-600){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800\\/50){background-color:#1f293780}:is(.dark .dark\\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-900\\/80){background-color:#111827cc}:is(.dark .dark\\:text-blue-500){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\\:text-red-500){--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .dark\\:text-slate-800){--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark .dark\\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:placeholder-gray-400)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:placeholder-gray-400)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:hover\\:bg-blue-700:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-600:hover){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-800:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:text-blue-500:hover){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-gray-300:hover){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-white:hover){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:focus\\:border-blue-500:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:focus\\:ring-blue-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}@media (min-width:640px){.sm\\:flex{display:flex}.sm\\:flex-row{flex-direction:row}.sm\\:items-start{align-items:flex-start}}@media (min-width:768px){.md\\:w-1\\/2{width:50%}}@media (min-width:1024px){.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:w-1\\/2{width:50%}.lg\\:flex-row{flex-direction:row}.lg\\:items-start{align-items:flex-start}.lg\\:justify-between{justify-content:space-between}.lg\\:py-8{padding-top:2rem;padding-bottom:2rem}}.rtl\\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}"
  },
  {
    "path": "src/static/output/ws.js",
    "content": "/*\nWebSockets Extension\n============================\nThis extension adds support for WebSockets to htmx.  See /www/extensions/ws.md for usage instructions.\n*/\n\n(function () {\n\n\t/** @type {import(\"../htmx\").HtmxInternalApi} */\n\tvar api;\n\n\thtmx.defineExtension(\"ws\", {\n\n\t\t/**\n\t\t * init is called once, when this extension is first registered.\n\t\t * @param {import(\"../htmx\").HtmxInternalApi} apiRef\n\t\t */\n\t\tinit: function (apiRef) {\n\n\t\t\t// Store reference to internal API\n\t\t\tapi = apiRef;\n\n\t\t\t// Default function for creating new EventSource objects\n\t\t\tif (!htmx.createWebSocket) {\n\t\t\t\thtmx.createWebSocket = createWebSocket;\n\t\t\t}\n\n\t\t\t// Default setting for reconnect delay\n\t\t\tif (!htmx.config.wsReconnectDelay) {\n\t\t\t\thtmx.config.wsReconnectDelay = \"full-jitter\";\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * onEvent handles all events passed to this extension.\n\t\t *\n\t\t * @param {string} name\n\t\t * @param {Event} evt\n\t\t */\n\t\tonEvent: function (name, evt) {\n\n\t\t\tswitch (name) {\n\n\t\t\t\t// Try to close the socket when elements are removed\n\t\t\t\tcase \"htmx:beforeCleanupElement\":\n\n\t\t\t\t\tvar internalData = api.getInternalData(evt.target)\n\n\t\t\t\t\tif (internalData.webSocket) {\n\t\t\t\t\t\tinternalData.webSocket.close();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\n\t\t\t\t// Try to create websockets when elements are processed\n\t\t\t\tcase \"htmx:beforeProcessNode\":\n\t\t\t\t\tvar parent = evt.target;\n\n\t\t\t\t\tforEach(queryAttributeOnThisOrChildren(parent, \"ws-connect\"), function (child) {\n\t\t\t\t\t\tensureWebSocket(child)\n\t\t\t\t\t});\n\t\t\t\t\tforEach(queryAttributeOnThisOrChildren(parent, \"ws-send\"), function (child) {\n\t\t\t\t\t\tensureWebSocketSend(child)\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction splitOnWhitespace(trigger) {\n\t\treturn trigger.trim().split(/\\s+/);\n\t}\n\n\tfunction getLegacyWebsocketURL(elt) {\n\t\tvar legacySSEValue = api.getAttributeValue(elt, \"hx-ws\");\n\t\tif (legacySSEValue) {\n\t\t\tvar values = splitOnWhitespace(legacySSEValue);\n\t\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\t\tvar value = values[i].split(/:(.+)/);\n\t\t\t\tif (value[0] === \"connect\") {\n\t\t\t\t\treturn value[1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * ensureWebSocket creates a new WebSocket on the designated element, using\n\t * the element's \"ws-connect\" attribute.\n\t * @param {HTMLElement} socketElt\n\t * @returns\n\t */\n\tfunction ensureWebSocket(socketElt) {\n\n\t\t// If the element containing the WebSocket connection no longer exists, then\n\t\t// do not connect/reconnect the WebSocket.\n\t\tif (!api.bodyContains(socketElt)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the source straight from the element's value\n\t\tvar wssSource = api.getAttributeValue(socketElt, \"ws-connect\")\n\n\t\tif (wssSource == null || wssSource === \"\") {\n\t\t\tvar legacySource = getLegacyWebsocketURL(socketElt);\n\t\t\tif (legacySource == null) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\twssSource = legacySource;\n\t\t\t}\n\t\t}\n\n\t\t// Guarantee that the wssSource value is a fully qualified URL\n\t\tif (wssSource.indexOf(\"/\") === 0) {\n\t\t\tvar base_part = location.hostname + (location.port ? ':' + location.port : '');\n\t\t\tif (location.protocol === 'https:') {\n\t\t\t\twssSource = \"wss://\" + base_part + wssSource;\n\t\t\t} else if (location.protocol === 'http:') {\n\t\t\t\twssSource = \"ws://\" + base_part + wssSource;\n\t\t\t}\n\t\t}\n\n\t\tvar socketWrapper = createWebsocketWrapper(socketElt, function () {\n\t\t\treturn htmx.createWebSocket(wssSource)\n\t\t});\n\n\t\tsocketWrapper.addEventListener('message', function (event) {\n\t\t\tif (maybeCloseWebSocketSource(socketElt)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar response = event.data;\n\t\t\tif (!api.triggerEvent(socketElt, \"htmx:wsBeforeMessage\", {\n\t\t\t\tmessage: response,\n\t\t\t\tsocketWrapper: socketWrapper.publicInterface\n\t\t\t})) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tapi.withExtensions(socketElt, function (extension) {\n\t\t\t\tresponse = extension.transformResponse(response, null, socketElt);\n\t\t\t});\n\n\t\t\tvar settleInfo = api.makeSettleInfo(socketElt);\n\t\t\tvar fragment = api.makeFragment(response);\n\n\t\t\tif (fragment.children.length) {\n\t\t\t\tvar children = Array.from(fragment.children);\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tapi.oobSwap(api.getAttributeValue(children[i], \"hx-swap-oob\") || \"true\", children[i], settleInfo);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tapi.settleImmediately(settleInfo.tasks);\n\t\t\tapi.triggerEvent(socketElt, \"htmx:wsAfterMessage\", { message: response, socketWrapper: socketWrapper.publicInterface })\n\t\t});\n\n\t\t// Put the WebSocket into the HTML Element's custom data.\n\t\tapi.getInternalData(socketElt).webSocket = socketWrapper;\n\t}\n\n\t/**\n\t * @typedef {Object} WebSocketWrapper\n\t * @property {WebSocket} socket\n\t * @property {Array<{message: string, sendElt: Element}>} messageQueue\n\t * @property {number} retryCount\n\t * @property {(message: string, sendElt: Element) => void} sendImmediately sendImmediately sends message regardless of websocket connection state\n\t * @property {(message: string, sendElt: Element) => void} send\n\t * @property {(event: string, handler: Function) => void} addEventListener\n\t * @property {() => void} handleQueuedMessages\n\t * @property {() => void} init\n\t * @property {() => void} close\n\t */\n\t/**\n\t *\n\t * @param socketElt\n\t * @param socketFunc\n\t * @returns {WebSocketWrapper}\n\t */\n\tfunction createWebsocketWrapper(socketElt, socketFunc) {\n\t\tvar wrapper = {\n\t\t\tsocket: null,\n\t\t\tmessageQueue: [],\n\t\t\tretryCount: 0,\n\n\t\t\t/** @type {Object<string, Function[]>} */\n\t\t\tevents: {},\n\n\t\t\taddEventListener: function (event, handler) {\n\t\t\t\tif (this.socket) {\n\t\t\t\t\tthis.socket.addEventListener(event, handler);\n\t\t\t\t}\n\n\t\t\t\tif (!this.events[event]) {\n\t\t\t\t\tthis.events[event] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.events[event].push(handler);\n\t\t\t},\n\n\t\t\tsendImmediately: function (message, sendElt) {\n\t\t\t\tif (!this.socket) {\n\t\t\t\t\tapi.triggerErrorEvent()\n\t\t\t\t}\n\t\t\t\tif (!sendElt || api.triggerEvent(sendElt, 'htmx:wsBeforeSend', {\n\t\t\t\t\tmessage: message,\n\t\t\t\t\tsocketWrapper: this.publicInterface\n\t\t\t\t})) {\n\t\t\t\t\tthis.socket.send(message);\n\t\t\t\t\tsendElt && api.triggerEvent(sendElt, 'htmx:wsAfterSend', {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tsocketWrapper: this.publicInterface\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsend: function (message, sendElt) {\n\t\t\t\tif (this.socket.readyState !== this.socket.OPEN) {\n\t\t\t\t\tthis.messageQueue.push({ message: message, sendElt: sendElt });\n\t\t\t\t} else {\n\t\t\t\t\tthis.sendImmediately(message, sendElt);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thandleQueuedMessages: function () {\n\t\t\t\twhile (this.messageQueue.length > 0) {\n\t\t\t\t\tvar queuedItem = this.messageQueue[0]\n\t\t\t\t\tif (this.socket.readyState === this.socket.OPEN) {\n\t\t\t\t\t\tthis.sendImmediately(queuedItem.message, queuedItem.sendElt);\n\t\t\t\t\t\tthis.messageQueue.shift();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tinit: function () {\n\t\t\t\tif (this.socket && this.socket.readyState === this.socket.OPEN) {\n\t\t\t\t\t// Close discarded socket\n\t\t\t\t\tthis.socket.close()\n\t\t\t\t}\n\n\t\t\t\t// Create a new WebSocket and event handlers\n\t\t\t\t/** @type {WebSocket} */\n\t\t\t\tvar socket = socketFunc();\n\n\t\t\t\t// The event.type detail is added for interface conformance with the\n\t\t\t\t// other two lifecycle events (open and close) so a single handler method\n\t\t\t\t// can handle them polymorphically, if required.\n\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsConnecting\", { event: { type: 'connecting' } });\n\n\t\t\t\tthis.socket = socket;\n\n\t\t\t\tsocket.onopen = function (e) {\n\t\t\t\t\twrapper.retryCount = 0;\n\t\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsOpen\", { event: e, socketWrapper: wrapper.publicInterface });\n\t\t\t\t\twrapper.handleQueuedMessages();\n\t\t\t\t}\n\n\t\t\t\tsocket.onclose = function (e) {\n\t\t\t\t\t// If socket should not be connected, stop further attempts to establish connection\n\t\t\t\t\t// If Abnormal Closure/Service Restart/Try Again Later, then set a timer to reconnect after a pause.\n\t\t\t\t\tif (!maybeCloseWebSocketSource(socketElt) && [1006, 1012, 1013].indexOf(e.code) >= 0) {\n\t\t\t\t\t\tvar delay = getWebSocketReconnectDelay(wrapper.retryCount);\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\twrapper.retryCount += 1;\n\t\t\t\t\t\t\twrapper.init();\n\t\t\t\t\t\t}, delay);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Notify client code that connection has been closed. Client code can inspect `event` field\n\t\t\t\t\t// to determine whether closure has been valid or abnormal\n\t\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsClose\", { event: e, socketWrapper: wrapper.publicInterface })\n\t\t\t\t};\n\n\t\t\t\tsocket.onerror = function (e) {\n\t\t\t\t\tapi.triggerErrorEvent(socketElt, \"htmx:wsError\", { error: e, socketWrapper: wrapper });\n\t\t\t\t\tmaybeCloseWebSocketSource(socketElt);\n\t\t\t\t};\n\n\t\t\t\tvar events = this.events;\n\t\t\t\tObject.keys(events).forEach(function (k) {\n\t\t\t\t\tevents[k].forEach(function (e) {\n\t\t\t\t\t\tsocket.addEventListener(k, e);\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tclose: function () {\n\t\t\t\tthis.socket.close()\n\t\t\t}\n\t\t}\n\n\t\twrapper.init();\n\n\t\twrapper.publicInterface = {\n\t\t\tsend: wrapper.send.bind(wrapper),\n\t\t\tsendImmediately: wrapper.sendImmediately.bind(wrapper),\n\t\t\tqueue: wrapper.messageQueue\n\t\t};\n\n\t\treturn wrapper;\n\t}\n\n\t/**\n\t * ensureWebSocketSend attaches trigger handles to elements with\n\t * \"ws-send\" attribute\n\t * @param {HTMLElement} elt\n\t */\n\tfunction ensureWebSocketSend(elt) {\n\t\tvar legacyAttribute = api.getAttributeValue(elt, \"hx-ws\");\n\t\tif (legacyAttribute && legacyAttribute !== 'send') {\n\t\t\treturn;\n\t\t}\n\n\t\tvar webSocketParent = api.getClosestMatch(elt, hasWebSocket)\n\t\tprocessWebSocketSend(webSocketParent, elt);\n\t}\n\n\t/**\n\t * hasWebSocket function checks if a node has webSocket instance attached\n\t * @param {HTMLElement} node\n\t * @returns {boolean}\n\t */\n\tfunction hasWebSocket(node) {\n\t\treturn api.getInternalData(node).webSocket != null;\n\t}\n\n\t/**\n\t * processWebSocketSend adds event listeners to the <form> element so that\n\t * messages can be sent to the WebSocket server when the form is submitted.\n\t * @param {HTMLElement} socketElt\n\t * @param {HTMLElement} sendElt\n\t */\n\tfunction processWebSocketSend(socketElt, sendElt) {\n\t\tvar nodeData = api.getInternalData(sendElt);\n\t\tvar triggerSpecs = api.getTriggerSpecs(sendElt);\n\t\ttriggerSpecs.forEach(function (ts) {\n\t\t\tapi.addTriggerHandler(sendElt, ts, nodeData, function (elt, evt) {\n\t\t\t\tif (maybeCloseWebSocketSource(socketElt)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/** @type {WebSocketWrapper} */\n\t\t\t\tvar socketWrapper = api.getInternalData(socketElt).webSocket;\n\t\t\t\tvar headers = api.getHeaders(sendElt, api.getTarget(sendElt));\n\t\t\t\tvar results = api.getInputValues(sendElt, 'post');\n\t\t\t\tvar errors = results.errors;\n\t\t\t\tvar rawParameters = results.values;\n\t\t\t\tvar expressionVars = api.getExpressionVars(sendElt);\n\t\t\t\tvar allParameters = api.mergeObjects(rawParameters, expressionVars);\n\t\t\t\tvar filteredParameters = api.filterValues(allParameters, sendElt);\n\n\t\t\t\tvar sendConfig = {\n\t\t\t\t\tparameters: filteredParameters,\n\t\t\t\t\tunfilteredParameters: allParameters,\n\t\t\t\t\theaders: headers,\n\t\t\t\t\terrors: errors,\n\n\t\t\t\t\ttriggeringEvent: evt,\n\t\t\t\t\tmessageBody: undefined,\n\t\t\t\t\tsocketWrapper: socketWrapper.publicInterface\n\t\t\t\t};\n\n\t\t\t\tif (!api.triggerEvent(elt, 'htmx:wsConfigSend', sendConfig)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (errors && errors.length > 0) {\n\t\t\t\t\tapi.triggerEvent(elt, 'htmx:validation:halted', errors);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar body = sendConfig.messageBody;\n\t\t\t\tif (body === undefined) {\n\t\t\t\t\tvar toSend = Object.assign({}, sendConfig.parameters);\n\t\t\t\t\tif (sendConfig.headers)\n\t\t\t\t\t\ttoSend['HEADERS'] = headers;\n\t\t\t\t\tbody = JSON.stringify(toSend);\n\t\t\t\t}\n\n\t\t\t\tsocketWrapper.send(body, elt);\n\n\t\t\t\tif (evt && api.shouldCancel(evt, elt)) {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * getWebSocketReconnectDelay is the default easing function for WebSocket reconnects.\n\t * @param {number} retryCount // The number of retries that have already taken place\n\t * @returns {number}\n\t */\n\tfunction getWebSocketReconnectDelay(retryCount) {\n\n\t\t/** @type {\"full-jitter\" | ((retryCount:number) => number)} */\n\t\tvar delay = htmx.config.wsReconnectDelay;\n\t\tif (typeof delay === 'function') {\n\t\t\treturn delay(retryCount);\n\t\t}\n\t\tif (delay === 'full-jitter') {\n\t\t\tvar exp = Math.min(retryCount, 6);\n\t\t\tvar maxDelay = 1000 * Math.pow(2, exp);\n\t\t\treturn maxDelay * Math.random();\n\t\t}\n\n\t\tlogError('htmx.config.wsReconnectDelay must either be a function or the string \"full-jitter\"');\n\t}\n\n\t/**\n\t * maybeCloseWebSocketSource checks to the if the element that created the WebSocket\n\t * still exists in the DOM.  If NOT, then the WebSocket is closed and this function\n\t * returns TRUE.  If the element DOES EXIST, then no action is taken, and this function\n\t * returns FALSE.\n\t *\n\t * @param {*} elt\n\t * @returns\n\t */\n\tfunction maybeCloseWebSocketSource(elt) {\n\t\tif (!api.bodyContains(elt)) {\n\t\t\tapi.getInternalData(elt).webSocket.close();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * createWebSocket is the default method for creating new WebSocket objects.\n\t * it is hoisted into htmx.createWebSocket to be overridden by the user, if needed.\n\t *\n\t * @param {string} url\n\t * @returns WebSocket\n\t */\n\tfunction createWebSocket(url) {\n\t\tvar sock = new WebSocket(url, []);\n\t\tsock.binaryType = htmx.config.wsBinaryType;\n\t\treturn sock;\n\t}\n\n\t/**\n\t * queryAttributeOnThisOrChildren returns all nodes that contain the requested attributeName, INCLUDING THE PROVIDED ROOT ELEMENT.\n\t *\n\t * @param {HTMLElement} elt\n\t * @param {string} attributeName\n\t */\n\tfunction queryAttributeOnThisOrChildren(elt, attributeName) {\n\n\t\tvar result = []\n\n\t\t// If the parent element also contains the requested attribute, then add it to the results too.\n\t\tif (api.hasAttribute(elt, attributeName) || api.hasAttribute(elt, \"hx-ws\")) {\n\t\t\tresult.push(elt);\n\t\t}\n\n\t\t// Search all child nodes that match the requested attribute\n\t\telt.querySelectorAll(\"[\" + attributeName + \"], [data-\" + attributeName + \"], [data-hx-ws], [hx-ws]\").forEach(function (node) {\n\t\t\tresult.push(node)\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * @template T\n\t * @param {T[]} arr\n\t * @param {(T) => void} func\n\t */\n\tfunction forEach(arr, func) {\n\t\tif (arr) {\n\t\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\t\tfunc(arr[i]);\n\t\t\t}\n\t\t}\n\t}\n\n})();\n\n"
  },
  {
    "path": "src/staticfiles/__init__.d41d8cd98f00.py",
    "content": ""
  },
  {
    "path": "src/staticfiles/__init__.py",
    "content": ""
  },
  {
    "path": "src/staticfiles/_base.51249b9b3e6d.html",
    "content": "{# djlint: off #}\n{% load static %}\n{% load django_htmx %}\n\n{% if not request.htmx %}\n    <!DOCTYPE html>\n    <html lang=\"en\">\n        <head>\n            <meta charset=\"UTF-8\">\n            <meta name=\"description\" content=\"Django HTMX Components\">\n            <meta name=\"keywords\" content=\"Django, HTMX, Components\">\n            <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n            <title>Django HTMX Components</title>\n            <link rel=\"stylesheet\" href=\"{% static 'style.css' %}\">\n            <link rel=\"stylesheet\" href=\"{% static 'prism.css' %}\">\n            <link rel=\"icon\" href=\"{% static 'favicon.ico' %}\" type=\"image/x-icon\">\n            {% block style %}\n            {% endblock style %}\n            {% component_css_dependencies %}\n        </head>\n        <body hx-headers='{\"x-csrftoken\": \"{{ csrf_token }}\"}'\n              class=\"antialiased bg-white dark:bg-gray-900 font-body\" hx-ext=\"preload\">\n            <nav class=\"bg-white dark:bg-gray-900 fixed w-full z-20 top-0 start-0 border-b border-gray-200 dark:border-gray-600\">\n                <div class=\"max-w-screen-xl flex flex-col items-center justify-between mx-auto p-4\">\n                    <span class=\"flex flex-col items-center space-x-3 rtl:space-x-reverse\">\n                        <a href=\"{% url 'index' %}\">\n                            <span class=\"self-center text-2xl font-semibold whitespace-nowrap dark:text-white\">Django HTMX Components</span>\n                        </a>\n                        <a href=\"https://iwanalabs.com\"\n                           target=\"_blank\"\n                           rel=\"noopener noreferrer\">\n                            <span class=\"self-center text-xs text-slate-600 whitespace-nowrap dark:text-white\">Made with 🦎 by Iwana Labs</span>\n                        </a>\n                    </span>\n                </div>\n            </nav>\n{% endif %}\n\n{% block content %}\n{% endblock content %}\n\n{% if not request.htmx %}\n        <script src=\"{% static 'htmx.min.js' %}\"></script>\n        <script src=\"{% static 'preload.js' %}\"></script>\n        <script src=\"{% static 'prism.js' %}\"></script>\n        <script src=\"{% static 'flowbite.min.js' %}\"></script>\n        {% django_htmx_script %}\n        {% block javascript %}\n        {% endblock javascript %}\n        {% component_js_dependencies %}\n        <script src=\"https://cdn.usefathom.com/script.js\" data-site=\"YPOOWREF\" defer></script>\n    </body>\n</html>\n{% endif %}\n"
  },
  {
    "path": "src/staticfiles/_base.9d44d0a966ee.html",
    "content": "{% load static %}\n{% load django_htmx %}\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta name=\"description\" content=\"Django HTMX Components\">\n        <meta name=\"keywords\" content=\"Django, HTMX, Components\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <title>Django HTMX Components</title>\n        <link rel=\"stylesheet\" href=\"{% static 'style.css' %}\">\n        <link rel=\"stylesheet\" href=\"{% static 'prism.css' %}\">\n        <link rel=\"icon\" href=\"{% static 'favicon.ico' %}\" type=\"image/x-icon\">\n        {% block style %}\n        {% endblock style %}\n        {% component_css_dependencies %}\n    </head>\n    <body hx-headers='{\"x-csrftoken\": \"{{ csrf_token }}\"}'\n          class=\"antialiased bg-white dark:bg-gray-900 font-body\">\n        <nav class=\"bg-white dark:bg-gray-900 fixed w-full z-20 top-0 start-0 border-b border-gray-200 dark:border-gray-600\">\n            <div class=\"max-w-screen-xl flex flex-col items-center justify-between mx-auto p-4\">\n                <span class=\"flex flex-col items-center space-x-3 rtl:space-x-reverse\">\n                    <a href=\"{% url 'index' %}\">\n                        <span class=\"self-center text-2xl font-semibold whitespace-nowrap dark:text-white\">Django HTMX Components</span>\n                    </a>\n                    <a href=\"https://iwanalabs.com\"\n                       target=\"_blank\"\n                       rel=\"noopener noreferrer\">\n                        <span class=\"self-center text-xs text-slate-600 whitespace-nowrap dark:text-white\">Made with 🦎 by Iwana Labs</span>\n                    </a>\n                </span>\n            </div>\n        </nav>\n        {% block content %}\n        {% endblock content %}\n        <script src=\"{% static 'htmx.min.js' %}\"></script>\n        <script src=\"{% static 'sse.js' %}\"></script>\n        <script src=\"{% static 'ws.js' %}\"></script>\n        <script src=\"{% static 'prism.js' %}\"></script>\n        <script src=\"{% static 'flowbite.min.js' %}\"></script>\n        {% django_htmx_script %}\n        {% block javascript %}\n        {% endblock javascript %}\n        {% component_js_dependencies %}\n    </body>\n</html>\n"
  },
  {
    "path": "src/staticfiles/_base.f222f8408fbe.html",
    "content": "{% load static %}\n{% load django_htmx %}\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\">\n        <meta name=\"description\" content=\"Django HTMX Components\">\n        <meta name=\"keywords\" content=\"Django, HTMX, Components\">\n        <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n        <title>Django HTMX Components</title>\n        <link rel=\"stylesheet\" href=\"{% static 'style.css' %}\">\n        <link rel=\"stylesheet\" href=\"{% static 'prism.css' %}\">\n        <link rel=\"icon\" href=\"{% static 'favicon.ico' %}\" type=\"image/x-icon\">\n        {% block style %}\n        {% endblock style %}\n        {% component_css_dependencies %}\n    </head>\n    <body hx-headers='{\"x-csrftoken\": \"{{ csrf_token }}\"}'\n          class=\"antialiased bg-white dark:bg-gray-900 font-body\">\n        <nav class=\"bg-white dark:bg-gray-900 fixed w-full z-20 top-0 start-0 border-b border-gray-200 dark:border-gray-600\">\n            <div class=\"max-w-screen-xl flex flex-col items-center justify-between mx-auto p-4\">\n                <span class=\"flex flex-col items-center space-x-3 rtl:space-x-reverse\">\n                    <a href=\"{% url 'index' %}\">\n                        <span class=\"self-center text-2xl font-semibold whitespace-nowrap dark:text-white\">Django HTMX Components</span>\n                    </a>\n                    <a href=\"https://iwanalabs.com\"\n                       target=\"_blank\"\n                       rel=\"noopener noreferrer\">\n                        <span class=\"self-center text-xs text-slate-600 whitespace-nowrap dark:text-white\">Made with 🦎 by Iwana Labs</span>\n                    </a>\n                </span>\n            </div>\n        </nav>\n        {% block content %}\n        {% endblock content %}\n        <script src=\"{% static 'htmx.min.js' %}\"></script>\n        <script src=\"{% static 'sse.js' %}\"></script>\n        <script src=\"{% static 'ws.js' %}\"></script>\n        <script src=\"{% static 'prism.js' %}\"></script>\n        <script src=\"{% static 'flowbite.min.js' %}\"></script>\n        {% django_htmx_script %}\n        {% block javascript %}\n        {% endblock javascript %}\n        {% component_js_dependencies %}\n        <script src=\"https://cdn.usefathom.com/script.js\" data-site=\"YPOOWREF\" defer></script>\n    </body>\n</html>\n"
  },
  {
    "path": "src/staticfiles/_base.html",
    "content": "{# djlint: off #}\n{% load static %}\n{% load django_htmx %}\n\n{% if not request.htmx %}\n    <!DOCTYPE html>\n    <html lang=\"en\">\n        <head>\n            <meta charset=\"UTF-8\">\n            <meta name=\"description\" content=\"Django HTMX Components\">\n            <meta name=\"keywords\" content=\"Django, HTMX, Components\">\n            <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n            <title>Django HTMX Components</title>\n            <link rel=\"stylesheet\" href=\"{% static 'style.css' %}\">\n            <link rel=\"stylesheet\" href=\"{% static 'prism.css' %}\">\n            <link rel=\"icon\" href=\"{% static 'favicon.ico' %}\" type=\"image/x-icon\">\n            {% block style %}\n            {% endblock style %}\n            {% component_css_dependencies %}\n        </head>\n        <body hx-headers='{\"x-csrftoken\": \"{{ csrf_token }}\"}'\n              class=\"antialiased bg-white dark:bg-gray-900 font-body\" hx-ext=\"preload\">\n            <nav class=\"bg-white dark:bg-gray-900 fixed w-full z-20 top-0 start-0 border-b border-gray-200 dark:border-gray-600\">\n                <div class=\"max-w-screen-xl flex flex-col items-center justify-between mx-auto p-4\">\n                    <span class=\"flex flex-col items-center space-x-3 rtl:space-x-reverse\">\n                        <a href=\"{% url 'index' %}\">\n                            <span class=\"self-center text-2xl font-semibold whitespace-nowrap dark:text-white\">Django HTMX Components</span>\n                        </a>\n                        <a href=\"https://iwanalabs.com\"\n                           target=\"_blank\"\n                           rel=\"noopener noreferrer\">\n                            <span class=\"self-center text-xs text-slate-600 whitespace-nowrap dark:text-white\">Made with 🦎 by Iwana Labs</span>\n                        </a>\n                    </span>\n                </div>\n            </nav>\n{% endif %}\n\n{% block content %}\n{% endblock content %}\n\n{% if not request.htmx %}\n        <script src=\"{% static 'htmx.min.js' %}\"></script>\n        <script src=\"{% static 'preload.js' %}\"></script>\n        <script src=\"{% static 'prism.js' %}\"></script>\n        <script src=\"{% static 'flowbite.min.js' %}\"></script>\n        {% django_htmx_script %}\n        {% block javascript %}\n        {% endblock javascript %}\n        {% component_js_dependencies %}\n        <script src=\"https://cdn.usefathom.com/script.js\" data-site=\"YPOOWREF\" defer></script>\n    </body>\n</html>\n{% endif %}\n"
  },
  {
    "path": "src/staticfiles/active_search/input.0d7f732a97de.py",
    "content": "from django_components import component\n\n\n@component.register(\"input_active_search\")\nclass InputActiveSearchComponent(component.Component):\n    template = \"\"\"\n        <div class=\"mb-4 w-[256px]\">\n            <input class=\"input form-control\" type=\"search\" \n                name=\"search\" placeholder=\"Search for a user\" \n                hx-post=\"{% url 'tbody_active_search' %}\" \n                hx-trigger=\"input changed delay:500ms, search\" \n                hx-target=\"#search-results\">\n        </div>\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th class=\"th\">First Name</th>\n                    <th class=\"th\">Last Name</th>\n                    <th class=\"th\">Email</th>\n                    <th class=\"th\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"search-results\">\n            </tbody>\n        </table>\n    \"\"\"\n"
  },
  {
    "path": "src/staticfiles/active_search/input.py",
    "content": "from django_components import component\n\n\n@component.register(\"input_active_search\")\nclass InputActiveSearchComponent(component.Component):\n    template = \"\"\"\n        <div class=\"mb-4 w-[256px]\">\n            <input class=\"input form-control\" type=\"search\" \n                name=\"search\" placeholder=\"Search for a user\" \n                hx-post=\"{% url 'tbody_active_search' %}\" \n                hx-trigger=\"input changed delay:500ms, search\" \n                hx-target=\"#search-results\">\n        </div>\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th class=\"th\">First Name</th>\n                    <th class=\"th\">Last Name</th>\n                    <th class=\"th\">Email</th>\n                    <th class=\"th\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"search-results\">\n            </tbody>\n        </table>\n    \"\"\"\n"
  },
  {
    "path": "src/staticfiles/active_search/tbody.46fe860010d3.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_active_search\")\nclass TBodyActiveSearchComponent(component.Component):\n    template = \"\"\"\n        {% for contact in contacts %}\n            <tr class=\"tr\"> \n                <td class=\"td\">{{ contact.first_name }}</td>\n                <td class=\"td\">{{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def post(self, request, **kwargs):\n        search = request.POST.get(\"search\")\n        if not search:\n            return self.render_to_response({})\n        contacts = Contact.objects.filter(\n            first_name__icontains=search\n        ) | Contact.objects.filter(last_name__icontains=search)\n        context = {\"contacts\": contacts.order_by(\"id\")[:10]}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/active_search/tbody.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_active_search\")\nclass TBodyActiveSearchComponent(component.Component):\n    template = \"\"\"\n        {% for contact in contacts %}\n            <tr class=\"tr\"> \n                <td class=\"td\">{{ contact.first_name }}</td>\n                <td class=\"td\">{{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def post(self, request, **kwargs):\n        search = request.POST.get(\"search\")\n        if not search:\n            return self.render_to_response({})\n        contacts = Contact.objects.filter(\n            first_name__icontains=search\n        ) | Contact.objects.filter(last_name__icontains=search)\n        context = {\"contacts\": contacts.order_by(\"id\")[:10]}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/active_search/urls.69d1718169f9.py",
    "content": "from django.urls import path\n\nfrom components.active_search.tbody import TBodyActiveSearchComponent\n\nurlpatterns = [\n    path(\n        \"search/\",\n        TBodyActiveSearchComponent.as_view(),\n        name=\"tbody_active_search\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/active_search/urls.py",
    "content": "from django.urls import path\n\nfrom components.active_search.tbody import TBodyActiveSearchComponent\n\nurlpatterns = [\n    path(\n        \"search/\",\n        TBodyActiveSearchComponent.as_view(),\n        name=\"tbody_active_search\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/active_search.78bab46ab4f3.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"input_active_search\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/active_search.78decbf8ff19.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"input_active_search\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/active_search.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"input_active_search\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/admin/css/autocomplete.4a81fc4242d0.css",
    "content": "select.admin-autocomplete {\n    width: 20em;\n}\n\n.select2-container--admin-autocomplete.select2-container {\n    min-height: 30px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single,\n.select2-container--admin-autocomplete .select2-selection--multiple {\n    min-height: 30px;\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection,\n.select2-container--admin-autocomplete.select2-container--open .select2-selection {\n    border-color: var(--body-quiet-color);\n    min-height: 30px;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single,\n.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single {\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple,\n.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple {\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single {\n    background-color: var(--body-bg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered {\n    color: var(--body-fg);\n    line-height: 30px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder {\n    color: var(--body-quiet-color);\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow {\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b {\n    border-color: #888 transparent transparent transparent;\n    border-style: solid;\n    border-width: 5px 4px 0 4px;\n    height: 0;\n    left: 50%;\n    margin-left: -4px;\n    margin-top: -2px;\n    position: absolute;\n    top: 50%;\n    width: 0;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n    float: left;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n    left: 1px;\n    right: auto;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single {\n    background-color: var(--darkened-bg);\n    cursor: default;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear {\n    display: none;\n}\n\n.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b {\n    border-color: transparent transparent #888 transparent;\n    border-width: 0 4px 5px 4px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple {\n    background-color: var(--body-bg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    cursor: text;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered {\n    box-sizing: border-box;\n    list-style: none;\n    margin: 0;\n    padding: 0 10px 5px 5px;\n    width: 100%;\n    display: flex;\n    flex-wrap: wrap;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li {\n    list-style: none;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder {\n    color: var(--body-quiet-color);\n    margin-top: 5px;\n    float: left;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin: 5px;\n    position: absolute;\n    right: 0;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice {\n    background-color: var(--darkened-bg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove {\n    color: var(--body-quiet-color);\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover {\n    color: var(--body-fg);\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-search--inline {\n    float: right;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n    margin-left: 5px;\n    margin-right: auto;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n    margin-left: 2px;\n    margin-right: auto;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple {\n    border: solid var(--body-quiet-color) 1px;\n    outline: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple {\n    background-color: var(--darkened-bg);\n    cursor: default;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove {\n    display: none;\n}\n\n.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple {\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.select2-container--admin-autocomplete .select2-search--dropdown {\n    background: var(--darkened-bg);\n}\n\n.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field {\n    background: var(--body-bg);\n    color: var(--body-fg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n}\n\n.select2-container--admin-autocomplete .select2-search--inline .select2-search__field {\n    background: transparent;\n    color: var(--body-fg);\n    border: none;\n    outline: 0;\n    box-shadow: none;\n    -webkit-appearance: textfield;\n}\n\n.select2-container--admin-autocomplete .select2-results > .select2-results__options {\n    max-height: 200px;\n    overflow-y: auto;\n    color: var(--body-fg);\n    background: var(--body-bg);\n}\n\n.select2-container--admin-autocomplete .select2-results__option[role=group] {\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] {\n    color: var(--body-quiet-color);\n}\n\n.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] {\n    background-color: var(--selected-bg);\n    color: var(--body-fg);\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option {\n    padding-left: 1em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group {\n    padding-left: 0;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -1em;\n    padding-left: 2em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -2em;\n    padding-left: 3em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -3em;\n    padding-left: 4em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -4em;\n    padding-left: 5em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -5em;\n    padding-left: 6em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {\n    background-color: var(--primary);\n    color: var(--primary-fg);\n}\n\n.select2-container--admin-autocomplete .select2-results__group {\n    cursor: default;\n    display: block;\n    padding: 6px;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/autocomplete.css",
    "content": "select.admin-autocomplete {\n    width: 20em;\n}\n\n.select2-container--admin-autocomplete.select2-container {\n    min-height: 30px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single,\n.select2-container--admin-autocomplete .select2-selection--multiple {\n    min-height: 30px;\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection,\n.select2-container--admin-autocomplete.select2-container--open .select2-selection {\n    border-color: var(--body-quiet-color);\n    min-height: 30px;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--single,\n.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--single {\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection.select2-selection--multiple,\n.select2-container--admin-autocomplete.select2-container--open .select2-selection.select2-selection--multiple {\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single {\n    background-color: var(--body-bg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__rendered {\n    color: var(--body-fg);\n    line-height: 30px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__placeholder {\n    color: var(--body-quiet-color);\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow {\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--single .select2-selection__arrow b {\n    border-color: #888 transparent transparent transparent;\n    border-style: solid;\n    border-width: 5px 4px 0 4px;\n    height: 0;\n    left: 50%;\n    margin-left: -4px;\n    margin-top: -2px;\n    position: absolute;\n    top: 50%;\n    width: 0;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n    float: left;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n    left: 1px;\n    right: auto;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single {\n    background-color: var(--darkened-bg);\n    cursor: default;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--single .select2-selection__clear {\n    display: none;\n}\n\n.select2-container--admin-autocomplete.select2-container--open .select2-selection--single .select2-selection__arrow b {\n    border-color: transparent transparent #888 transparent;\n    border-width: 0 4px 5px 4px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple {\n    background-color: var(--body-bg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    cursor: text;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered {\n    box-sizing: border-box;\n    list-style: none;\n    margin: 0;\n    padding: 0 10px 5px 5px;\n    width: 100%;\n    display: flex;\n    flex-wrap: wrap;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__rendered li {\n    list-style: none;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__placeholder {\n    color: var(--body-quiet-color);\n    margin-top: 5px;\n    float: left;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin: 5px;\n    position: absolute;\n    right: 0;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice {\n    background-color: var(--darkened-bg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove {\n    color: var(--body-quiet-color);\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px;\n}\n\n.select2-container--admin-autocomplete .select2-selection--multiple .select2-selection__choice__remove:hover {\n    color: var(--body-fg);\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice, .select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-search--inline {\n    float: right;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n    margin-left: 5px;\n    margin-right: auto;\n}\n\n.select2-container--admin-autocomplete[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n    margin-left: 2px;\n    margin-right: auto;\n}\n\n.select2-container--admin-autocomplete.select2-container--focus .select2-selection--multiple {\n    border: solid var(--body-quiet-color) 1px;\n    outline: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection--multiple {\n    background-color: var(--darkened-bg);\n    cursor: default;\n}\n\n.select2-container--admin-autocomplete.select2-container--disabled .select2-selection__choice__remove {\n    display: none;\n}\n\n.select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--above .select2-selection--multiple {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n}\n\n.select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--single, .select2-container--admin-autocomplete.select2-container--open.select2-container--below .select2-selection--multiple {\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.select2-container--admin-autocomplete .select2-search--dropdown {\n    background: var(--darkened-bg);\n}\n\n.select2-container--admin-autocomplete .select2-search--dropdown .select2-search__field {\n    background: var(--body-bg);\n    color: var(--body-fg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n}\n\n.select2-container--admin-autocomplete .select2-search--inline .select2-search__field {\n    background: transparent;\n    color: var(--body-fg);\n    border: none;\n    outline: 0;\n    box-shadow: none;\n    -webkit-appearance: textfield;\n}\n\n.select2-container--admin-autocomplete .select2-results > .select2-results__options {\n    max-height: 200px;\n    overflow-y: auto;\n    color: var(--body-fg);\n    background: var(--body-bg);\n}\n\n.select2-container--admin-autocomplete .select2-results__option[role=group] {\n    padding: 0;\n}\n\n.select2-container--admin-autocomplete .select2-results__option[aria-disabled=true] {\n    color: var(--body-quiet-color);\n}\n\n.select2-container--admin-autocomplete .select2-results__option[aria-selected=true] {\n    background-color: var(--selected-bg);\n    color: var(--body-fg);\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option {\n    padding-left: 1em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__group {\n    padding-left: 0;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -1em;\n    padding-left: 2em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -2em;\n    padding-left: 3em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -3em;\n    padding-left: 4em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -4em;\n    padding-left: 5em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -5em;\n    padding-left: 6em;\n}\n\n.select2-container--admin-autocomplete .select2-results__option--highlighted[aria-selected] {\n    background-color: var(--primary);\n    color: var(--primary-fg);\n}\n\n.select2-container--admin-autocomplete .select2-results__group {\n    cursor: default;\n    display: block;\n    padding: 6px;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/base.6be58084bde8.css",
    "content": "/*\n    DJANGO Admin styles\n*/\n\n/* VARIABLE DEFINITIONS */\nhtml[data-theme=\"light\"],\n:root {\n    --primary: #79aec8;\n    --secondary: #417690;\n    --accent: #f5dd5d;\n    --primary-fg: #fff;\n\n    --body-fg: #333;\n    --body-bg: #fff;\n    --body-quiet-color: #666;\n    --body-loud-color: #000;\n\n    --header-color: #ffc;\n    --header-branding-color: var(--accent);\n    --header-bg: var(--secondary);\n    --header-link-color: var(--primary-fg);\n\n    --breadcrumbs-fg: #c4dce8;\n    --breadcrumbs-link-fg: var(--body-bg);\n    --breadcrumbs-bg: #264b5d;\n\n    --link-fg: #417893;\n    --link-hover-color: #036;\n    --link-selected-fg: var(--secondary);\n\n    --hairline-color: #e8e8e8;\n    --border-color: #ccc;\n\n    --error-fg: #ba2121;\n\n    --message-success-bg: #dfd;\n    --message-warning-bg: #ffc;\n    --message-error-bg: #ffefef;\n\n    --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */\n    --selected-bg: #e4e4e4; /* E.g. selected table cells */\n    --selected-row: #ffc;\n\n    --button-fg: #fff;\n    --button-bg: var(--secondary);\n    --button-hover-bg: #205067;\n    --default-button-bg: #205067;\n    --default-button-hover-bg: var(--secondary);\n    --close-button-bg: #747474;\n    --close-button-hover-bg: #333;\n    --delete-button-bg: #ba2121;\n    --delete-button-hover-bg: #a41515;\n\n    --object-tools-fg: var(--button-fg);\n    --object-tools-bg: var(--close-button-bg);\n    --object-tools-hover-bg: var(--close-button-hover-bg);\n\n    --font-family-primary:\n        \"Segoe UI\",\n        system-ui,\n        Roboto,\n        \"Helvetica Neue\",\n        Arial,\n        sans-serif,\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\";\n    --font-family-monospace:\n        ui-monospace,\n        Menlo,\n        Monaco,\n        \"Cascadia Mono\",\n        \"Segoe UI Mono\",\n        \"Roboto Mono\",\n        \"Oxygen Mono\",\n        \"Ubuntu Monospace\",\n        \"Source Code Pro\",\n        \"Fira Mono\",\n        \"Droid Sans Mono\",\n        \"Courier New\",\n        monospace,\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\";\n}\n\nhtml, body {\n    height: 100%;\n}\n\nbody {\n    margin: 0;\n    padding: 0;\n    font-size: 0.875rem;\n    font-family: var(--font-family-primary);\n    color: var(--body-fg);\n    background: var(--body-bg);\n}\n\n/* LINKS */\n\na:link, a:visited {\n    color: var(--body-fg);\n    text-decoration: none;\n    transition: color 0.15s, background 0.15s;\n}\n\na:focus, a:hover {\n    color: var(--link-hover-color);\n}\n\na:focus {\n    text-decoration: underline;\n}\n\na img {\n    border: none;\n}\n\na.section:link, a.section:visited {\n    color: var(--header-link-color);\n    text-decoration: none;\n}\n\na.section:focus, a.section:hover {\n    text-decoration: underline;\n}\n\n/* GLOBAL DEFAULTS */\n\np, ol, ul, dl {\n    margin: .2em 0 .8em 0;\n}\n\np {\n    padding: 0;\n    line-height: 140%;\n}\n\nh1,h2,h3,h4,h5 {\n    font-weight: bold;\n}\n\nh1 {\n    margin: 0 0 20px;\n    font-weight: 300;\n    font-size: 1.25rem;\n    color: var(--body-quiet-color);\n}\n\nh2 {\n    font-size: 1rem;\n    margin: 1em 0 .5em 0;\n}\n\nh2.subhead {\n    font-weight: normal;\n    margin-top: 0;\n}\n\nh3 {\n    font-size: 0.875rem;\n    margin: .8em 0 .3em 0;\n    color: var(--body-quiet-color);\n    font-weight: bold;\n}\n\nh4 {\n    font-size: 0.75rem;\n    margin: 1em 0 .8em 0;\n    padding-bottom: 3px;\n}\n\nh5 {\n    font-size: 0.625rem;\n    margin: 1.5em 0 .5em 0;\n    color: var(--body-quiet-color);\n    text-transform: uppercase;\n    letter-spacing: 1px;\n}\n\nul > li {\n    list-style-type: square;\n    padding: 1px 0;\n}\n\nli ul {\n    margin-bottom: 0;\n}\n\nli, dt, dd {\n    font-size: 0.8125rem;\n    line-height: 1.25rem;\n}\n\ndt {\n    font-weight: bold;\n    margin-top: 4px;\n}\n\ndd {\n    margin-left: 0;\n}\n\nform {\n    margin: 0;\n    padding: 0;\n}\n\nfieldset {\n    margin: 0;\n    min-width: 0;\n    padding: 0;\n    border: none;\n    border-top: 1px solid var(--hairline-color);\n}\n\nblockquote {\n    font-size: 0.6875rem;\n    color: #777;\n    margin-left: 2px;\n    padding-left: 10px;\n    border-left: 5px solid #ddd;\n}\n\ncode, pre {\n    font-family: var(--font-family-monospace);\n    color: var(--body-quiet-color);\n    font-size: 0.75rem;\n    overflow-x: auto;\n}\n\npre.literal-block {\n    margin: 10px;\n    background: var(--darkened-bg);\n    padding: 6px 8px;\n}\n\ncode strong {\n    color: #930;\n}\n\nhr {\n    clear: both;\n    color: var(--hairline-color);\n    background-color: var(--hairline-color);\n    height: 1px;\n    border: none;\n    margin: 0;\n    padding: 0;\n    line-height: 1px;\n}\n\n/* TEXT STYLES & MODIFIERS */\n\n.small {\n    font-size: 0.6875rem;\n}\n\n.mini {\n    font-size: 0.625rem;\n}\n\n.help, p.help, form p.help, div.help, form div.help, div.help li {\n    font-size: 0.6875rem;\n    color: var(--body-quiet-color);\n}\n\ndiv.help ul {\n     margin-bottom: 0;\n}\n\n.help-tooltip {\n    cursor: help;\n}\n\np img, h1 img, h2 img, h3 img, h4 img, td img {\n    vertical-align: middle;\n}\n\n.quiet, a.quiet:link, a.quiet:visited {\n    color: var(--body-quiet-color);\n    font-weight: normal;\n}\n\n.clear {\n    clear: both;\n}\n\n.nowrap {\n    white-space: nowrap;\n}\n\n.hidden {\n    display: none !important;\n}\n\n/* TABLES */\n\ntable {\n    border-collapse: collapse;\n    border-color: var(--border-color);\n}\n\ntd, th {\n    font-size: 0.8125rem;\n    line-height: 1rem;\n    border-bottom: 1px solid var(--hairline-color);\n    vertical-align: top;\n    padding: 8px;\n}\n\nth {\n    font-weight: 600;\n    text-align: left;\n}\n\nthead th,\ntfoot td {\n    color: var(--body-quiet-color);\n    padding: 5px 10px;\n    font-size: 0.6875rem;\n    background: var(--body-bg);\n    border: none;\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: 1px solid var(--hairline-color);\n}\n\ntfoot td {\n    border-bottom: none;\n    border-top: 1px solid var(--hairline-color);\n}\n\nthead th.required {\n    color: var(--body-loud-color);\n}\n\ntr.alt {\n    background: var(--darkened-bg);\n}\n\ntr:nth-child(odd), .row-form-errors {\n    background: var(--body-bg);\n}\n\ntr:nth-child(even),\ntr:nth-child(even) .errorlist,\ntr:nth-child(odd) + .row-form-errors,\ntr:nth-child(odd) + .row-form-errors .errorlist {\n    background: var(--darkened-bg);\n}\n\n/* SORTABLE TABLES */\n\nthead th {\n    padding: 5px 10px;\n    line-height: normal;\n    text-transform: uppercase;\n    background: var(--darkened-bg);\n}\n\nthead th a:link, thead th a:visited {\n    color: var(--body-quiet-color);\n}\n\nthead th.sorted {\n    background: var(--selected-bg);\n}\n\nthead th.sorted .text {\n    padding-right: 42px;\n}\n\ntable thead th .text span {\n    padding: 8px 10px;\n    display: block;\n}\n\ntable thead th .text a {\n    display: block;\n    cursor: pointer;\n    padding: 8px 10px;\n}\n\ntable thead th .text a:focus, table thead th .text a:hover {\n    background: var(--selected-bg);\n}\n\nthead th.sorted a.sortremove {\n    visibility: hidden;\n}\n\ntable thead th.sorted:hover a.sortremove {\n    visibility: visible;\n}\n\ntable thead th.sorted .sortoptions {\n    display: block;\n    padding: 9px 5px 0 5px;\n    float: right;\n    text-align: right;\n}\n\ntable thead th.sorted .sortpriority {\n    font-size: .8em;\n    min-width: 12px;\n    text-align: center;\n    vertical-align: 3px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\ntable thead th.sorted .sortoptions a {\n    position: relative;\n    width: 14px;\n    height: 14px;\n    display: inline-block;\n    background: url(\"../img/sorting-icons.3a097b59f104.svg\") 0 0 no-repeat;\n    background-size: 14px auto;\n}\n\ntable thead th.sorted .sortoptions a.sortremove {\n    background-position: 0 0;\n}\n\ntable thead th.sorted .sortoptions a.sortremove:after {\n    content: '\\\\';\n    position: absolute;\n    top: -6px;\n    left: 3px;\n    font-weight: 200;\n    font-size: 1.125rem;\n    color: var(--body-quiet-color);\n}\n\ntable thead th.sorted .sortoptions a.sortremove:focus:after,\ntable thead th.sorted .sortoptions a.sortremove:hover:after {\n    color: var(--link-fg);\n}\n\ntable thead th.sorted .sortoptions a.sortremove:focus,\ntable thead th.sorted .sortoptions a.sortremove:hover {\n    background-position: 0 -14px;\n}\n\ntable thead th.sorted .sortoptions a.ascending {\n    background-position: 0 -28px;\n}\n\ntable thead th.sorted .sortoptions a.ascending:focus,\ntable thead th.sorted .sortoptions a.ascending:hover {\n    background-position: 0 -42px;\n}\n\ntable thead th.sorted .sortoptions a.descending {\n    top: 1px;\n    background-position: 0 -56px;\n}\n\ntable thead th.sorted .sortoptions a.descending:focus,\ntable thead th.sorted .sortoptions a.descending:hover {\n    background-position: 0 -70px;\n}\n\n/* FORM DEFAULTS */\n\ninput, textarea, select, .form-row p, form .button {\n    margin: 2px 0;\n    padding: 2px 3px;\n    vertical-align: middle;\n    font-family: var(--font-family-primary);\n    font-weight: normal;\n    font-size: 0.8125rem;\n}\n.form-row div.help {\n    padding: 2px 3px;\n}\n\ntextarea {\n    vertical-align: top;\n}\n\ninput[type=text], input[type=password], input[type=email], input[type=url],\ninput[type=number], input[type=tel], textarea, select, .vTextField {\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    padding: 5px 6px;\n    margin-top: 0;\n    color: var(--body-fg);\n    background-color: var(--body-bg);\n}\n\ninput[type=text]:focus, input[type=password]:focus, input[type=email]:focus,\ninput[type=url]:focus, input[type=number]:focus, input[type=tel]:focus,\ntextarea:focus, select:focus, .vTextField:focus {\n    border-color: var(--body-quiet-color);\n}\n\nselect {\n    height: 1.875rem;\n}\n\nselect[multiple] {\n    /* Allow HTML size attribute to override the height in the rule above. */\n    height: auto;\n    min-height: 150px;\n}\n\n/* FORM BUTTONS */\n\n.button, input[type=submit], input[type=button], .submit-row input, a.button {\n    background: var(--button-bg);\n    padding: 10px 15px;\n    border: none;\n    border-radius: 4px;\n    color: var(--button-fg);\n    cursor: pointer;\n    transition: background 0.15s;\n}\n\na.button {\n    padding: 4px 5px;\n}\n\n.button:active, input[type=submit]:active, input[type=button]:active,\n.button:focus, input[type=submit]:focus, input[type=button]:focus,\n.button:hover, input[type=submit]:hover, input[type=button]:hover {\n    background: var(--button-hover-bg);\n}\n\n.button[disabled], input[type=submit][disabled], input[type=button][disabled] {\n    opacity: 0.4;\n}\n\n.button.default, input[type=submit].default, .submit-row input.default {\n    border: none;\n    font-weight: 400;\n    background: var(--default-button-bg);\n}\n\n.button.default:active, input[type=submit].default:active,\n.button.default:focus, input[type=submit].default:focus,\n.button.default:hover, input[type=submit].default:hover {\n    background: var(--default-button-hover-bg);\n}\n\n.button[disabled].default,\ninput[type=submit][disabled].default,\ninput[type=button][disabled].default {\n    opacity: 0.4;\n}\n\n\n/* MODULES */\n\n.module {\n    border: none;\n    margin-bottom: 30px;\n    background: var(--body-bg);\n}\n\n.module p, .module ul, .module h3, .module h4, .module dl, .module pre {\n    padding-left: 10px;\n    padding-right: 10px;\n}\n\n.module blockquote {\n    margin-left: 12px;\n}\n\n.module ul, .module ol {\n    margin-left: 1.5em;\n}\n\n.module h3 {\n    margin-top: .6em;\n}\n\n.module h2, .module caption, .inline-group h2 {\n    margin: 0;\n    padding: 8px;\n    font-weight: 400;\n    font-size: 0.8125rem;\n    text-align: left;\n    background: var(--header-bg);\n    color: var(--header-link-color);\n}\n\n.module caption,\n.inline-group h2 {\n    font-size: 0.75rem;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n}\n\n.module table {\n    border-collapse: collapse;\n}\n\n/* MESSAGES & ERRORS */\n\nul.messagelist {\n    padding: 0;\n    margin: 0;\n}\n\nul.messagelist li {\n    display: block;\n    font-weight: 400;\n    font-size: 0.8125rem;\n    padding: 10px 10px 10px 65px;\n    margin: 0 0 10px 0;\n    background: var(--message-success-bg) url(\"../img/icon-yes.d2f9f035226a.svg\") 40px 12px no-repeat;\n    background-size: 16px auto;\n    color: var(--body-fg);\n    word-break: break-word;\n}\n\nul.messagelist li.warning {\n    background: var(--message-warning-bg) url(\"../img/icon-alert.034cc7d8a67f.svg\") 40px 14px no-repeat;\n    background-size: 14px auto;\n}\n\nul.messagelist li.error {\n    background: var(--message-error-bg) url(\"../img/icon-no.439e821418cd.svg\") 40px 12px no-repeat;\n    background-size: 16px auto;\n}\n\n.errornote {\n    font-size: 0.875rem;\n    font-weight: 700;\n    display: block;\n    padding: 10px 12px;\n    margin: 0 0 10px 0;\n    color: var(--error-fg);\n    border: 1px solid var(--error-fg);\n    border-radius: 4px;\n    background-color: var(--body-bg);\n    background-position: 5px 12px;\n    overflow-wrap: break-word;\n}\n\nul.errorlist {\n    margin: 0 0 4px;\n    padding: 0;\n    color: var(--error-fg);\n    background: var(--body-bg);\n}\n\nul.errorlist li {\n    font-size: 0.8125rem;\n    display: block;\n    margin-bottom: 4px;\n    overflow-wrap: break-word;\n}\n\nul.errorlist li:first-child {\n    margin-top: 0;\n}\n\nul.errorlist li a {\n    color: inherit;\n    text-decoration: underline;\n}\n\ntd ul.errorlist {\n    margin: 0;\n    padding: 0;\n}\n\ntd ul.errorlist li {\n    margin: 0;\n}\n\n.form-row.errors {\n    margin: 0;\n    border: none;\n    border-bottom: 1px solid var(--hairline-color);\n    background: none;\n}\n\n.form-row.errors ul.errorlist li {\n    padding-left: 0;\n}\n\n.errors input, .errors select, .errors textarea,\ntd ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea {\n    border: 1px solid var(--error-fg);\n}\n\n.description {\n    font-size: 0.75rem;\n    padding: 5px 0 0 12px;\n}\n\n/* BREADCRUMBS */\n\ndiv.breadcrumbs {\n    background: var(--breadcrumbs-bg);\n    padding: 10px 40px;\n    border: none;\n    color: var(--breadcrumbs-fg);\n    text-align: left;\n}\n\ndiv.breadcrumbs a {\n    color: var(--breadcrumbs-link-fg);\n}\n\ndiv.breadcrumbs a:focus, div.breadcrumbs a:hover {\n    color: var(--breadcrumbs-fg);\n}\n\n/* ACTION ICONS */\n\n.viewlink, .inlineviewlink {\n    padding-left: 16px;\n    background: url(\"../img/icon-viewlink.41eb31f7826e.svg\") 0 1px no-repeat;\n}\n\n.hidelink {\n    padding-left: 16px;\n    background: url(\"../img/icon-hidelink.8d245a995e18.svg\") 0 1px no-repeat;\n}\n\n.addlink {\n    padding-left: 16px;\n    background: url(\"../img/icon-addlink.d519b3bab011.svg\") 0 1px no-repeat;\n}\n\n.changelink, .inlinechangelink {\n    padding-left: 16px;\n    background: url(\"../img/icon-changelink.18d2fd706348.svg\") 0 1px no-repeat;\n}\n\n.deletelink {\n    padding-left: 16px;\n    background: url(\"../img/icon-deletelink.564ef9dc3854.svg\") 0 1px no-repeat;\n}\n\na.deletelink:link, a.deletelink:visited {\n    color: #CC3434; /* XXX Probably unused? */\n}\n\na.deletelink:focus, a.deletelink:hover {\n    color: #993333; /* XXX Probably unused? */\n    text-decoration: none;\n}\n\n/* OBJECT TOOLS */\n\n.object-tools {\n    font-size: 0.625rem;\n    font-weight: bold;\n    padding-left: 0;\n    float: right;\n    position: relative;\n    margin-top: -48px;\n}\n\n.object-tools li {\n    display: block;\n    float: left;\n    margin-left: 5px;\n    height: 1rem;\n}\n\n.object-tools a {\n    border-radius: 15px;\n}\n\n.object-tools a:link, .object-tools a:visited {\n    display: block;\n    float: left;\n    padding: 3px 12px;\n    background: var(--object-tools-bg);\n    color: var(--object-tools-fg);\n    font-weight: 400;\n    font-size: 0.6875rem;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.object-tools a:focus, .object-tools a:hover {\n    background-color: var(--object-tools-hover-bg);\n}\n\n.object-tools a:focus{\n    text-decoration: none;\n}\n\n.object-tools a.viewsitelink, .object-tools a.addlink {\n    background-repeat: no-repeat;\n    background-position: right 7px center;\n    padding-right: 26px;\n}\n\n.object-tools a.viewsitelink {\n    background-image: url(\"../img/tooltag-arrowright.bbfb788a849e.svg\");\n}\n\n.object-tools a.addlink {\n    background-image: url(\"../img/tooltag-add.e59d620a9742.svg\");\n}\n\n/* OBJECT HISTORY */\n\n#change-history table {\n    width: 100%;\n}\n\n#change-history table tbody th {\n    width: 16em;\n}\n\n#change-history .paginator {\n    color: var(--body-quiet-color);\n    border-bottom: 1px solid var(--hairline-color);\n    background: var(--body-bg);\n    overflow: hidden;\n}\n\n/* PAGE STRUCTURE */\n\n#container {\n    position: relative;\n    width: 100%;\n    min-width: 980px;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n}\n\n#container > .main {\n    display: flex;\n    flex: 1 0 auto;\n}\n\n.main > .content {\n    flex:  1 0;\n    max-width: 100%;\n}\n\n.skip-to-content-link {\n    position: absolute;\n    top: -999px;\n    margin: 5px;\n    padding: 5px;\n    background: var(--body-bg);\n    z-index: 1;\n}\n\n.skip-to-content-link:focus {\n    left: 0px;\n    top: 0px;\n}\n\n#content {\n    padding: 20px 40px;\n}\n\n.dashboard #content {\n    width: 600px;\n}\n\n#content-main {\n    float: left;\n    width: 100%;\n}\n\n#content-related {\n    float: right;\n    width: 260px;\n    position: relative;\n    margin-right: -300px;\n}\n\n#footer {\n    clear: both;\n    padding: 10px;\n}\n\n/* COLUMN TYPES */\n\n.colMS {\n    margin-right: 300px;\n}\n\n.colSM {\n    margin-left: 300px;\n}\n\n.colSM #content-related {\n    float: left;\n    margin-right: 0;\n    margin-left: -300px;\n}\n\n.colSM #content-main {\n    float: right;\n}\n\n.popup .colM {\n    width: auto;\n}\n\n/* HEADER */\n\n#header {\n    width: auto;\n    height: auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 10px 40px;\n    background: var(--header-bg);\n    color: var(--header-color);\n}\n\n#header a:link, #header a:visited, #logout-form button {\n    color: var(--header-link-color);\n}\n\n#header a:focus , #header a:hover {\n    text-decoration: underline;\n}\n\n#branding {\n    display: flex;\n}\n\n#site-name {\n    padding: 0;\n    margin: 0;\n    margin-inline-end: 20px;\n    font-weight: 300;\n    font-size: 1.5rem;\n    color: var(--header-branding-color);\n}\n\n#site-name a:link, #site-name a:visited {\n    color: var(--accent);\n}\n\n#branding h2 {\n    padding: 0 10px;\n    font-size: 0.875rem;\n    margin: -8px 0 8px 0;\n    font-weight: normal;\n    color: var(--header-color);\n}\n\n#branding a:hover {\n    text-decoration: none;\n}\n\n#logout-form {\n    display: inline;\n}\n\n#logout-form button {\n    background: none;\n    border: 0;\n    cursor: pointer;\n    font-family: var(--font-family-primary);\n}\n\n#user-tools {\n    float: right;\n    margin: 0 0 0 20px;\n    text-align: right;\n}\n\n#user-tools, #logout-form button{\n    padding: 0;\n    font-weight: 300;\n    font-size: 0.6875rem;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n}\n\n#user-tools a, #logout-form button {\n    border-bottom: 1px solid rgba(255, 255, 255, 0.25);\n}\n\n#user-tools a:focus, #user-tools a:hover,\n#logout-form button:active, #logout-form button:hover {\n    text-decoration: none;\n    border-bottom: 0;\n}\n\n#logout-form button:active, #logout-form button:hover {\n    margin-bottom: 1px;\n}\n\n/* SIDEBAR */\n\n#content-related {\n    background: var(--darkened-bg);\n}\n\n#content-related .module {\n    background: none;\n}\n\n#content-related h3 {\n    color: var(--body-quiet-color);\n    padding: 0 16px;\n    margin: 0 0 16px;\n}\n\n#content-related h4 {\n    font-size: 0.8125rem;\n}\n\n#content-related p {\n    padding-left: 16px;\n    padding-right: 16px;\n}\n\n#content-related .actionlist {\n    padding: 0;\n    margin: 16px;\n}\n\n#content-related .actionlist li {\n    line-height: 1.2;\n    margin-bottom: 10px;\n    padding-left: 18px;\n}\n\n#content-related .module h2 {\n    background: none;\n    padding: 16px;\n    margin-bottom: 16px;\n    border-bottom: 1px solid var(--hairline-color);\n    font-size: 1.125rem;\n    color: var(--body-fg);\n}\n\n.delete-confirmation form input[type=\"submit\"] {\n    background: var(--delete-button-bg);\n    border-radius: 4px;\n    padding: 10px 15px;\n    color: var(--button-fg);\n}\n\n.delete-confirmation form input[type=\"submit\"]:active,\n.delete-confirmation form input[type=\"submit\"]:focus,\n.delete-confirmation form input[type=\"submit\"]:hover {\n    background: var(--delete-button-hover-bg);\n}\n\n.delete-confirmation form .cancel-link {\n    display: inline-block;\n    vertical-align: middle;\n    height: 0.9375rem;\n    line-height: 0.9375rem;\n    border-radius: 4px;\n    padding: 10px 15px;\n    color: var(--button-fg);\n    background: var(--close-button-bg);\n    margin: 0 0 0 10px;\n}\n\n.delete-confirmation form .cancel-link:active,\n.delete-confirmation form .cancel-link:focus,\n.delete-confirmation form .cancel-link:hover {\n    background: var(--close-button-hover-bg);\n}\n\n/* POPUP */\n.popup #content {\n    padding: 20px;\n}\n\n.popup #container {\n    min-width: 0;\n}\n\n.popup #header {\n    padding: 10px 20px;\n}\n\n/* PAGINATOR */\n\n.paginator {\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    font-size: 0.8125rem;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: 22px;\n    margin: 0;\n    border-top: 1px solid var(--hairline-color);\n    width: 100%;\n}\n\n.paginator a:link, .paginator a:visited {\n    padding: 2px 6px;\n    background: var(--button-bg);\n    text-decoration: none;\n    color: var(--button-fg);\n}\n\n.paginator a.showall {\n    border: none;\n    background: none;\n    color: var(--link-fg);\n}\n\n.paginator a.showall:focus, .paginator a.showall:hover {\n    background: none;\n    color: var(--link-hover-color);\n}\n\n.paginator .end {\n    margin-right: 6px;\n}\n\n.paginator .this-page {\n    padding: 2px 6px;\n    font-weight: bold;\n    font-size: 0.8125rem;\n    vertical-align: top;\n}\n\n.paginator a:focus, .paginator a:hover {\n    color: white;\n    background: var(--link-hover-color);\n}\n\n.paginator input {\n    margin-left: auto;\n}\n\n.base-svgs {\n    display: none;\n}\n\n.visually-hidden {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    overflow: hidden;\n    clip: rect(0,0,0,0);\n    white-space: nowrap;\n    border: 0;\n    color: var(--body-fg);\n    background-color: var(--body-bg);\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/base.9f65b5cd54b3.css",
    "content": "/*\n    DJANGO Admin styles\n*/\n\n/* VARIABLE DEFINITIONS */\nhtml[data-theme=\"light\"],\n:root {\n    --primary: #79aec8;\n    --secondary: #417690;\n    --accent: #f5dd5d;\n    --primary-fg: #fff;\n\n    --body-fg: #333;\n    --body-bg: #fff;\n    --body-quiet-color: #666;\n    --body-loud-color: #000;\n\n    --header-color: #ffc;\n    --header-branding-color: var(--accent);\n    --header-bg: var(--secondary);\n    --header-link-color: var(--primary-fg);\n\n    --breadcrumbs-fg: #c4dce8;\n    --breadcrumbs-link-fg: var(--body-bg);\n    --breadcrumbs-bg: #264b5d;\n\n    --link-fg: #417893;\n    --link-hover-color: #036;\n    --link-selected-fg: var(--secondary);\n\n    --hairline-color: #e8e8e8;\n    --border-color: #ccc;\n\n    --error-fg: #ba2121;\n\n    --message-success-bg: #dfd;\n    --message-warning-bg: #ffc;\n    --message-error-bg: #ffefef;\n\n    --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */\n    --selected-bg: #e4e4e4; /* E.g. selected table cells */\n    --selected-row: #ffc;\n\n    --button-fg: #fff;\n    --button-bg: var(--secondary);\n    --button-hover-bg: #205067;\n    --default-button-bg: #205067;\n    --default-button-hover-bg: var(--secondary);\n    --close-button-bg: #747474;\n    --close-button-hover-bg: #333;\n    --delete-button-bg: #ba2121;\n    --delete-button-hover-bg: #a41515;\n\n    --object-tools-fg: var(--button-fg);\n    --object-tools-bg: var(--close-button-bg);\n    --object-tools-hover-bg: var(--close-button-hover-bg);\n\n    --font-family-primary:\n        \"Segoe UI\",\n        system-ui,\n        Roboto,\n        \"Helvetica Neue\",\n        Arial,\n        sans-serif,\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\";\n    --font-family-monospace:\n        ui-monospace,\n        Menlo,\n        Monaco,\n        \"Cascadia Mono\",\n        \"Segoe UI Mono\",\n        \"Roboto Mono\",\n        \"Oxygen Mono\",\n        \"Ubuntu Monospace\",\n        \"Source Code Pro\",\n        \"Fira Mono\",\n        \"Droid Sans Mono\",\n        \"Courier New\",\n        monospace,\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\";\n}\n\nhtml, body {\n    height: 100%;\n}\n\nbody {\n    margin: 0;\n    padding: 0;\n    font-size: 0.875rem;\n    font-family: var(--font-family-primary);\n    color: var(--body-fg);\n    background: var(--body-bg);\n}\n\n/* LINKS */\n\na:link, a:visited {\n    color: var(--link-fg);\n    text-decoration: none;\n    transition: color 0.15s, background 0.15s;\n}\n\na:focus, a:hover {\n    color: var(--link-hover-color);\n}\n\na:focus {\n    text-decoration: underline;\n}\n\na img {\n    border: none;\n}\n\na.section:link, a.section:visited {\n    color: var(--header-link-color);\n    text-decoration: none;\n}\n\na.section:focus, a.section:hover {\n    text-decoration: underline;\n}\n\n/* GLOBAL DEFAULTS */\n\np, ol, ul, dl {\n    margin: .2em 0 .8em 0;\n}\n\np {\n    padding: 0;\n    line-height: 140%;\n}\n\nh1,h2,h3,h4,h5 {\n    font-weight: bold;\n}\n\nh1 {\n    margin: 0 0 20px;\n    font-weight: 300;\n    font-size: 1.25rem;\n    color: var(--body-quiet-color);\n}\n\nh2 {\n    font-size: 1rem;\n    margin: 1em 0 .5em 0;\n}\n\nh2.subhead {\n    font-weight: normal;\n    margin-top: 0;\n}\n\nh3 {\n    font-size: 0.875rem;\n    margin: .8em 0 .3em 0;\n    color: var(--body-quiet-color);\n    font-weight: bold;\n}\n\nh4 {\n    font-size: 0.75rem;\n    margin: 1em 0 .8em 0;\n    padding-bottom: 3px;\n}\n\nh5 {\n    font-size: 0.625rem;\n    margin: 1.5em 0 .5em 0;\n    color: var(--body-quiet-color);\n    text-transform: uppercase;\n    letter-spacing: 1px;\n}\n\nul > li {\n    list-style-type: square;\n    padding: 1px 0;\n}\n\nli ul {\n    margin-bottom: 0;\n}\n\nli, dt, dd {\n    font-size: 0.8125rem;\n    line-height: 1.25rem;\n}\n\ndt {\n    font-weight: bold;\n    margin-top: 4px;\n}\n\ndd {\n    margin-left: 0;\n}\n\nform {\n    margin: 0;\n    padding: 0;\n}\n\nfieldset {\n    margin: 0;\n    min-width: 0;\n    padding: 0;\n    border: none;\n    border-top: 1px solid var(--hairline-color);\n}\n\nblockquote {\n    font-size: 0.6875rem;\n    color: #777;\n    margin-left: 2px;\n    padding-left: 10px;\n    border-left: 5px solid #ddd;\n}\n\ncode, pre {\n    font-family: var(--font-family-monospace);\n    color: var(--body-quiet-color);\n    font-size: 0.75rem;\n    overflow-x: auto;\n}\n\npre.literal-block {\n    margin: 10px;\n    background: var(--darkened-bg);\n    padding: 6px 8px;\n}\n\ncode strong {\n    color: #930;\n}\n\nhr {\n    clear: both;\n    color: var(--hairline-color);\n    background-color: var(--hairline-color);\n    height: 1px;\n    border: none;\n    margin: 0;\n    padding: 0;\n    line-height: 1px;\n}\n\n/* TEXT STYLES & MODIFIERS */\n\n.small {\n    font-size: 0.6875rem;\n}\n\n.mini {\n    font-size: 0.625rem;\n}\n\n.help, p.help, form p.help, div.help, form div.help, div.help li {\n    font-size: 0.6875rem;\n    color: var(--body-quiet-color);\n}\n\ndiv.help ul {\n     margin-bottom: 0;\n}\n\n.help-tooltip {\n    cursor: help;\n}\n\np img, h1 img, h2 img, h3 img, h4 img, td img {\n    vertical-align: middle;\n}\n\n.quiet, a.quiet:link, a.quiet:visited {\n    color: var(--body-quiet-color);\n    font-weight: normal;\n}\n\n.clear {\n    clear: both;\n}\n\n.nowrap {\n    white-space: nowrap;\n}\n\n.hidden {\n    display: none !important;\n}\n\n/* TABLES */\n\ntable {\n    border-collapse: collapse;\n    border-color: var(--border-color);\n}\n\ntd, th {\n    font-size: 0.8125rem;\n    line-height: 1rem;\n    border-bottom: 1px solid var(--hairline-color);\n    vertical-align: top;\n    padding: 8px;\n}\n\nth {\n    font-weight: 600;\n    text-align: left;\n}\n\nthead th,\ntfoot td {\n    color: var(--body-quiet-color);\n    padding: 5px 10px;\n    font-size: 0.6875rem;\n    background: var(--body-bg);\n    border: none;\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: 1px solid var(--hairline-color);\n}\n\ntfoot td {\n    border-bottom: none;\n    border-top: 1px solid var(--hairline-color);\n}\n\nthead th.required {\n    color: var(--body-loud-color);\n}\n\ntr.alt {\n    background: var(--darkened-bg);\n}\n\ntr:nth-child(odd), .row-form-errors {\n    background: var(--body-bg);\n}\n\ntr:nth-child(even),\ntr:nth-child(even) .errorlist,\ntr:nth-child(odd) + .row-form-errors,\ntr:nth-child(odd) + .row-form-errors .errorlist {\n    background: var(--darkened-bg);\n}\n\n/* SORTABLE TABLES */\n\nthead th {\n    padding: 5px 10px;\n    line-height: normal;\n    text-transform: uppercase;\n    background: var(--darkened-bg);\n}\n\nthead th a:link, thead th a:visited {\n    color: var(--body-quiet-color);\n}\n\nthead th.sorted {\n    background: var(--selected-bg);\n}\n\nthead th.sorted .text {\n    padding-right: 42px;\n}\n\ntable thead th .text span {\n    padding: 8px 10px;\n    display: block;\n}\n\ntable thead th .text a {\n    display: block;\n    cursor: pointer;\n    padding: 8px 10px;\n}\n\ntable thead th .text a:focus, table thead th .text a:hover {\n    background: var(--selected-bg);\n}\n\nthead th.sorted a.sortremove {\n    visibility: hidden;\n}\n\ntable thead th.sorted:hover a.sortremove {\n    visibility: visible;\n}\n\ntable thead th.sorted .sortoptions {\n    display: block;\n    padding: 9px 5px 0 5px;\n    float: right;\n    text-align: right;\n}\n\ntable thead th.sorted .sortpriority {\n    font-size: .8em;\n    min-width: 12px;\n    text-align: center;\n    vertical-align: 3px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\ntable thead th.sorted .sortoptions a {\n    position: relative;\n    width: 14px;\n    height: 14px;\n    display: inline-block;\n    background: url(\"../img/sorting-icons.3a097b59f104.svg\") 0 0 no-repeat;\n    background-size: 14px auto;\n}\n\ntable thead th.sorted .sortoptions a.sortremove {\n    background-position: 0 0;\n}\n\ntable thead th.sorted .sortoptions a.sortremove:after {\n    content: '\\\\';\n    position: absolute;\n    top: -6px;\n    left: 3px;\n    font-weight: 200;\n    font-size: 1.125rem;\n    color: var(--body-quiet-color);\n}\n\ntable thead th.sorted .sortoptions a.sortremove:focus:after,\ntable thead th.sorted .sortoptions a.sortremove:hover:after {\n    color: var(--link-fg);\n}\n\ntable thead th.sorted .sortoptions a.sortremove:focus,\ntable thead th.sorted .sortoptions a.sortremove:hover {\n    background-position: 0 -14px;\n}\n\ntable thead th.sorted .sortoptions a.ascending {\n    background-position: 0 -28px;\n}\n\ntable thead th.sorted .sortoptions a.ascending:focus,\ntable thead th.sorted .sortoptions a.ascending:hover {\n    background-position: 0 -42px;\n}\n\ntable thead th.sorted .sortoptions a.descending {\n    top: 1px;\n    background-position: 0 -56px;\n}\n\ntable thead th.sorted .sortoptions a.descending:focus,\ntable thead th.sorted .sortoptions a.descending:hover {\n    background-position: 0 -70px;\n}\n\n/* FORM DEFAULTS */\n\ninput, textarea, select, .form-row p, form .button {\n    margin: 2px 0;\n    padding: 2px 3px;\n    vertical-align: middle;\n    font-family: var(--font-family-primary);\n    font-weight: normal;\n    font-size: 0.8125rem;\n}\n.form-row div.help {\n    padding: 2px 3px;\n}\n\ntextarea {\n    vertical-align: top;\n}\n\ninput[type=text], input[type=password], input[type=email], input[type=url],\ninput[type=number], input[type=tel], textarea, select, .vTextField {\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    padding: 5px 6px;\n    margin-top: 0;\n    color: var(--body-fg);\n    background-color: var(--body-bg);\n}\n\ninput[type=text]:focus, input[type=password]:focus, input[type=email]:focus,\ninput[type=url]:focus, input[type=number]:focus, input[type=tel]:focus,\ntextarea:focus, select:focus, .vTextField:focus {\n    border-color: var(--body-quiet-color);\n}\n\nselect {\n    height: 1.875rem;\n}\n\nselect[multiple] {\n    /* Allow HTML size attribute to override the height in the rule above. */\n    height: auto;\n    min-height: 150px;\n}\n\n/* FORM BUTTONS */\n\n.button, input[type=submit], input[type=button], .submit-row input, a.button {\n    background: var(--button-bg);\n    padding: 10px 15px;\n    border: none;\n    border-radius: 4px;\n    color: var(--button-fg);\n    cursor: pointer;\n    transition: background 0.15s;\n}\n\na.button {\n    padding: 4px 5px;\n}\n\n.button:active, input[type=submit]:active, input[type=button]:active,\n.button:focus, input[type=submit]:focus, input[type=button]:focus,\n.button:hover, input[type=submit]:hover, input[type=button]:hover {\n    background: var(--button-hover-bg);\n}\n\n.button[disabled], input[type=submit][disabled], input[type=button][disabled] {\n    opacity: 0.4;\n}\n\n.button.default, input[type=submit].default, .submit-row input.default {\n    border: none;\n    font-weight: 400;\n    background: var(--default-button-bg);\n}\n\n.button.default:active, input[type=submit].default:active,\n.button.default:focus, input[type=submit].default:focus,\n.button.default:hover, input[type=submit].default:hover {\n    background: var(--default-button-hover-bg);\n}\n\n.button[disabled].default,\ninput[type=submit][disabled].default,\ninput[type=button][disabled].default {\n    opacity: 0.4;\n}\n\n\n/* MODULES */\n\n.module {\n    border: none;\n    margin-bottom: 30px;\n    background: var(--body-bg);\n}\n\n.module p, .module ul, .module h3, .module h4, .module dl, .module pre {\n    padding-left: 10px;\n    padding-right: 10px;\n}\n\n.module blockquote {\n    margin-left: 12px;\n}\n\n.module ul, .module ol {\n    margin-left: 1.5em;\n}\n\n.module h3 {\n    margin-top: .6em;\n}\n\n.module h2, .module caption, .inline-group h2 {\n    margin: 0;\n    padding: 8px;\n    font-weight: 400;\n    font-size: 0.8125rem;\n    text-align: left;\n    background: var(--header-bg);\n    color: var(--header-link-color);\n}\n\n.module caption,\n.inline-group h2 {\n    font-size: 0.75rem;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n}\n\n.module table {\n    border-collapse: collapse;\n}\n\n/* MESSAGES & ERRORS */\n\nul.messagelist {\n    padding: 0;\n    margin: 0;\n}\n\nul.messagelist li {\n    display: block;\n    font-weight: 400;\n    font-size: 0.8125rem;\n    padding: 10px 10px 10px 65px;\n    margin: 0 0 10px 0;\n    background: var(--message-success-bg) url(\"../img/icon-yes.d2f9f035226a.svg\") 40px 12px no-repeat;\n    background-size: 16px auto;\n    color: var(--body-fg);\n    word-break: break-word;\n}\n\nul.messagelist li.warning {\n    background: var(--message-warning-bg) url(\"../img/icon-alert.034cc7d8a67f.svg\") 40px 14px no-repeat;\n    background-size: 14px auto;\n}\n\nul.messagelist li.error {\n    background: var(--message-error-bg) url(\"../img/icon-no.439e821418cd.svg\") 40px 12px no-repeat;\n    background-size: 16px auto;\n}\n\n.errornote {\n    font-size: 0.875rem;\n    font-weight: 700;\n    display: block;\n    padding: 10px 12px;\n    margin: 0 0 10px 0;\n    color: var(--error-fg);\n    border: 1px solid var(--error-fg);\n    border-radius: 4px;\n    background-color: var(--body-bg);\n    background-position: 5px 12px;\n    overflow-wrap: break-word;\n}\n\nul.errorlist {\n    margin: 0 0 4px;\n    padding: 0;\n    color: var(--error-fg);\n    background: var(--body-bg);\n}\n\nul.errorlist li {\n    font-size: 0.8125rem;\n    display: block;\n    margin-bottom: 4px;\n    overflow-wrap: break-word;\n}\n\nul.errorlist li:first-child {\n    margin-top: 0;\n}\n\nul.errorlist li a {\n    color: inherit;\n    text-decoration: underline;\n}\n\ntd ul.errorlist {\n    margin: 0;\n    padding: 0;\n}\n\ntd ul.errorlist li {\n    margin: 0;\n}\n\n.form-row.errors {\n    margin: 0;\n    border: none;\n    border-bottom: 1px solid var(--hairline-color);\n    background: none;\n}\n\n.form-row.errors ul.errorlist li {\n    padding-left: 0;\n}\n\n.errors input, .errors select, .errors textarea,\ntd ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea {\n    border: 1px solid var(--error-fg);\n}\n\n.description {\n    font-size: 0.75rem;\n    padding: 5px 0 0 12px;\n}\n\n/* BREADCRUMBS */\n\ndiv.breadcrumbs {\n    background: var(--breadcrumbs-bg);\n    padding: 10px 40px;\n    border: none;\n    color: var(--breadcrumbs-fg);\n    text-align: left;\n}\n\ndiv.breadcrumbs a {\n    color: var(--breadcrumbs-link-fg);\n}\n\ndiv.breadcrumbs a:focus, div.breadcrumbs a:hover {\n    color: var(--breadcrumbs-fg);\n}\n\n/* ACTION ICONS */\n\n.viewlink, .inlineviewlink {\n    padding-left: 16px;\n    background: url(\"../img/icon-viewlink.41eb31f7826e.svg\") 0 1px no-repeat;\n}\n\n.hidelink {\n    padding-left: 16px;\n    background: url(\"../img/icon-hidelink.8d245a995e18.svg\") 0 1px no-repeat;\n}\n\n.addlink {\n    padding-left: 16px;\n    background: url(\"../img/icon-addlink.d519b3bab011.svg\") 0 1px no-repeat;\n}\n\n.changelink, .inlinechangelink {\n    padding-left: 16px;\n    background: url(\"../img/icon-changelink.18d2fd706348.svg\") 0 1px no-repeat;\n}\n\n.deletelink {\n    padding-left: 16px;\n    background: url(\"../img/icon-deletelink.564ef9dc3854.svg\") 0 1px no-repeat;\n}\n\na.deletelink:link, a.deletelink:visited {\n    color: #CC3434; /* XXX Probably unused? */\n}\n\na.deletelink:focus, a.deletelink:hover {\n    color: #993333; /* XXX Probably unused? */\n    text-decoration: none;\n}\n\n/* OBJECT TOOLS */\n\n.object-tools {\n    font-size: 0.625rem;\n    font-weight: bold;\n    padding-left: 0;\n    float: right;\n    position: relative;\n    margin-top: -48px;\n}\n\n.object-tools li {\n    display: block;\n    float: left;\n    margin-left: 5px;\n    height: 1rem;\n}\n\n.object-tools a {\n    border-radius: 15px;\n}\n\n.object-tools a:link, .object-tools a:visited {\n    display: block;\n    float: left;\n    padding: 3px 12px;\n    background: var(--object-tools-bg);\n    color: var(--object-tools-fg);\n    font-weight: 400;\n    font-size: 0.6875rem;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.object-tools a:focus, .object-tools a:hover {\n    background-color: var(--object-tools-hover-bg);\n}\n\n.object-tools a:focus{\n    text-decoration: none;\n}\n\n.object-tools a.viewsitelink, .object-tools a.addlink {\n    background-repeat: no-repeat;\n    background-position: right 7px center;\n    padding-right: 26px;\n}\n\n.object-tools a.viewsitelink {\n    background-image: url(\"../img/tooltag-arrowright.bbfb788a849e.svg\");\n}\n\n.object-tools a.addlink {\n    background-image: url(\"../img/tooltag-add.e59d620a9742.svg\");\n}\n\n/* OBJECT HISTORY */\n\n#change-history table {\n    width: 100%;\n}\n\n#change-history table tbody th {\n    width: 16em;\n}\n\n#change-history .paginator {\n    color: var(--body-quiet-color);\n    border-bottom: 1px solid var(--hairline-color);\n    background: var(--body-bg);\n    overflow: hidden;\n}\n\n/* PAGE STRUCTURE */\n\n#container {\n    position: relative;\n    width: 100%;\n    min-width: 980px;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n}\n\n#container > .main {\n    display: flex;\n    flex: 1 0 auto;\n}\n\n.main > .content {\n    flex:  1 0;\n    max-width: 100%;\n}\n\n.skip-to-content-link {\n    position: absolute;\n    top: -999px;\n    margin: 5px;\n    padding: 5px;\n    background: var(--body-bg);\n    z-index: 1;\n}\n\n.skip-to-content-link:focus {\n    left: 0px;\n    top: 0px;\n}\n\n#content {\n    padding: 20px 40px;\n}\n\n.dashboard #content {\n    width: 600px;\n}\n\n#content-main {\n    float: left;\n    width: 100%;\n}\n\n#content-related {\n    float: right;\n    width: 260px;\n    position: relative;\n    margin-right: -300px;\n}\n\n#footer {\n    clear: both;\n    padding: 10px;\n}\n\n/* COLUMN TYPES */\n\n.colMS {\n    margin-right: 300px;\n}\n\n.colSM {\n    margin-left: 300px;\n}\n\n.colSM #content-related {\n    float: left;\n    margin-right: 0;\n    margin-left: -300px;\n}\n\n.colSM #content-main {\n    float: right;\n}\n\n.popup .colM {\n    width: auto;\n}\n\n/* HEADER */\n\n#header {\n    width: auto;\n    height: auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 10px 40px;\n    background: var(--header-bg);\n    color: var(--header-color);\n}\n\n#header a:link, #header a:visited, #logout-form button {\n    color: var(--header-link-color);\n}\n\n#header a:focus , #header a:hover {\n    text-decoration: underline;\n}\n\n#branding {\n    display: flex;\n}\n\n#site-name {\n    padding: 0;\n    margin: 0;\n    margin-inline-end: 20px;\n    font-weight: 300;\n    font-size: 1.5rem;\n    color: var(--header-branding-color);\n}\n\n#site-name a:link, #site-name a:visited {\n    color: var(--accent);\n}\n\n#branding h2 {\n    padding: 0 10px;\n    font-size: 0.875rem;\n    margin: -8px 0 8px 0;\n    font-weight: normal;\n    color: var(--header-color);\n}\n\n#branding a:hover {\n    text-decoration: none;\n}\n\n#logout-form {\n    display: inline;\n}\n\n#logout-form button {\n    background: none;\n    border: 0;\n    cursor: pointer;\n    font-family: var(--font-family-primary);\n}\n\n#user-tools {\n    float: right;\n    margin: 0 0 0 20px;\n    text-align: right;\n}\n\n#user-tools, #logout-form button{\n    padding: 0;\n    font-weight: 300;\n    font-size: 0.6875rem;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n}\n\n#user-tools a, #logout-form button {\n    border-bottom: 1px solid rgba(255, 255, 255, 0.25);\n}\n\n#user-tools a:focus, #user-tools a:hover,\n#logout-form button:active, #logout-form button:hover {\n    text-decoration: none;\n    border-bottom: 0;\n}\n\n#logout-form button:active, #logout-form button:hover {\n    margin-bottom: 1px;\n}\n\n/* SIDEBAR */\n\n#content-related {\n    background: var(--darkened-bg);\n}\n\n#content-related .module {\n    background: none;\n}\n\n#content-related h3 {\n    color: var(--body-quiet-color);\n    padding: 0 16px;\n    margin: 0 0 16px;\n}\n\n#content-related h4 {\n    font-size: 0.8125rem;\n}\n\n#content-related p {\n    padding-left: 16px;\n    padding-right: 16px;\n}\n\n#content-related .actionlist {\n    padding: 0;\n    margin: 16px;\n}\n\n#content-related .actionlist li {\n    line-height: 1.2;\n    margin-bottom: 10px;\n    padding-left: 18px;\n}\n\n#content-related .module h2 {\n    background: none;\n    padding: 16px;\n    margin-bottom: 16px;\n    border-bottom: 1px solid var(--hairline-color);\n    font-size: 1.125rem;\n    color: var(--body-fg);\n}\n\n.delete-confirmation form input[type=\"submit\"] {\n    background: var(--delete-button-bg);\n    border-radius: 4px;\n    padding: 10px 15px;\n    color: var(--button-fg);\n}\n\n.delete-confirmation form input[type=\"submit\"]:active,\n.delete-confirmation form input[type=\"submit\"]:focus,\n.delete-confirmation form input[type=\"submit\"]:hover {\n    background: var(--delete-button-hover-bg);\n}\n\n.delete-confirmation form .cancel-link {\n    display: inline-block;\n    vertical-align: middle;\n    height: 0.9375rem;\n    line-height: 0.9375rem;\n    border-radius: 4px;\n    padding: 10px 15px;\n    color: var(--button-fg);\n    background: var(--close-button-bg);\n    margin: 0 0 0 10px;\n}\n\n.delete-confirmation form .cancel-link:active,\n.delete-confirmation form .cancel-link:focus,\n.delete-confirmation form .cancel-link:hover {\n    background: var(--close-button-hover-bg);\n}\n\n/* POPUP */\n.popup #content {\n    padding: 20px;\n}\n\n.popup #container {\n    min-width: 0;\n}\n\n.popup #header {\n    padding: 10px 20px;\n}\n\n/* PAGINATOR */\n\n.paginator {\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    font-size: 0.8125rem;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: 22px;\n    margin: 0;\n    border-top: 1px solid var(--hairline-color);\n    width: 100%;\n}\n\n.paginator a:link, .paginator a:visited {\n    padding: 2px 6px;\n    background: var(--button-bg);\n    text-decoration: none;\n    color: var(--button-fg);\n}\n\n.paginator a.showall {\n    border: none;\n    background: none;\n    color: var(--link-fg);\n}\n\n.paginator a.showall:focus, .paginator a.showall:hover {\n    background: none;\n    color: var(--link-hover-color);\n}\n\n.paginator .end {\n    margin-right: 6px;\n}\n\n.paginator .this-page {\n    padding: 2px 6px;\n    font-weight: bold;\n    font-size: 0.8125rem;\n    vertical-align: top;\n}\n\n.paginator a:focus, .paginator a:hover {\n    color: white;\n    background: var(--link-hover-color);\n}\n\n.paginator input {\n    margin-left: auto;\n}\n\n.base-svgs {\n    display: none;\n}\n\n.visually-hidden {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    overflow: hidden;\n    clip: rect(0,0,0,0);\n    white-space: nowrap;\n    border: 0;\n    color: var(--body-fg);\n    background-color: var(--body-bg);\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/base.css",
    "content": "/*\n    DJANGO Admin styles\n*/\n\n/* VARIABLE DEFINITIONS */\nhtml[data-theme=\"light\"],\n:root {\n    --primary: #79aec8;\n    --secondary: #417690;\n    --accent: #f5dd5d;\n    --primary-fg: #fff;\n\n    --body-fg: #333;\n    --body-bg: #fff;\n    --body-quiet-color: #666;\n    --body-loud-color: #000;\n\n    --header-color: #ffc;\n    --header-branding-color: var(--accent);\n    --header-bg: var(--secondary);\n    --header-link-color: var(--primary-fg);\n\n    --breadcrumbs-fg: #c4dce8;\n    --breadcrumbs-link-fg: var(--body-bg);\n    --breadcrumbs-bg: #264b5d;\n\n    --link-fg: #417893;\n    --link-hover-color: #036;\n    --link-selected-fg: var(--secondary);\n\n    --hairline-color: #e8e8e8;\n    --border-color: #ccc;\n\n    --error-fg: #ba2121;\n\n    --message-success-bg: #dfd;\n    --message-warning-bg: #ffc;\n    --message-error-bg: #ffefef;\n\n    --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */\n    --selected-bg: #e4e4e4; /* E.g. selected table cells */\n    --selected-row: #ffc;\n\n    --button-fg: #fff;\n    --button-bg: var(--secondary);\n    --button-hover-bg: #205067;\n    --default-button-bg: #205067;\n    --default-button-hover-bg: var(--secondary);\n    --close-button-bg: #747474;\n    --close-button-hover-bg: #333;\n    --delete-button-bg: #ba2121;\n    --delete-button-hover-bg: #a41515;\n\n    --object-tools-fg: var(--button-fg);\n    --object-tools-bg: var(--close-button-bg);\n    --object-tools-hover-bg: var(--close-button-hover-bg);\n\n    --font-family-primary:\n        \"Segoe UI\",\n        system-ui,\n        Roboto,\n        \"Helvetica Neue\",\n        Arial,\n        sans-serif,\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\";\n    --font-family-monospace:\n        ui-monospace,\n        Menlo,\n        Monaco,\n        \"Cascadia Mono\",\n        \"Segoe UI Mono\",\n        \"Roboto Mono\",\n        \"Oxygen Mono\",\n        \"Ubuntu Monospace\",\n        \"Source Code Pro\",\n        \"Fira Mono\",\n        \"Droid Sans Mono\",\n        \"Courier New\",\n        monospace,\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\";\n}\n\nhtml, body {\n    height: 100%;\n}\n\nbody {\n    margin: 0;\n    padding: 0;\n    font-size: 0.875rem;\n    font-family: var(--font-family-primary);\n    color: var(--body-fg);\n    background: var(--body-bg);\n}\n\n/* LINKS */\n\na:link, a:visited {\n    color: var(--link-fg);\n    text-decoration: none;\n    transition: color 0.15s, background 0.15s;\n}\n\na:focus, a:hover {\n    color: var(--link-hover-color);\n}\n\na:focus {\n    text-decoration: underline;\n}\n\na img {\n    border: none;\n}\n\na.section:link, a.section:visited {\n    color: var(--header-link-color);\n    text-decoration: none;\n}\n\na.section:focus, a.section:hover {\n    text-decoration: underline;\n}\n\n/* GLOBAL DEFAULTS */\n\np, ol, ul, dl {\n    margin: .2em 0 .8em 0;\n}\n\np {\n    padding: 0;\n    line-height: 140%;\n}\n\nh1,h2,h3,h4,h5 {\n    font-weight: bold;\n}\n\nh1 {\n    margin: 0 0 20px;\n    font-weight: 300;\n    font-size: 1.25rem;\n    color: var(--body-quiet-color);\n}\n\nh2 {\n    font-size: 1rem;\n    margin: 1em 0 .5em 0;\n}\n\nh2.subhead {\n    font-weight: normal;\n    margin-top: 0;\n}\n\nh3 {\n    font-size: 0.875rem;\n    margin: .8em 0 .3em 0;\n    color: var(--body-quiet-color);\n    font-weight: bold;\n}\n\nh4 {\n    font-size: 0.75rem;\n    margin: 1em 0 .8em 0;\n    padding-bottom: 3px;\n}\n\nh5 {\n    font-size: 0.625rem;\n    margin: 1.5em 0 .5em 0;\n    color: var(--body-quiet-color);\n    text-transform: uppercase;\n    letter-spacing: 1px;\n}\n\nul > li {\n    list-style-type: square;\n    padding: 1px 0;\n}\n\nli ul {\n    margin-bottom: 0;\n}\n\nli, dt, dd {\n    font-size: 0.8125rem;\n    line-height: 1.25rem;\n}\n\ndt {\n    font-weight: bold;\n    margin-top: 4px;\n}\n\ndd {\n    margin-left: 0;\n}\n\nform {\n    margin: 0;\n    padding: 0;\n}\n\nfieldset {\n    margin: 0;\n    min-width: 0;\n    padding: 0;\n    border: none;\n    border-top: 1px solid var(--hairline-color);\n}\n\nblockquote {\n    font-size: 0.6875rem;\n    color: #777;\n    margin-left: 2px;\n    padding-left: 10px;\n    border-left: 5px solid #ddd;\n}\n\ncode, pre {\n    font-family: var(--font-family-monospace);\n    color: var(--body-quiet-color);\n    font-size: 0.75rem;\n    overflow-x: auto;\n}\n\npre.literal-block {\n    margin: 10px;\n    background: var(--darkened-bg);\n    padding: 6px 8px;\n}\n\ncode strong {\n    color: #930;\n}\n\nhr {\n    clear: both;\n    color: var(--hairline-color);\n    background-color: var(--hairline-color);\n    height: 1px;\n    border: none;\n    margin: 0;\n    padding: 0;\n    line-height: 1px;\n}\n\n/* TEXT STYLES & MODIFIERS */\n\n.small {\n    font-size: 0.6875rem;\n}\n\n.mini {\n    font-size: 0.625rem;\n}\n\n.help, p.help, form p.help, div.help, form div.help, div.help li {\n    font-size: 0.6875rem;\n    color: var(--body-quiet-color);\n}\n\ndiv.help ul {\n     margin-bottom: 0;\n}\n\n.help-tooltip {\n    cursor: help;\n}\n\np img, h1 img, h2 img, h3 img, h4 img, td img {\n    vertical-align: middle;\n}\n\n.quiet, a.quiet:link, a.quiet:visited {\n    color: var(--body-quiet-color);\n    font-weight: normal;\n}\n\n.clear {\n    clear: both;\n}\n\n.nowrap {\n    white-space: nowrap;\n}\n\n.hidden {\n    display: none !important;\n}\n\n/* TABLES */\n\ntable {\n    border-collapse: collapse;\n    border-color: var(--border-color);\n}\n\ntd, th {\n    font-size: 0.8125rem;\n    line-height: 1rem;\n    border-bottom: 1px solid var(--hairline-color);\n    vertical-align: top;\n    padding: 8px;\n}\n\nth {\n    font-weight: 600;\n    text-align: left;\n}\n\nthead th,\ntfoot td {\n    color: var(--body-quiet-color);\n    padding: 5px 10px;\n    font-size: 0.6875rem;\n    background: var(--body-bg);\n    border: none;\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: 1px solid var(--hairline-color);\n}\n\ntfoot td {\n    border-bottom: none;\n    border-top: 1px solid var(--hairline-color);\n}\n\nthead th.required {\n    color: var(--body-loud-color);\n}\n\ntr.alt {\n    background: var(--darkened-bg);\n}\n\ntr:nth-child(odd), .row-form-errors {\n    background: var(--body-bg);\n}\n\ntr:nth-child(even),\ntr:nth-child(even) .errorlist,\ntr:nth-child(odd) + .row-form-errors,\ntr:nth-child(odd) + .row-form-errors .errorlist {\n    background: var(--darkened-bg);\n}\n\n/* SORTABLE TABLES */\n\nthead th {\n    padding: 5px 10px;\n    line-height: normal;\n    text-transform: uppercase;\n    background: var(--darkened-bg);\n}\n\nthead th a:link, thead th a:visited {\n    color: var(--body-quiet-color);\n}\n\nthead th.sorted {\n    background: var(--selected-bg);\n}\n\nthead th.sorted .text {\n    padding-right: 42px;\n}\n\ntable thead th .text span {\n    padding: 8px 10px;\n    display: block;\n}\n\ntable thead th .text a {\n    display: block;\n    cursor: pointer;\n    padding: 8px 10px;\n}\n\ntable thead th .text a:focus, table thead th .text a:hover {\n    background: var(--selected-bg);\n}\n\nthead th.sorted a.sortremove {\n    visibility: hidden;\n}\n\ntable thead th.sorted:hover a.sortremove {\n    visibility: visible;\n}\n\ntable thead th.sorted .sortoptions {\n    display: block;\n    padding: 9px 5px 0 5px;\n    float: right;\n    text-align: right;\n}\n\ntable thead th.sorted .sortpriority {\n    font-size: .8em;\n    min-width: 12px;\n    text-align: center;\n    vertical-align: 3px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\ntable thead th.sorted .sortoptions a {\n    position: relative;\n    width: 14px;\n    height: 14px;\n    display: inline-block;\n    background: url(../img/sorting-icons.svg) 0 0 no-repeat;\n    background-size: 14px auto;\n}\n\ntable thead th.sorted .sortoptions a.sortremove {\n    background-position: 0 0;\n}\n\ntable thead th.sorted .sortoptions a.sortremove:after {\n    content: '\\\\';\n    position: absolute;\n    top: -6px;\n    left: 3px;\n    font-weight: 200;\n    font-size: 1.125rem;\n    color: var(--body-quiet-color);\n}\n\ntable thead th.sorted .sortoptions a.sortremove:focus:after,\ntable thead th.sorted .sortoptions a.sortremove:hover:after {\n    color: var(--link-fg);\n}\n\ntable thead th.sorted .sortoptions a.sortremove:focus,\ntable thead th.sorted .sortoptions a.sortremove:hover {\n    background-position: 0 -14px;\n}\n\ntable thead th.sorted .sortoptions a.ascending {\n    background-position: 0 -28px;\n}\n\ntable thead th.sorted .sortoptions a.ascending:focus,\ntable thead th.sorted .sortoptions a.ascending:hover {\n    background-position: 0 -42px;\n}\n\ntable thead th.sorted .sortoptions a.descending {\n    top: 1px;\n    background-position: 0 -56px;\n}\n\ntable thead th.sorted .sortoptions a.descending:focus,\ntable thead th.sorted .sortoptions a.descending:hover {\n    background-position: 0 -70px;\n}\n\n/* FORM DEFAULTS */\n\ninput, textarea, select, .form-row p, form .button {\n    margin: 2px 0;\n    padding: 2px 3px;\n    vertical-align: middle;\n    font-family: var(--font-family-primary);\n    font-weight: normal;\n    font-size: 0.8125rem;\n}\n.form-row div.help {\n    padding: 2px 3px;\n}\n\ntextarea {\n    vertical-align: top;\n}\n\ninput[type=text], input[type=password], input[type=email], input[type=url],\ninput[type=number], input[type=tel], textarea, select, .vTextField {\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    padding: 5px 6px;\n    margin-top: 0;\n    color: var(--body-fg);\n    background-color: var(--body-bg);\n}\n\ninput[type=text]:focus, input[type=password]:focus, input[type=email]:focus,\ninput[type=url]:focus, input[type=number]:focus, input[type=tel]:focus,\ntextarea:focus, select:focus, .vTextField:focus {\n    border-color: var(--body-quiet-color);\n}\n\nselect {\n    height: 1.875rem;\n}\n\nselect[multiple] {\n    /* Allow HTML size attribute to override the height in the rule above. */\n    height: auto;\n    min-height: 150px;\n}\n\n/* FORM BUTTONS */\n\n.button, input[type=submit], input[type=button], .submit-row input, a.button {\n    background: var(--button-bg);\n    padding: 10px 15px;\n    border: none;\n    border-radius: 4px;\n    color: var(--button-fg);\n    cursor: pointer;\n    transition: background 0.15s;\n}\n\na.button {\n    padding: 4px 5px;\n}\n\n.button:active, input[type=submit]:active, input[type=button]:active,\n.button:focus, input[type=submit]:focus, input[type=button]:focus,\n.button:hover, input[type=submit]:hover, input[type=button]:hover {\n    background: var(--button-hover-bg);\n}\n\n.button[disabled], input[type=submit][disabled], input[type=button][disabled] {\n    opacity: 0.4;\n}\n\n.button.default, input[type=submit].default, .submit-row input.default {\n    border: none;\n    font-weight: 400;\n    background: var(--default-button-bg);\n}\n\n.button.default:active, input[type=submit].default:active,\n.button.default:focus, input[type=submit].default:focus,\n.button.default:hover, input[type=submit].default:hover {\n    background: var(--default-button-hover-bg);\n}\n\n.button[disabled].default,\ninput[type=submit][disabled].default,\ninput[type=button][disabled].default {\n    opacity: 0.4;\n}\n\n\n/* MODULES */\n\n.module {\n    border: none;\n    margin-bottom: 30px;\n    background: var(--body-bg);\n}\n\n.module p, .module ul, .module h3, .module h4, .module dl, .module pre {\n    padding-left: 10px;\n    padding-right: 10px;\n}\n\n.module blockquote {\n    margin-left: 12px;\n}\n\n.module ul, .module ol {\n    margin-left: 1.5em;\n}\n\n.module h3 {\n    margin-top: .6em;\n}\n\n.module h2, .module caption, .inline-group h2 {\n    margin: 0;\n    padding: 8px;\n    font-weight: 400;\n    font-size: 0.8125rem;\n    text-align: left;\n    background: var(--header-bg);\n    color: var(--header-link-color);\n}\n\n.module caption,\n.inline-group h2 {\n    font-size: 0.75rem;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n}\n\n.module table {\n    border-collapse: collapse;\n}\n\n/* MESSAGES & ERRORS */\n\nul.messagelist {\n    padding: 0;\n    margin: 0;\n}\n\nul.messagelist li {\n    display: block;\n    font-weight: 400;\n    font-size: 0.8125rem;\n    padding: 10px 10px 10px 65px;\n    margin: 0 0 10px 0;\n    background: var(--message-success-bg) url(../img/icon-yes.svg) 40px 12px no-repeat;\n    background-size: 16px auto;\n    color: var(--body-fg);\n    word-break: break-word;\n}\n\nul.messagelist li.warning {\n    background: var(--message-warning-bg) url(../img/icon-alert.svg) 40px 14px no-repeat;\n    background-size: 14px auto;\n}\n\nul.messagelist li.error {\n    background: var(--message-error-bg) url(../img/icon-no.svg) 40px 12px no-repeat;\n    background-size: 16px auto;\n}\n\n.errornote {\n    font-size: 0.875rem;\n    font-weight: 700;\n    display: block;\n    padding: 10px 12px;\n    margin: 0 0 10px 0;\n    color: var(--error-fg);\n    border: 1px solid var(--error-fg);\n    border-radius: 4px;\n    background-color: var(--body-bg);\n    background-position: 5px 12px;\n    overflow-wrap: break-word;\n}\n\nul.errorlist {\n    margin: 0 0 4px;\n    padding: 0;\n    color: var(--error-fg);\n    background: var(--body-bg);\n}\n\nul.errorlist li {\n    font-size: 0.8125rem;\n    display: block;\n    margin-bottom: 4px;\n    overflow-wrap: break-word;\n}\n\nul.errorlist li:first-child {\n    margin-top: 0;\n}\n\nul.errorlist li a {\n    color: inherit;\n    text-decoration: underline;\n}\n\ntd ul.errorlist {\n    margin: 0;\n    padding: 0;\n}\n\ntd ul.errorlist li {\n    margin: 0;\n}\n\n.form-row.errors {\n    margin: 0;\n    border: none;\n    border-bottom: 1px solid var(--hairline-color);\n    background: none;\n}\n\n.form-row.errors ul.errorlist li {\n    padding-left: 0;\n}\n\n.errors input, .errors select, .errors textarea,\ntd ul.errorlist + input, td ul.errorlist + select, td ul.errorlist + textarea {\n    border: 1px solid var(--error-fg);\n}\n\n.description {\n    font-size: 0.75rem;\n    padding: 5px 0 0 12px;\n}\n\n/* BREADCRUMBS */\n\ndiv.breadcrumbs {\n    background: var(--breadcrumbs-bg);\n    padding: 10px 40px;\n    border: none;\n    color: var(--breadcrumbs-fg);\n    text-align: left;\n}\n\ndiv.breadcrumbs a {\n    color: var(--breadcrumbs-link-fg);\n}\n\ndiv.breadcrumbs a:focus, div.breadcrumbs a:hover {\n    color: var(--breadcrumbs-fg);\n}\n\n/* ACTION ICONS */\n\n.viewlink, .inlineviewlink {\n    padding-left: 16px;\n    background: url(../img/icon-viewlink.svg) 0 1px no-repeat;\n}\n\n.hidelink {\n    padding-left: 16px;\n    background: url(../img/icon-hidelink.svg) 0 1px no-repeat;\n}\n\n.addlink {\n    padding-left: 16px;\n    background: url(../img/icon-addlink.svg) 0 1px no-repeat;\n}\n\n.changelink, .inlinechangelink {\n    padding-left: 16px;\n    background: url(../img/icon-changelink.svg) 0 1px no-repeat;\n}\n\n.deletelink {\n    padding-left: 16px;\n    background: url(../img/icon-deletelink.svg) 0 1px no-repeat;\n}\n\na.deletelink:link, a.deletelink:visited {\n    color: #CC3434; /* XXX Probably unused? */\n}\n\na.deletelink:focus, a.deletelink:hover {\n    color: #993333; /* XXX Probably unused? */\n    text-decoration: none;\n}\n\n/* OBJECT TOOLS */\n\n.object-tools {\n    font-size: 0.625rem;\n    font-weight: bold;\n    padding-left: 0;\n    float: right;\n    position: relative;\n    margin-top: -48px;\n}\n\n.object-tools li {\n    display: block;\n    float: left;\n    margin-left: 5px;\n    height: 1rem;\n}\n\n.object-tools a {\n    border-radius: 15px;\n}\n\n.object-tools a:link, .object-tools a:visited {\n    display: block;\n    float: left;\n    padding: 3px 12px;\n    background: var(--object-tools-bg);\n    color: var(--object-tools-fg);\n    font-weight: 400;\n    font-size: 0.6875rem;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n}\n\n.object-tools a:focus, .object-tools a:hover {\n    background-color: var(--object-tools-hover-bg);\n}\n\n.object-tools a:focus{\n    text-decoration: none;\n}\n\n.object-tools a.viewsitelink, .object-tools a.addlink {\n    background-repeat: no-repeat;\n    background-position: right 7px center;\n    padding-right: 26px;\n}\n\n.object-tools a.viewsitelink {\n    background-image: url(../img/tooltag-arrowright.svg);\n}\n\n.object-tools a.addlink {\n    background-image: url(../img/tooltag-add.svg);\n}\n\n/* OBJECT HISTORY */\n\n#change-history table {\n    width: 100%;\n}\n\n#change-history table tbody th {\n    width: 16em;\n}\n\n#change-history .paginator {\n    color: var(--body-quiet-color);\n    border-bottom: 1px solid var(--hairline-color);\n    background: var(--body-bg);\n    overflow: hidden;\n}\n\n/* PAGE STRUCTURE */\n\n#container {\n    position: relative;\n    width: 100%;\n    min-width: 980px;\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n    height: 100%;\n}\n\n#container > .main {\n    display: flex;\n    flex: 1 0 auto;\n}\n\n.main > .content {\n    flex:  1 0;\n    max-width: 100%;\n}\n\n.skip-to-content-link {\n    position: absolute;\n    top: -999px;\n    margin: 5px;\n    padding: 5px;\n    background: var(--body-bg);\n    z-index: 1;\n}\n\n.skip-to-content-link:focus {\n    left: 0px;\n    top: 0px;\n}\n\n#content {\n    padding: 20px 40px;\n}\n\n.dashboard #content {\n    width: 600px;\n}\n\n#content-main {\n    float: left;\n    width: 100%;\n}\n\n#content-related {\n    float: right;\n    width: 260px;\n    position: relative;\n    margin-right: -300px;\n}\n\n#footer {\n    clear: both;\n    padding: 10px;\n}\n\n/* COLUMN TYPES */\n\n.colMS {\n    margin-right: 300px;\n}\n\n.colSM {\n    margin-left: 300px;\n}\n\n.colSM #content-related {\n    float: left;\n    margin-right: 0;\n    margin-left: -300px;\n}\n\n.colSM #content-main {\n    float: right;\n}\n\n.popup .colM {\n    width: auto;\n}\n\n/* HEADER */\n\n#header {\n    width: auto;\n    height: auto;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 10px 40px;\n    background: var(--header-bg);\n    color: var(--header-color);\n}\n\n#header a:link, #header a:visited, #logout-form button {\n    color: var(--header-link-color);\n}\n\n#header a:focus , #header a:hover {\n    text-decoration: underline;\n}\n\n#branding {\n    display: flex;\n}\n\n#site-name {\n    padding: 0;\n    margin: 0;\n    margin-inline-end: 20px;\n    font-weight: 300;\n    font-size: 1.5rem;\n    color: var(--header-branding-color);\n}\n\n#site-name a:link, #site-name a:visited {\n    color: var(--accent);\n}\n\n#branding h2 {\n    padding: 0 10px;\n    font-size: 0.875rem;\n    margin: -8px 0 8px 0;\n    font-weight: normal;\n    color: var(--header-color);\n}\n\n#branding a:hover {\n    text-decoration: none;\n}\n\n#logout-form {\n    display: inline;\n}\n\n#logout-form button {\n    background: none;\n    border: 0;\n    cursor: pointer;\n    font-family: var(--font-family-primary);\n}\n\n#user-tools {\n    float: right;\n    margin: 0 0 0 20px;\n    text-align: right;\n}\n\n#user-tools, #logout-form button{\n    padding: 0;\n    font-weight: 300;\n    font-size: 0.6875rem;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n}\n\n#user-tools a, #logout-form button {\n    border-bottom: 1px solid rgba(255, 255, 255, 0.25);\n}\n\n#user-tools a:focus, #user-tools a:hover,\n#logout-form button:active, #logout-form button:hover {\n    text-decoration: none;\n    border-bottom: 0;\n}\n\n#logout-form button:active, #logout-form button:hover {\n    margin-bottom: 1px;\n}\n\n/* SIDEBAR */\n\n#content-related {\n    background: var(--darkened-bg);\n}\n\n#content-related .module {\n    background: none;\n}\n\n#content-related h3 {\n    color: var(--body-quiet-color);\n    padding: 0 16px;\n    margin: 0 0 16px;\n}\n\n#content-related h4 {\n    font-size: 0.8125rem;\n}\n\n#content-related p {\n    padding-left: 16px;\n    padding-right: 16px;\n}\n\n#content-related .actionlist {\n    padding: 0;\n    margin: 16px;\n}\n\n#content-related .actionlist li {\n    line-height: 1.2;\n    margin-bottom: 10px;\n    padding-left: 18px;\n}\n\n#content-related .module h2 {\n    background: none;\n    padding: 16px;\n    margin-bottom: 16px;\n    border-bottom: 1px solid var(--hairline-color);\n    font-size: 1.125rem;\n    color: var(--body-fg);\n}\n\n.delete-confirmation form input[type=\"submit\"] {\n    background: var(--delete-button-bg);\n    border-radius: 4px;\n    padding: 10px 15px;\n    color: var(--button-fg);\n}\n\n.delete-confirmation form input[type=\"submit\"]:active,\n.delete-confirmation form input[type=\"submit\"]:focus,\n.delete-confirmation form input[type=\"submit\"]:hover {\n    background: var(--delete-button-hover-bg);\n}\n\n.delete-confirmation form .cancel-link {\n    display: inline-block;\n    vertical-align: middle;\n    height: 0.9375rem;\n    line-height: 0.9375rem;\n    border-radius: 4px;\n    padding: 10px 15px;\n    color: var(--button-fg);\n    background: var(--close-button-bg);\n    margin: 0 0 0 10px;\n}\n\n.delete-confirmation form .cancel-link:active,\n.delete-confirmation form .cancel-link:focus,\n.delete-confirmation form .cancel-link:hover {\n    background: var(--close-button-hover-bg);\n}\n\n/* POPUP */\n.popup #content {\n    padding: 20px;\n}\n\n.popup #container {\n    min-width: 0;\n}\n\n.popup #header {\n    padding: 10px 20px;\n}\n\n/* PAGINATOR */\n\n.paginator {\n    display: flex;\n    align-items: center;\n    gap: 4px;\n    font-size: 0.8125rem;\n    padding-top: 10px;\n    padding-bottom: 10px;\n    line-height: 22px;\n    margin: 0;\n    border-top: 1px solid var(--hairline-color);\n    width: 100%;\n}\n\n.paginator a:link, .paginator a:visited {\n    padding: 2px 6px;\n    background: var(--button-bg);\n    text-decoration: none;\n    color: var(--button-fg);\n}\n\n.paginator a.showall {\n    border: none;\n    background: none;\n    color: var(--link-fg);\n}\n\n.paginator a.showall:focus, .paginator a.showall:hover {\n    background: none;\n    color: var(--link-hover-color);\n}\n\n.paginator .end {\n    margin-right: 6px;\n}\n\n.paginator .this-page {\n    padding: 2px 6px;\n    font-weight: bold;\n    font-size: 0.8125rem;\n    vertical-align: top;\n}\n\n.paginator a:focus, .paginator a:hover {\n    color: white;\n    background: var(--link-hover-color);\n}\n\n.paginator input {\n    margin-left: auto;\n}\n\n.base-svgs {\n    display: none;\n}\n\n.visually-hidden {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    overflow: hidden;\n    clip: rect(0,0,0,0);\n    white-space: nowrap;\n    border: 0;\n    color: var(--body-fg);\n    background-color: var(--body-bg);\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/changelists.47cb433b29d4.css",
    "content": "/* CHANGELISTS */\n\n#changelist {\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n}\n\n#changelist .changelist-form-container {\n    flex: 1 1 auto;\n    min-width: 0;\n}\n\n#changelist table {\n    width: 100%;\n}\n\n.change-list .hiddenfields { display:none; }\n\n.change-list .filtered table {\n    border-right: none;\n}\n\n.change-list .filtered {\n    min-height: 400px;\n}\n\n.change-list .filtered .results, .change-list .filtered .paginator,\n.filtered #toolbar, .filtered div.xfull {\n    width: auto;\n}\n\n.change-list .filtered table tbody th {\n    padding-right: 1em;\n}\n\n#changelist-form .results {\n    overflow-x: auto;\n    width: 100%;\n}\n\n#changelist .toplinks {\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n#changelist .paginator {\n    color: var(--body-quiet-color);\n    border-bottom: 1px solid var(--hairline-color);\n    background: var(--body-bg);\n    overflow: hidden;\n}\n\n/* CHANGELIST TABLES */\n\n#changelist table thead th {\n    padding: 0;\n    white-space: nowrap;\n    vertical-align: middle;\n}\n\n#changelist table thead th.action-checkbox-column {\n    width: 1.5em;\n    text-align: center;\n}\n\n#changelist table tbody td.action-checkbox {\n    text-align: center;\n}\n\n#changelist table tfoot {\n    color: var(--body-quiet-color);\n}\n\n/* TOOLBAR */\n\n#toolbar {\n    padding: 8px 10px;\n    margin-bottom: 15px;\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: 1px solid var(--hairline-color);\n    background: var(--darkened-bg);\n    color: var(--body-quiet-color);\n}\n\n#toolbar form input {\n    border-radius: 4px;\n    font-size: 0.875rem;\n    padding: 5px;\n    color: var(--body-fg);\n}\n\n#toolbar #searchbar {\n    height: 1.1875rem;\n    border: 1px solid var(--border-color);\n    padding: 2px 5px;\n    margin: 0;\n    vertical-align: top;\n    font-size: 0.8125rem;\n    max-width: 100%;\n}\n\n#toolbar #searchbar:focus {\n    border-color: var(--body-quiet-color);\n}\n\n#toolbar form input[type=\"submit\"] {\n    border: 1px solid var(--border-color);\n    font-size: 0.8125rem;\n    padding: 4px 8px;\n    margin: 0;\n    vertical-align: middle;\n    background: var(--body-bg);\n    box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;\n    cursor: pointer;\n    color: var(--body-fg);\n}\n\n#toolbar form input[type=\"submit\"]:focus,\n#toolbar form input[type=\"submit\"]:hover {\n    border-color: var(--body-quiet-color);\n}\n\n#changelist-search img {\n    vertical-align: middle;\n    margin-right: 4px;\n}\n\n#changelist-search .help {\n    word-break: break-word;\n}\n\n/* FILTER COLUMN */\n\n#changelist-filter {\n    flex: 0 0 240px;\n    order: 1;\n    background: var(--darkened-bg);\n    border-left: none;\n    margin: 0 0 0 30px;\n}\n\n#changelist-filter h2 {\n    font-size: 0.875rem;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    padding: 5px 15px;\n    margin-bottom: 12px;\n    border-bottom: none;\n}\n\n#changelist-filter h3,\n#changelist-filter details summary {\n    font-weight: 400;\n    padding: 0 15px;\n    margin-bottom: 10px;\n    cursor: pointer;\n}\n\n#changelist-filter details summary > * {\n    display: inline;\n}\n\n#changelist-filter details > summary {\n    list-style-type: none;\n}\n\n#changelist-filter details > summary::-webkit-details-marker {\n    display: none;\n}\n\n#changelist-filter details > summary::before {\n    content: '→';\n    font-weight: bold;\n    color: var(--link-hover-color);\n}\n\n#changelist-filter details[open] > summary::before {\n    content: '↓';\n}\n\n#changelist-filter ul {\n    margin: 5px 0;\n    padding: 0 15px 15px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n#changelist-filter ul:last-child {\n    border-bottom: none;\n}\n\n#changelist-filter li {\n    list-style-type: none;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n#changelist-filter a {\n    display: block;\n    color: var(--body-quiet-color);\n    word-break: break-word;\n}\n\n#changelist-filter li.selected {\n    border-left: 5px solid var(--hairline-color);\n    padding-left: 10px;\n    margin-left: -15px;\n}\n\n#changelist-filter li.selected a {\n    color: var(--link-selected-fg);\n}\n\n#changelist-filter a:focus, #changelist-filter a:hover,\n#changelist-filter li.selected a:focus,\n#changelist-filter li.selected a:hover {\n    color: var(--link-hover-color);\n}\n\n#changelist-filter #changelist-filter-extra-actions {\n    font-size: 0.8125rem;\n    margin-bottom: 10px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n/* DATE DRILLDOWN */\n\n.change-list .toplinks {\n    display: flex;\n    padding-bottom: 5px;\n    flex-wrap: wrap;\n    gap: 3px 17px;\n    font-weight: bold;\n}\n\n.change-list .toplinks a {\n    font-size: 0.8125rem;\n}\n\n.change-list .toplinks .date-back {\n    color: var(--body-quiet-color);\n}\n\n.change-list .toplinks .date-back:focus,\n.change-list .toplinks .date-back:hover {\n    color: var(--link-hover-color);\n}\n\n/* ACTIONS */\n\n.filtered .actions {\n    border-right: none;\n}\n\n#changelist table input {\n    margin: 0;\n    vertical-align: baseline;\n}\n\n/* Once the :has() pseudo-class is supported by all browsers, the tr.selected\n   selector and the JS adding the class can be removed. */\n#changelist tbody tr.selected {\n    background-color: var(--selected-row);\n}\n\n#changelist tbody tr:has(.action-select:checked) {\n    background-color: var(--selected-row);\n}\n\n@media (forced-colors: active) {\n    #changelist tbody tr.selected {\n        background-color: SelectedItem;\n    }\n    #changelist tbody tr:has(.action-select:checked) {\n        background-color: SelectedItem;\n    }\n}\n\n#changelist .actions {\n    padding: 10px;\n    background: var(--body-bg);\n    border-top: none;\n    border-bottom: none;\n    line-height: 1.5rem;\n    color: var(--body-quiet-color);\n    width: 100%;\n}\n\n#changelist .actions span.all,\n#changelist .actions span.action-counter,\n#changelist .actions span.clear,\n#changelist .actions span.question {\n    font-size: 0.8125rem;\n    margin: 0 0.5em;\n}\n\n#changelist .actions:last-child {\n    border-bottom: none;\n}\n\n#changelist .actions select {\n    vertical-align: top;\n    height: 1.5rem;\n    color: var(--body-fg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    font-size: 0.875rem;\n    padding: 0 0 0 4px;\n    margin: 0;\n    margin-left: 10px;\n}\n\n#changelist .actions select:focus {\n    border-color: var(--body-quiet-color);\n}\n\n#changelist .actions label {\n    display: inline-block;\n    vertical-align: middle;\n    font-size: 0.8125rem;\n}\n\n#changelist .actions .button {\n    font-size: 0.8125rem;\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    background: var(--body-bg);\n    box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;\n    cursor: pointer;\n    height: 1.5rem;\n    line-height: 1;\n    padding: 4px 8px;\n    margin: 0;\n    color: var(--body-fg);\n}\n\n#changelist .actions .button:focus, #changelist .actions .button:hover {\n    border-color: var(--body-quiet-color);\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/changelists.css",
    "content": "/* CHANGELISTS */\n\n#changelist {\n    display: flex;\n    align-items: flex-start;\n    justify-content: space-between;\n}\n\n#changelist .changelist-form-container {\n    flex: 1 1 auto;\n    min-width: 0;\n}\n\n#changelist table {\n    width: 100%;\n}\n\n.change-list .hiddenfields { display:none; }\n\n.change-list .filtered table {\n    border-right: none;\n}\n\n.change-list .filtered {\n    min-height: 400px;\n}\n\n.change-list .filtered .results, .change-list .filtered .paginator,\n.filtered #toolbar, .filtered div.xfull {\n    width: auto;\n}\n\n.change-list .filtered table tbody th {\n    padding-right: 1em;\n}\n\n#changelist-form .results {\n    overflow-x: auto;\n    width: 100%;\n}\n\n#changelist .toplinks {\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n#changelist .paginator {\n    color: var(--body-quiet-color);\n    border-bottom: 1px solid var(--hairline-color);\n    background: var(--body-bg);\n    overflow: hidden;\n}\n\n/* CHANGELIST TABLES */\n\n#changelist table thead th {\n    padding: 0;\n    white-space: nowrap;\n    vertical-align: middle;\n}\n\n#changelist table thead th.action-checkbox-column {\n    width: 1.5em;\n    text-align: center;\n}\n\n#changelist table tbody td.action-checkbox {\n    text-align: center;\n}\n\n#changelist table tfoot {\n    color: var(--body-quiet-color);\n}\n\n/* TOOLBAR */\n\n#toolbar {\n    padding: 8px 10px;\n    margin-bottom: 15px;\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: 1px solid var(--hairline-color);\n    background: var(--darkened-bg);\n    color: var(--body-quiet-color);\n}\n\n#toolbar form input {\n    border-radius: 4px;\n    font-size: 0.875rem;\n    padding: 5px;\n    color: var(--body-fg);\n}\n\n#toolbar #searchbar {\n    height: 1.1875rem;\n    border: 1px solid var(--border-color);\n    padding: 2px 5px;\n    margin: 0;\n    vertical-align: top;\n    font-size: 0.8125rem;\n    max-width: 100%;\n}\n\n#toolbar #searchbar:focus {\n    border-color: var(--body-quiet-color);\n}\n\n#toolbar form input[type=\"submit\"] {\n    border: 1px solid var(--border-color);\n    font-size: 0.8125rem;\n    padding: 4px 8px;\n    margin: 0;\n    vertical-align: middle;\n    background: var(--body-bg);\n    box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;\n    cursor: pointer;\n    color: var(--body-fg);\n}\n\n#toolbar form input[type=\"submit\"]:focus,\n#toolbar form input[type=\"submit\"]:hover {\n    border-color: var(--body-quiet-color);\n}\n\n#changelist-search img {\n    vertical-align: middle;\n    margin-right: 4px;\n}\n\n#changelist-search .help {\n    word-break: break-word;\n}\n\n/* FILTER COLUMN */\n\n#changelist-filter {\n    flex: 0 0 240px;\n    order: 1;\n    background: var(--darkened-bg);\n    border-left: none;\n    margin: 0 0 0 30px;\n}\n\n#changelist-filter h2 {\n    font-size: 0.875rem;\n    text-transform: uppercase;\n    letter-spacing: 0.5px;\n    padding: 5px 15px;\n    margin-bottom: 12px;\n    border-bottom: none;\n}\n\n#changelist-filter h3,\n#changelist-filter details summary {\n    font-weight: 400;\n    padding: 0 15px;\n    margin-bottom: 10px;\n    cursor: pointer;\n}\n\n#changelist-filter details summary > * {\n    display: inline;\n}\n\n#changelist-filter details > summary {\n    list-style-type: none;\n}\n\n#changelist-filter details > summary::-webkit-details-marker {\n    display: none;\n}\n\n#changelist-filter details > summary::before {\n    content: '→';\n    font-weight: bold;\n    color: var(--link-hover-color);\n}\n\n#changelist-filter details[open] > summary::before {\n    content: '↓';\n}\n\n#changelist-filter ul {\n    margin: 5px 0;\n    padding: 0 15px 15px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n#changelist-filter ul:last-child {\n    border-bottom: none;\n}\n\n#changelist-filter li {\n    list-style-type: none;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n#changelist-filter a {\n    display: block;\n    color: var(--body-quiet-color);\n    word-break: break-word;\n}\n\n#changelist-filter li.selected {\n    border-left: 5px solid var(--hairline-color);\n    padding-left: 10px;\n    margin-left: -15px;\n}\n\n#changelist-filter li.selected a {\n    color: var(--link-selected-fg);\n}\n\n#changelist-filter a:focus, #changelist-filter a:hover,\n#changelist-filter li.selected a:focus,\n#changelist-filter li.selected a:hover {\n    color: var(--link-hover-color);\n}\n\n#changelist-filter #changelist-filter-extra-actions {\n    font-size: 0.8125rem;\n    margin-bottom: 10px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n/* DATE DRILLDOWN */\n\n.change-list .toplinks {\n    display: flex;\n    padding-bottom: 5px;\n    flex-wrap: wrap;\n    gap: 3px 17px;\n    font-weight: bold;\n}\n\n.change-list .toplinks a {\n    font-size: 0.8125rem;\n}\n\n.change-list .toplinks .date-back {\n    color: var(--body-quiet-color);\n}\n\n.change-list .toplinks .date-back:focus,\n.change-list .toplinks .date-back:hover {\n    color: var(--link-hover-color);\n}\n\n/* ACTIONS */\n\n.filtered .actions {\n    border-right: none;\n}\n\n#changelist table input {\n    margin: 0;\n    vertical-align: baseline;\n}\n\n/* Once the :has() pseudo-class is supported by all browsers, the tr.selected\n   selector and the JS adding the class can be removed. */\n#changelist tbody tr.selected {\n    background-color: var(--selected-row);\n}\n\n#changelist tbody tr:has(.action-select:checked) {\n    background-color: var(--selected-row);\n}\n\n@media (forced-colors: active) {\n    #changelist tbody tr.selected {\n        background-color: SelectedItem;\n    }\n    #changelist tbody tr:has(.action-select:checked) {\n        background-color: SelectedItem;\n    }\n}\n\n#changelist .actions {\n    padding: 10px;\n    background: var(--body-bg);\n    border-top: none;\n    border-bottom: none;\n    line-height: 1.5rem;\n    color: var(--body-quiet-color);\n    width: 100%;\n}\n\n#changelist .actions span.all,\n#changelist .actions span.action-counter,\n#changelist .actions span.clear,\n#changelist .actions span.question {\n    font-size: 0.8125rem;\n    margin: 0 0.5em;\n}\n\n#changelist .actions:last-child {\n    border-bottom: none;\n}\n\n#changelist .actions select {\n    vertical-align: top;\n    height: 1.5rem;\n    color: var(--body-fg);\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    font-size: 0.875rem;\n    padding: 0 0 0 4px;\n    margin: 0;\n    margin-left: 10px;\n}\n\n#changelist .actions select:focus {\n    border-color: var(--body-quiet-color);\n}\n\n#changelist .actions label {\n    display: inline-block;\n    vertical-align: middle;\n    font-size: 0.8125rem;\n}\n\n#changelist .actions .button {\n    font-size: 0.8125rem;\n    border: 1px solid var(--border-color);\n    border-radius: 4px;\n    background: var(--body-bg);\n    box-shadow: 0 -15px 20px -10px rgba(0, 0, 0, 0.15) inset;\n    cursor: pointer;\n    height: 1.5rem;\n    line-height: 1;\n    padding: 4px 8px;\n    margin: 0;\n    color: var(--body-fg);\n}\n\n#changelist .actions .button:focus, #changelist .actions .button:hover {\n    border-color: var(--body-quiet-color);\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/dark_mode.css",
    "content": "@media (prefers-color-scheme: dark) {\n    :root {\n      --primary: #264b5d;\n      --primary-fg: #f7f7f7;\n  \n      --body-fg: #eeeeee;\n      --body-bg: #121212;\n      --body-quiet-color: #e0e0e0;\n      --body-loud-color: #ffffff;\n  \n      --breadcrumbs-link-fg: #e0e0e0;\n      --breadcrumbs-bg: var(--primary);\n  \n      --link-fg: #81d4fa;\n      --link-hover-color: #4ac1f7;\n      --link-selected-fg: #6f94c6;\n  \n      --hairline-color: #272727;\n      --border-color: #353535;\n  \n      --error-fg: #e35f5f;\n      --message-success-bg: #006b1b;\n      --message-warning-bg: #583305;\n      --message-error-bg: #570808;\n  \n      --darkened-bg: #212121;\n      --selected-bg: #1b1b1b;\n      --selected-row: #00363a;\n  \n      --close-button-bg: #333333;\n      --close-button-hover-bg: #666666;\n    }\n  }\n\n\nhtml[data-theme=\"dark\"] {\n    --primary: #264b5d;\n    --primary-fg: #f7f7f7;\n\n    --body-fg: #eeeeee;\n    --body-bg: #121212;\n    --body-quiet-color: #e0e0e0;\n    --body-loud-color: #ffffff;\n\n    --breadcrumbs-link-fg: #e0e0e0;\n    --breadcrumbs-bg: var(--primary);\n\n    --link-fg: #81d4fa;\n    --link-hover-color: #4ac1f7;\n    --link-selected-fg: #6f94c6;\n\n    --hairline-color: #272727;\n    --border-color: #353535;\n\n    --error-fg: #e35f5f;\n    --message-success-bg: #006b1b;\n    --message-warning-bg: #583305;\n    --message-error-bg: #570808;\n\n    --darkened-bg: #212121;\n    --selected-bg: #1b1b1b;\n    --selected-row: #00363a;\n\n    --close-button-bg: #333333;\n    --close-button-hover-bg: #666666;\n}\n\n/* THEME SWITCH */\n.theme-toggle {\n    cursor: pointer;\n    border: none;\n    padding: 0;\n    background: transparent;\n    vertical-align: middle;\n    margin-inline-start: 5px;\n    margin-top: -1px;\n}\n\n.theme-toggle svg {\n    vertical-align: middle;\n    height: 1rem;\n    width: 1rem;\n    display: none;\n}\n\n/*\nFully hide screen reader text so we only show the one matching the current\ntheme.\n*/\n.theme-toggle .visually-hidden {\n    display: none;\n}\n\nhtml[data-theme=\"auto\"] .theme-toggle .theme-label-when-auto {\n    display: block;\n}\n\nhtml[data-theme=\"dark\"] .theme-toggle .theme-label-when-dark {\n    display: block;\n}\n\nhtml[data-theme=\"light\"] .theme-toggle .theme-label-when-light {\n    display: block;\n}\n\n/* ICONS */\n.theme-toggle svg.theme-icon-when-auto,\n.theme-toggle svg.theme-icon-when-dark,\n.theme-toggle svg.theme-icon-when-light {\n    fill: var(--header-link-color);\n    color: var(--header-bg);\n}\n\nhtml[data-theme=\"auto\"] .theme-toggle svg.theme-icon-when-auto {\n    display: block;\n}\n\nhtml[data-theme=\"dark\"] .theme-toggle svg.theme-icon-when-dark {\n    display: block;\n}\n\nhtml[data-theme=\"light\"] .theme-toggle svg.theme-icon-when-light {\n    display: block;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/dark_mode.e18e9a052429.css",
    "content": "@media (prefers-color-scheme: dark) {\n    :root {\n      --primary: #264b5d;\n      --primary-fg: #f7f7f7;\n  \n      --body-fg: #eeeeee;\n      --body-bg: #121212;\n      --body-quiet-color: #e0e0e0;\n      --body-loud-color: #ffffff;\n  \n      --breadcrumbs-link-fg: #e0e0e0;\n      --breadcrumbs-bg: var(--primary);\n  \n      --link-fg: #81d4fa;\n      --link-hover-color: #4ac1f7;\n      --link-selected-fg: #6f94c6;\n  \n      --hairline-color: #272727;\n      --border-color: #353535;\n  \n      --error-fg: #e35f5f;\n      --message-success-bg: #006b1b;\n      --message-warning-bg: #583305;\n      --message-error-bg: #570808;\n  \n      --darkened-bg: #212121;\n      --selected-bg: #1b1b1b;\n      --selected-row: #00363a;\n  \n      --close-button-bg: #333333;\n      --close-button-hover-bg: #666666;\n    }\n  }\n\n\nhtml[data-theme=\"dark\"] {\n    --primary: #264b5d;\n    --primary-fg: #f7f7f7;\n\n    --body-fg: #eeeeee;\n    --body-bg: #121212;\n    --body-quiet-color: #e0e0e0;\n    --body-loud-color: #ffffff;\n\n    --breadcrumbs-link-fg: #e0e0e0;\n    --breadcrumbs-bg: var(--primary);\n\n    --link-fg: #81d4fa;\n    --link-hover-color: #4ac1f7;\n    --link-selected-fg: #6f94c6;\n\n    --hairline-color: #272727;\n    --border-color: #353535;\n\n    --error-fg: #e35f5f;\n    --message-success-bg: #006b1b;\n    --message-warning-bg: #583305;\n    --message-error-bg: #570808;\n\n    --darkened-bg: #212121;\n    --selected-bg: #1b1b1b;\n    --selected-row: #00363a;\n\n    --close-button-bg: #333333;\n    --close-button-hover-bg: #666666;\n}\n\n/* THEME SWITCH */\n.theme-toggle {\n    cursor: pointer;\n    border: none;\n    padding: 0;\n    background: transparent;\n    vertical-align: middle;\n    margin-inline-start: 5px;\n    margin-top: -1px;\n}\n\n.theme-toggle svg {\n    vertical-align: middle;\n    height: 1rem;\n    width: 1rem;\n    display: none;\n}\n\n/*\nFully hide screen reader text so we only show the one matching the current\ntheme.\n*/\n.theme-toggle .visually-hidden {\n    display: none;\n}\n\nhtml[data-theme=\"auto\"] .theme-toggle .theme-label-when-auto {\n    display: block;\n}\n\nhtml[data-theme=\"dark\"] .theme-toggle .theme-label-when-dark {\n    display: block;\n}\n\nhtml[data-theme=\"light\"] .theme-toggle .theme-label-when-light {\n    display: block;\n}\n\n/* ICONS */\n.theme-toggle svg.theme-icon-when-auto,\n.theme-toggle svg.theme-icon-when-dark,\n.theme-toggle svg.theme-icon-when-light {\n    fill: var(--header-link-color);\n    color: var(--header-bg);\n}\n\nhtml[data-theme=\"auto\"] .theme-toggle svg.theme-icon-when-auto {\n    display: block;\n}\n\nhtml[data-theme=\"dark\"] .theme-toggle svg.theme-icon-when-dark {\n    display: block;\n}\n\nhtml[data-theme=\"light\"] .theme-toggle svg.theme-icon-when-light {\n    display: block;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/dashboard.css",
    "content": "/* DASHBOARD */\n.dashboard td, .dashboard th {\n    word-break: break-word;\n}\n\n.dashboard .module table th {\n    width: 100%;\n}\n\n.dashboard .module table td {\n    white-space: nowrap;\n}\n\n.dashboard .module table td a {\n    display: block;\n    padding-right: .6em;\n}\n\n/* RECENT ACTIONS MODULE */\n\n.module ul.actionlist {\n    margin-left: 0;\n}\n\nul.actionlist li {\n    list-style-type: none;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/dashboard.e90f2068217b.css",
    "content": "/* DASHBOARD */\n.dashboard td, .dashboard th {\n    word-break: break-word;\n}\n\n.dashboard .module table th {\n    width: 100%;\n}\n\n.dashboard .module table td {\n    white-space: nowrap;\n}\n\n.dashboard .module table td a {\n    display: block;\n    padding-right: .6em;\n}\n\n/* RECENT ACTIONS MODULE */\n\n.module ul.actionlist {\n    margin-left: 0;\n}\n\nul.actionlist li {\n    list-style-type: none;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/forms.b29a0c8c9155.css",
    "content": "@import url(\"widgets.8a70ea6d8850.css\");\n\n/* FORM ROWS */\n\n.form-row {\n    overflow: hidden;\n    padding: 10px;\n    font-size: 0.8125rem;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.form-row img, .form-row input {\n    vertical-align: middle;\n}\n\n.form-row label input[type=\"checkbox\"] {\n    margin-top: 0;\n    vertical-align: 0;\n}\n\nform .form-row p {\n    padding-left: 0;\n}\n\n.flex-container {\n    display: flex;\n}\n\n.form-multiline {\n    flex-wrap: wrap;\n}\n\n.form-multiline > div {\n    padding-bottom: 10px;\n}\n\n/* FORM LABELS */\n\nlabel {\n    font-weight: normal;\n    color: var(--body-quiet-color);\n    font-size: 0.8125rem;\n}\n\n.required label, label.required {\n    font-weight: bold;\n    color: var(--body-fg);\n}\n\n/* RADIO BUTTONS */\n\nform div.radiolist div {\n    padding-right: 7px;\n}\n\nform div.radiolist.inline div {\n    display: inline-block;\n}\n\nform div.radiolist label {\n    width: auto;\n}\n\nform div.radiolist input[type=\"radio\"] {\n    margin: -2px 4px 0 0;\n    padding: 0;\n}\n\nform ul.inline {\n    margin-left: 0;\n    padding: 0;\n}\n\nform ul.inline li {\n    float: left;\n    padding-right: 7px;\n}\n\n/* ALIGNED FIELDSETS */\n\n.aligned label {\n    display: block;\n    padding: 4px 10px 0 0;\n    min-width: 160px;\n    width: 160px;\n    word-wrap: break-word;\n    line-height: 1;\n}\n\n.aligned label:not(.vCheckboxLabel):after {\n    content: '';\n    display: inline-block;\n    vertical-align: middle;\n    height: 1.625rem;\n}\n\n.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly {\n    padding: 6px 0;\n    margin-top: 0;\n    margin-bottom: 0;\n    margin-left: 0;\n    overflow-wrap: break-word;\n}\n\n.aligned ul label {\n    display: inline;\n    float: none;\n    width: auto;\n}\n\n.aligned .form-row input {\n    margin-bottom: 0;\n}\n\n.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {\n    width: 350px;\n}\n\nform .aligned ul {\n    margin-left: 160px;\n    padding-left: 10px;\n}\n\nform .aligned div.radiolist {\n    display: inline-block;\n    margin: 0;\n    padding: 0;\n}\n\nform .aligned p.help,\nform .aligned div.help {\n    margin-top: 0;\n    margin-left: 160px;\n    padding-left: 10px;\n}\n\nform .aligned p.date div.help.timezonewarning,\nform .aligned p.datetime div.help.timezonewarning,\nform .aligned p.time div.help.timezonewarning {\n    margin-left: 0;\n    padding-left: 0;\n    font-weight: normal;\n}\n\nform .aligned p.help:last-child,\nform .aligned div.help:last-child {\n    margin-bottom: 0;\n    padding-bottom: 0;\n}\n\nform .aligned input + p.help,\nform .aligned textarea + p.help,\nform .aligned select + p.help,\nform .aligned input + div.help,\nform .aligned textarea + div.help,\nform .aligned select + div.help {\n    margin-left: 160px;\n    padding-left: 10px;\n}\n\nform .aligned ul li {\n    list-style: none;\n}\n\nform .aligned table p {\n    margin-left: 0;\n    padding-left: 0;\n}\n\n.aligned .vCheckboxLabel {\n    float: none;\n    width: auto;\n    display: inline-block;\n    vertical-align: -3px;\n    padding: 0 0 5px 5px;\n}\n\n.aligned .vCheckboxLabel + p.help,\n.aligned .vCheckboxLabel + div.help {\n    margin-top: -4px;\n}\n\n.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {\n    width: 610px;\n}\n\nfieldset .fieldBox {\n    margin-right: 20px;\n}\n\n/* WIDE FIELDSETS */\n\n.wide label {\n    width: 200px;\n}\n\nform .wide p,\nform .wide ul.errorlist,\nform .wide input + p.help,\nform .wide input + div.help {\n    margin-left: 200px;\n}\n\nform .wide p.help,\nform .wide div.help {\n    padding-left: 50px;\n}\n\nform div.help ul {\n    padding-left: 0;\n    margin-left: 0;\n}\n\n.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {\n    width: 450px;\n}\n\n/* COLLAPSED FIELDSETS */\n\nfieldset.collapsed * {\n    display: none;\n}\n\nfieldset.collapsed h2, fieldset.collapsed {\n    display: block;\n}\n\nfieldset.collapsed {\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    overflow: hidden;\n}\n\nfieldset.collapsed h2 {\n    background: var(--darkened-bg);\n    color: var(--body-quiet-color);\n}\n\nfieldset .collapse-toggle {\n    color: var(--header-link-color);\n}\n\nfieldset.collapsed .collapse-toggle {\n    background: transparent;\n    display: inline;\n    color: var(--link-fg);\n}\n\n/* MONOSPACE TEXTAREAS */\n\nfieldset.monospace textarea {\n    font-family: var(--font-family-monospace);\n}\n\n/* SUBMIT ROW */\n\n.submit-row {\n    padding: 12px 14px 12px;\n    margin: 0 0 20px;\n    background: var(--darkened-bg);\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    overflow: hidden;\n    display: flex;\n    gap: 10px;\n    flex-wrap: wrap;\n}\n\nbody.popup .submit-row {\n    overflow: auto;\n}\n\n.submit-row input {\n    height: 2.1875rem;\n    line-height: 0.9375rem;\n}\n\n.submit-row input, .submit-row a {\n    margin: 0;\n}\n\n.submit-row input.default {\n    text-transform: uppercase;\n}\n\n.submit-row a.deletelink {\n    margin-left: auto;\n}\n\n.submit-row a.deletelink {\n    display: block;\n    background: var(--delete-button-bg);\n    border-radius: 4px;\n    padding: 0.625rem 0.9375rem;\n    height: 0.9375rem;\n    line-height: 0.9375rem;\n    color: var(--button-fg);\n}\n\n.submit-row a.closelink {\n    display: inline-block;\n    background: var(--close-button-bg);\n    border-radius: 4px;\n    padding: 10px 15px;\n    height: 0.9375rem;\n    line-height: 0.9375rem;\n    color: var(--button-fg);\n}\n\n.submit-row a.deletelink:focus,\n.submit-row a.deletelink:hover,\n.submit-row a.deletelink:active {\n    background: var(--delete-button-hover-bg);\n    text-decoration: none;\n}\n\n.submit-row a.closelink:focus,\n.submit-row a.closelink:hover,\n.submit-row a.closelink:active {\n    background: var(--close-button-hover-bg);\n    text-decoration: none;\n}\n\n/* CUSTOM FORM FIELDS */\n\n.vSelectMultipleField {\n    vertical-align: top;\n}\n\n.vCheckboxField {\n    border: none;\n}\n\n.vDateField, .vTimeField {\n    margin-right: 2px;\n    margin-bottom: 4px;\n}\n\n.vDateField {\n    min-width: 6.85em;\n}\n\n.vTimeField {\n    min-width: 4.7em;\n}\n\n.vURLField {\n    width: 30em;\n}\n\n.vLargeTextField, .vXMLLargeTextField {\n    width: 48em;\n}\n\n.flatpages-flatpage #id_content {\n    height: 40.2em;\n}\n\n.module table .vPositiveSmallIntegerField {\n    width: 2.2em;\n}\n\n.vIntegerField {\n    width: 5em;\n}\n\n.vBigIntegerField {\n    width: 10em;\n}\n\n.vForeignKeyRawIdAdminField {\n    width: 5em;\n}\n\n.vTextField, .vUUIDField {\n    width: 20em;\n}\n\n/* INLINES */\n\n.inline-group {\n    padding: 0;\n    margin: 0 0 30px;\n}\n\n.inline-group thead th {\n    padding: 8px 10px;\n}\n\n.inline-group .aligned label {\n    width: 160px;\n}\n\n.inline-related {\n    position: relative;\n}\n\n.inline-related h3 {\n    margin: 0;\n    color: var(--body-quiet-color);\n    padding: 5px;\n    font-size: 0.8125rem;\n    background: var(--darkened-bg);\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.inline-related h3 span.delete {\n    float: right;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: 2px;\n    font-size: 0.6875rem;\n}\n\n.inline-related fieldset {\n    margin: 0;\n    background: var(--body-bg);\n    border: none;\n    width: 100%;\n}\n\n.inline-related fieldset.module h3 {\n    margin: 0;\n    padding: 2px 5px 3px 5px;\n    font-size: 0.6875rem;\n    text-align: left;\n    font-weight: bold;\n    background: #bcd;\n    color: var(--body-bg);\n}\n\n.inline-group .tabular fieldset.module {\n    border: none;\n}\n\n.inline-related.tabular fieldset.module table {\n    width: 100%;\n    overflow-x: scroll;\n}\n\n.last-related fieldset {\n    border: none;\n}\n\n.inline-group .tabular tr.has_original td {\n    padding-top: 2em;\n}\n\n.inline-group .tabular tr td.original {\n    padding: 2px 0 0 0;\n    width: 0;\n    _position: relative;\n}\n\n.inline-group .tabular th.original {\n    width: 0px;\n    padding: 0;\n}\n\n.inline-group .tabular td.original p {\n    position: absolute;\n    left: 0;\n    height: 1.1em;\n    padding: 2px 9px;\n    overflow: hidden;\n    font-size: 0.5625rem;\n    font-weight: bold;\n    color: var(--body-quiet-color);\n    _width: 700px;\n}\n\n.inline-group ul.tools {\n    padding: 0;\n    margin: 0;\n    list-style: none;\n}\n\n.inline-group ul.tools li {\n    display: inline;\n    padding: 0 5px;\n}\n\n.inline-group div.add-row,\n.inline-group .tabular tr.add-row td {\n    color: var(--body-quiet-color);\n    background: var(--darkened-bg);\n    padding: 8px 10px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.inline-group .tabular tr.add-row td {\n    padding: 8px 10px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.inline-group ul.tools a.add,\n.inline-group div.add-row a,\n.inline-group .tabular tr.add-row td a {\n    background: url(\"../img/icon-addlink.d519b3bab011.svg\") 0 1px no-repeat;\n    padding-left: 16px;\n    font-size: 0.75rem;\n}\n\n.empty-form {\n    display: none;\n}\n\n/* RELATED FIELD ADD ONE / LOOKUP */\n\n.related-lookup {\n    margin-left: 5px;\n    display: inline-block;\n    vertical-align: middle;\n    background-repeat: no-repeat;\n    background-size: 14px;\n}\n\n.related-lookup {\n    width: 1rem;\n    height: 1rem;\n    background-image: url(\"../img/search.7cf54ff789c6.svg\");\n}\n\nform .related-widget-wrapper ul {\n    display: inline-block;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n.clearable-file-input input {\n    margin-top: 0;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/forms.css",
    "content": "@import url('widgets.css');\n\n/* FORM ROWS */\n\n.form-row {\n    overflow: hidden;\n    padding: 10px;\n    font-size: 0.8125rem;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.form-row img, .form-row input {\n    vertical-align: middle;\n}\n\n.form-row label input[type=\"checkbox\"] {\n    margin-top: 0;\n    vertical-align: 0;\n}\n\nform .form-row p {\n    padding-left: 0;\n}\n\n.flex-container {\n    display: flex;\n}\n\n.form-multiline {\n    flex-wrap: wrap;\n}\n\n.form-multiline > div {\n    padding-bottom: 10px;\n}\n\n/* FORM LABELS */\n\nlabel {\n    font-weight: normal;\n    color: var(--body-quiet-color);\n    font-size: 0.8125rem;\n}\n\n.required label, label.required {\n    font-weight: bold;\n    color: var(--body-fg);\n}\n\n/* RADIO BUTTONS */\n\nform div.radiolist div {\n    padding-right: 7px;\n}\n\nform div.radiolist.inline div {\n    display: inline-block;\n}\n\nform div.radiolist label {\n    width: auto;\n}\n\nform div.radiolist input[type=\"radio\"] {\n    margin: -2px 4px 0 0;\n    padding: 0;\n}\n\nform ul.inline {\n    margin-left: 0;\n    padding: 0;\n}\n\nform ul.inline li {\n    float: left;\n    padding-right: 7px;\n}\n\n/* ALIGNED FIELDSETS */\n\n.aligned label {\n    display: block;\n    padding: 4px 10px 0 0;\n    min-width: 160px;\n    width: 160px;\n    word-wrap: break-word;\n    line-height: 1;\n}\n\n.aligned label:not(.vCheckboxLabel):after {\n    content: '';\n    display: inline-block;\n    vertical-align: middle;\n    height: 1.625rem;\n}\n\n.aligned label + p, .aligned .checkbox-row + div.help, .aligned label + div.readonly {\n    padding: 6px 0;\n    margin-top: 0;\n    margin-bottom: 0;\n    margin-left: 0;\n    overflow-wrap: break-word;\n}\n\n.aligned ul label {\n    display: inline;\n    float: none;\n    width: auto;\n}\n\n.aligned .form-row input {\n    margin-bottom: 0;\n}\n\n.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {\n    width: 350px;\n}\n\nform .aligned ul {\n    margin-left: 160px;\n    padding-left: 10px;\n}\n\nform .aligned div.radiolist {\n    display: inline-block;\n    margin: 0;\n    padding: 0;\n}\n\nform .aligned p.help,\nform .aligned div.help {\n    margin-top: 0;\n    margin-left: 160px;\n    padding-left: 10px;\n}\n\nform .aligned p.date div.help.timezonewarning,\nform .aligned p.datetime div.help.timezonewarning,\nform .aligned p.time div.help.timezonewarning {\n    margin-left: 0;\n    padding-left: 0;\n    font-weight: normal;\n}\n\nform .aligned p.help:last-child,\nform .aligned div.help:last-child {\n    margin-bottom: 0;\n    padding-bottom: 0;\n}\n\nform .aligned input + p.help,\nform .aligned textarea + p.help,\nform .aligned select + p.help,\nform .aligned input + div.help,\nform .aligned textarea + div.help,\nform .aligned select + div.help {\n    margin-left: 160px;\n    padding-left: 10px;\n}\n\nform .aligned ul li {\n    list-style: none;\n}\n\nform .aligned table p {\n    margin-left: 0;\n    padding-left: 0;\n}\n\n.aligned .vCheckboxLabel {\n    float: none;\n    width: auto;\n    display: inline-block;\n    vertical-align: -3px;\n    padding: 0 0 5px 5px;\n}\n\n.aligned .vCheckboxLabel + p.help,\n.aligned .vCheckboxLabel + div.help {\n    margin-top: -4px;\n}\n\n.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {\n    width: 610px;\n}\n\nfieldset .fieldBox {\n    margin-right: 20px;\n}\n\n/* WIDE FIELDSETS */\n\n.wide label {\n    width: 200px;\n}\n\nform .wide p,\nform .wide ul.errorlist,\nform .wide input + p.help,\nform .wide input + div.help {\n    margin-left: 200px;\n}\n\nform .wide p.help,\nform .wide div.help {\n    padding-left: 50px;\n}\n\nform div.help ul {\n    padding-left: 0;\n    margin-left: 0;\n}\n\n.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {\n    width: 450px;\n}\n\n/* COLLAPSED FIELDSETS */\n\nfieldset.collapsed * {\n    display: none;\n}\n\nfieldset.collapsed h2, fieldset.collapsed {\n    display: block;\n}\n\nfieldset.collapsed {\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    overflow: hidden;\n}\n\nfieldset.collapsed h2 {\n    background: var(--darkened-bg);\n    color: var(--body-quiet-color);\n}\n\nfieldset .collapse-toggle {\n    color: var(--header-link-color);\n}\n\nfieldset.collapsed .collapse-toggle {\n    background: transparent;\n    display: inline;\n    color: var(--link-fg);\n}\n\n/* MONOSPACE TEXTAREAS */\n\nfieldset.monospace textarea {\n    font-family: var(--font-family-monospace);\n}\n\n/* SUBMIT ROW */\n\n.submit-row {\n    padding: 12px 14px 12px;\n    margin: 0 0 20px;\n    background: var(--darkened-bg);\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    overflow: hidden;\n    display: flex;\n    gap: 10px;\n    flex-wrap: wrap;\n}\n\nbody.popup .submit-row {\n    overflow: auto;\n}\n\n.submit-row input {\n    height: 2.1875rem;\n    line-height: 0.9375rem;\n}\n\n.submit-row input, .submit-row a {\n    margin: 0;\n}\n\n.submit-row input.default {\n    text-transform: uppercase;\n}\n\n.submit-row a.deletelink {\n    margin-left: auto;\n}\n\n.submit-row a.deletelink {\n    display: block;\n    background: var(--delete-button-bg);\n    border-radius: 4px;\n    padding: 0.625rem 0.9375rem;\n    height: 0.9375rem;\n    line-height: 0.9375rem;\n    color: var(--button-fg);\n}\n\n.submit-row a.closelink {\n    display: inline-block;\n    background: var(--close-button-bg);\n    border-radius: 4px;\n    padding: 10px 15px;\n    height: 0.9375rem;\n    line-height: 0.9375rem;\n    color: var(--button-fg);\n}\n\n.submit-row a.deletelink:focus,\n.submit-row a.deletelink:hover,\n.submit-row a.deletelink:active {\n    background: var(--delete-button-hover-bg);\n    text-decoration: none;\n}\n\n.submit-row a.closelink:focus,\n.submit-row a.closelink:hover,\n.submit-row a.closelink:active {\n    background: var(--close-button-hover-bg);\n    text-decoration: none;\n}\n\n/* CUSTOM FORM FIELDS */\n\n.vSelectMultipleField {\n    vertical-align: top;\n}\n\n.vCheckboxField {\n    border: none;\n}\n\n.vDateField, .vTimeField {\n    margin-right: 2px;\n    margin-bottom: 4px;\n}\n\n.vDateField {\n    min-width: 6.85em;\n}\n\n.vTimeField {\n    min-width: 4.7em;\n}\n\n.vURLField {\n    width: 30em;\n}\n\n.vLargeTextField, .vXMLLargeTextField {\n    width: 48em;\n}\n\n.flatpages-flatpage #id_content {\n    height: 40.2em;\n}\n\n.module table .vPositiveSmallIntegerField {\n    width: 2.2em;\n}\n\n.vIntegerField {\n    width: 5em;\n}\n\n.vBigIntegerField {\n    width: 10em;\n}\n\n.vForeignKeyRawIdAdminField {\n    width: 5em;\n}\n\n.vTextField, .vUUIDField {\n    width: 20em;\n}\n\n/* INLINES */\n\n.inline-group {\n    padding: 0;\n    margin: 0 0 30px;\n}\n\n.inline-group thead th {\n    padding: 8px 10px;\n}\n\n.inline-group .aligned label {\n    width: 160px;\n}\n\n.inline-related {\n    position: relative;\n}\n\n.inline-related h3 {\n    margin: 0;\n    color: var(--body-quiet-color);\n    padding: 5px;\n    font-size: 0.8125rem;\n    background: var(--darkened-bg);\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.inline-related h3 span.delete {\n    float: right;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: 2px;\n    font-size: 0.6875rem;\n}\n\n.inline-related fieldset {\n    margin: 0;\n    background: var(--body-bg);\n    border: none;\n    width: 100%;\n}\n\n.inline-related fieldset.module h3 {\n    margin: 0;\n    padding: 2px 5px 3px 5px;\n    font-size: 0.6875rem;\n    text-align: left;\n    font-weight: bold;\n    background: #bcd;\n    color: var(--body-bg);\n}\n\n.inline-group .tabular fieldset.module {\n    border: none;\n}\n\n.inline-related.tabular fieldset.module table {\n    width: 100%;\n    overflow-x: scroll;\n}\n\n.last-related fieldset {\n    border: none;\n}\n\n.inline-group .tabular tr.has_original td {\n    padding-top: 2em;\n}\n\n.inline-group .tabular tr td.original {\n    padding: 2px 0 0 0;\n    width: 0;\n    _position: relative;\n}\n\n.inline-group .tabular th.original {\n    width: 0px;\n    padding: 0;\n}\n\n.inline-group .tabular td.original p {\n    position: absolute;\n    left: 0;\n    height: 1.1em;\n    padding: 2px 9px;\n    overflow: hidden;\n    font-size: 0.5625rem;\n    font-weight: bold;\n    color: var(--body-quiet-color);\n    _width: 700px;\n}\n\n.inline-group ul.tools {\n    padding: 0;\n    margin: 0;\n    list-style: none;\n}\n\n.inline-group ul.tools li {\n    display: inline;\n    padding: 0 5px;\n}\n\n.inline-group div.add-row,\n.inline-group .tabular tr.add-row td {\n    color: var(--body-quiet-color);\n    background: var(--darkened-bg);\n    padding: 8px 10px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.inline-group .tabular tr.add-row td {\n    padding: 8px 10px;\n    border-bottom: 1px solid var(--hairline-color);\n}\n\n.inline-group ul.tools a.add,\n.inline-group div.add-row a,\n.inline-group .tabular tr.add-row td a {\n    background: url(../img/icon-addlink.svg) 0 1px no-repeat;\n    padding-left: 16px;\n    font-size: 0.75rem;\n}\n\n.empty-form {\n    display: none;\n}\n\n/* RELATED FIELD ADD ONE / LOOKUP */\n\n.related-lookup {\n    margin-left: 5px;\n    display: inline-block;\n    vertical-align: middle;\n    background-repeat: no-repeat;\n    background-size: 14px;\n}\n\n.related-lookup {\n    width: 1rem;\n    height: 1rem;\n    background-image: url(../img/search.svg);\n}\n\nform .related-widget-wrapper ul {\n    display: inline-block;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n.clearable-file-input input {\n    margin-top: 0;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/login.586129c60a93.css",
    "content": "/* LOGIN FORM */\n\n.login {\n    background: var(--darkened-bg);\n    height: auto;\n}\n\n.login #header {\n    height: auto;\n    padding: 15px 16px;\n    justify-content: center;\n}\n\n.login #header h1 {\n    font-size: 1.125rem;\n    margin: 0;\n}\n\n.login #header h1 a {\n    color: var(--header-link-color);\n}\n\n.login #content {\n    padding: 20px 20px 0;\n}\n\n.login #container {\n    background: var(--body-bg);\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    overflow: hidden;\n    width: 28em;\n    min-width: 300px;\n    margin: 100px auto;\n    height: auto;\n}\n\n.login .form-row {\n    padding: 4px 0;\n}\n\n.login .form-row label {\n    display: block;\n    line-height: 2em;\n}\n\n.login .form-row #id_username, .login .form-row #id_password {\n    padding: 8px;\n    width: 100%;\n    box-sizing: border-box;\n}\n\n.login .submit-row {\n    padding: 1em 0 0 0;\n    margin: 0;\n    text-align: center;\n}\n\n.login .password-reset-link {\n    text-align: center;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/login.css",
    "content": "/* LOGIN FORM */\n\n.login {\n    background: var(--darkened-bg);\n    height: auto;\n}\n\n.login #header {\n    height: auto;\n    padding: 15px 16px;\n    justify-content: center;\n}\n\n.login #header h1 {\n    font-size: 1.125rem;\n    margin: 0;\n}\n\n.login #header h1 a {\n    color: var(--header-link-color);\n}\n\n.login #content {\n    padding: 20px 20px 0;\n}\n\n.login #container {\n    background: var(--body-bg);\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    overflow: hidden;\n    width: 28em;\n    min-width: 300px;\n    margin: 100px auto;\n    height: auto;\n}\n\n.login .form-row {\n    padding: 4px 0;\n}\n\n.login .form-row label {\n    display: block;\n    line-height: 2em;\n}\n\n.login .form-row #id_username, .login .form-row #id_password {\n    padding: 8px;\n    width: 100%;\n    box-sizing: border-box;\n}\n\n.login .submit-row {\n    padding: 1em 0 0 0;\n    margin: 0;\n    text-align: center;\n}\n\n.login .password-reset-link {\n    text-align: center;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/nav_sidebar.css",
    "content": ".sticky {\n    position: sticky;\n    top: 0;\n    max-height: 100vh;\n}\n\n.toggle-nav-sidebar {\n    z-index: 20;\n    left: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex: 0 0 23px;\n    width: 23px;\n    border: 0;\n    border-right: 1px solid var(--hairline-color);\n    background-color: var(--body-bg);\n    cursor: pointer;\n    font-size: 1.25rem;\n    color: var(--link-fg);\n    padding: 0;\n}\n\n[dir=\"rtl\"] .toggle-nav-sidebar {\n    border-left: 1px solid var(--hairline-color);\n    border-right: 0;\n}\n\n.toggle-nav-sidebar:hover,\n.toggle-nav-sidebar:focus {\n    background-color: var(--darkened-bg);\n}\n\n#nav-sidebar {\n    z-index: 15;\n    flex: 0 0 275px;\n    left: -276px;\n    margin-left: -276px;\n    border-top: 1px solid transparent;\n    border-right: 1px solid var(--hairline-color);\n    background-color: var(--body-bg);\n    overflow: auto;\n}\n\n[dir=\"rtl\"] #nav-sidebar {\n    border-left: 1px solid var(--hairline-color);\n    border-right: 0;\n    left: 0;\n    margin-left: 0;\n    right: -276px;\n    margin-right: -276px;\n}\n\n.toggle-nav-sidebar::before {\n    content: '\\00BB';\n}\n\n.main.shifted .toggle-nav-sidebar::before {\n    content: '\\00AB';\n}\n\n.main > #nav-sidebar {\n    visibility: hidden;\n}\n\n.main.shifted > #nav-sidebar {\n    margin-left: 0;\n    visibility: visible;\n}\n\n[dir=\"rtl\"] .main.shifted > #nav-sidebar {\n    margin-right: 0;\n}\n\n#nav-sidebar .module th {\n    width: 100%;\n    overflow-wrap: anywhere;\n}\n\n#nav-sidebar .module th,\n#nav-sidebar .module caption {\n    padding-left: 16px;\n}\n\n#nav-sidebar .module td {\n    white-space: nowrap;\n}\n\n[dir=\"rtl\"] #nav-sidebar .module th,\n[dir=\"rtl\"] #nav-sidebar .module caption {\n    padding-left: 8px;\n    padding-right: 16px;\n}\n\n#nav-sidebar .current-app .section:link,\n#nav-sidebar .current-app .section:visited {\n    color: var(--header-color);\n    font-weight: bold;\n}\n\n#nav-sidebar .current-model {\n    background: var(--selected-row);\n}\n\n@media (forced-colors: active) {\n    #nav-sidebar .current-model {\n        background-color: SelectedItem;\n    }\n}\n\n.main > #nav-sidebar + .content {\n    max-width: calc(100% - 23px);\n}\n\n.main.shifted > #nav-sidebar + .content {\n    max-width: calc(100% - 299px);\n}\n\n@media (max-width: 767px) {\n    #nav-sidebar, #toggle-nav-sidebar {\n        display: none;\n    }\n\n    .main > #nav-sidebar + .content,\n    .main.shifted > #nav-sidebar + .content {\n        max-width: 100%;\n    }\n}\n\n#nav-filter {\n    width: 100%;\n    box-sizing: border-box;\n    padding: 2px 5px;\n    margin: 5px 0;\n    border: 1px solid var(--border-color);\n    background-color: var(--darkened-bg);\n    color: var(--body-fg);\n}\n\n#nav-filter:focus {\n    border-color: var(--body-quiet-color);\n}\n\n#nav-filter.no-results {\n    background: var(--message-error-bg);\n}\n\n#nav-sidebar table {\n    width: 100%;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/nav_sidebar.dd925738f4cc.css",
    "content": ".sticky {\n    position: sticky;\n    top: 0;\n    max-height: 100vh;\n}\n\n.toggle-nav-sidebar {\n    z-index: 20;\n    left: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    flex: 0 0 23px;\n    width: 23px;\n    border: 0;\n    border-right: 1px solid var(--hairline-color);\n    background-color: var(--body-bg);\n    cursor: pointer;\n    font-size: 1.25rem;\n    color: var(--link-fg);\n    padding: 0;\n}\n\n[dir=\"rtl\"] .toggle-nav-sidebar {\n    border-left: 1px solid var(--hairline-color);\n    border-right: 0;\n}\n\n.toggle-nav-sidebar:hover,\n.toggle-nav-sidebar:focus {\n    background-color: var(--darkened-bg);\n}\n\n#nav-sidebar {\n    z-index: 15;\n    flex: 0 0 275px;\n    left: -276px;\n    margin-left: -276px;\n    border-top: 1px solid transparent;\n    border-right: 1px solid var(--hairline-color);\n    background-color: var(--body-bg);\n    overflow: auto;\n}\n\n[dir=\"rtl\"] #nav-sidebar {\n    border-left: 1px solid var(--hairline-color);\n    border-right: 0;\n    left: 0;\n    margin-left: 0;\n    right: -276px;\n    margin-right: -276px;\n}\n\n.toggle-nav-sidebar::before {\n    content: '\\00BB';\n}\n\n.main.shifted .toggle-nav-sidebar::before {\n    content: '\\00AB';\n}\n\n.main > #nav-sidebar {\n    visibility: hidden;\n}\n\n.main.shifted > #nav-sidebar {\n    margin-left: 0;\n    visibility: visible;\n}\n\n[dir=\"rtl\"] .main.shifted > #nav-sidebar {\n    margin-right: 0;\n}\n\n#nav-sidebar .module th {\n    width: 100%;\n    overflow-wrap: anywhere;\n}\n\n#nav-sidebar .module th,\n#nav-sidebar .module caption {\n    padding-left: 16px;\n}\n\n#nav-sidebar .module td {\n    white-space: nowrap;\n}\n\n[dir=\"rtl\"] #nav-sidebar .module th,\n[dir=\"rtl\"] #nav-sidebar .module caption {\n    padding-left: 8px;\n    padding-right: 16px;\n}\n\n#nav-sidebar .current-app .section:link,\n#nav-sidebar .current-app .section:visited {\n    color: var(--header-color);\n    font-weight: bold;\n}\n\n#nav-sidebar .current-model {\n    background: var(--selected-row);\n}\n\n@media (forced-colors: active) {\n    #nav-sidebar .current-model {\n        background-color: SelectedItem;\n    }\n}\n\n.main > #nav-sidebar + .content {\n    max-width: calc(100% - 23px);\n}\n\n.main.shifted > #nav-sidebar + .content {\n    max-width: calc(100% - 299px);\n}\n\n@media (max-width: 767px) {\n    #nav-sidebar, #toggle-nav-sidebar {\n        display: none;\n    }\n\n    .main > #nav-sidebar + .content,\n    .main.shifted > #nav-sidebar + .content {\n        max-width: 100%;\n    }\n}\n\n#nav-filter {\n    width: 100%;\n    box-sizing: border-box;\n    padding: 2px 5px;\n    margin: 5px 0;\n    border: 1px solid var(--border-color);\n    background-color: var(--darkened-bg);\n    color: var(--body-fg);\n}\n\n#nav-filter:focus {\n    border-color: var(--body-quiet-color);\n}\n\n#nav-filter.no-results {\n    background: var(--message-error-bg);\n}\n\n#nav-sidebar table {\n    width: 100%;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/responsive.css",
    "content": "/* Tablets */\n\ninput[type=\"submit\"], button {\n    -webkit-appearance: none;\n    appearance: none;\n}\n\n@media (max-width: 1024px) {\n    /* Basic */\n\n    html {\n        -webkit-text-size-adjust: 100%;\n    }\n\n    td, th {\n        padding: 10px;\n        font-size: 0.875rem;\n    }\n\n    .small {\n        font-size: 0.75rem;\n    }\n\n    /* Layout */\n\n    #container {\n        min-width: 0;\n    }\n\n    #content {\n        padding: 15px 20px 20px;\n    }\n\n    div.breadcrumbs {\n        padding: 10px 30px;\n    }\n\n    /* Header */\n\n    #header {\n        flex-direction: column;\n        padding: 15px 30px;\n        justify-content: flex-start;\n    }\n\n    #site-name {\n        margin: 0 0 8px;\n        line-height: 1.2;\n    }\n\n    #user-tools {\n        margin: 0;\n        font-weight: 400;\n        line-height: 1.85;\n        text-align: left;\n    }\n\n    #user-tools a {\n        display: inline-block;\n        line-height: 1.4;\n    }\n\n    /* Dashboard */\n\n    .dashboard #content {\n        width: auto;\n    }\n\n    #content-related {\n        margin-right: -290px;\n    }\n\n    .colSM #content-related {\n        margin-left: -290px;\n    }\n\n    .colMS {\n        margin-right: 290px;\n    }\n\n    .colSM {\n        margin-left: 290px;\n    }\n\n    .dashboard .module table td a {\n        padding-right: 0;\n    }\n\n    td .changelink, td .addlink {\n        font-size: 0.8125rem;\n    }\n\n    /* Changelist */\n\n    #toolbar {\n        border: none;\n        padding: 15px;\n    }\n\n    #changelist-search > div {\n        display: flex;\n        flex-wrap: nowrap;\n        max-width: 480px;\n    }\n\n    #changelist-search label {\n        line-height: 1.375rem;\n    }\n\n    #toolbar form #searchbar {\n        flex: 1 0 auto;\n        width: 0;\n        height: 1.375rem;\n        margin: 0 10px 0 6px;\n    }\n\n    #toolbar form input[type=submit] {\n        flex: 0 1 auto;\n    }\n\n    #changelist-search .quiet {\n        width: 0;\n        flex: 1 0 auto;\n        margin: 5px 0 0 25px;\n    }\n\n    #changelist .actions {\n        display: flex;\n        flex-wrap: wrap;\n        padding: 15px 0;\n    }\n\n    #changelist .actions label {\n        display: flex;\n    }\n\n    #changelist .actions select {\n        background: var(--body-bg);\n    }\n\n    #changelist .actions .button {\n        min-width: 48px;\n        margin: 0 10px;\n    }\n\n    #changelist .actions span.all,\n    #changelist .actions span.clear,\n    #changelist .actions span.question,\n    #changelist .actions span.action-counter {\n        font-size: 0.6875rem;\n        margin: 0 10px 0 0;\n    }\n\n    #changelist-filter {\n        flex-basis: 200px;\n    }\n\n    .change-list .filtered .results,\n    .change-list .filtered .paginator,\n    .filtered #toolbar,\n    .filtered .actions,\n\n    #changelist .paginator {\n        border-top-color: var(--hairline-color); /* XXX Is this used at all? */\n    }\n\n    #changelist .results + .paginator {\n        border-top: none;\n    }\n\n    /* Forms */\n\n    label {\n        font-size: 0.875rem;\n    }\n\n    .form-row input[type=text],\n    .form-row input[type=password],\n    .form-row input[type=email],\n    .form-row input[type=url],\n    .form-row input[type=tel],\n    .form-row input[type=number],\n    .form-row textarea,\n    .form-row select,\n    .form-row .vTextField {\n        box-sizing: border-box;\n        margin: 0;\n        padding: 6px 8px;\n        min-height: 2.25rem;\n        font-size: 0.875rem;\n    }\n\n    .form-row select {\n        height: 2.25rem;\n    }\n\n    .form-row select[multiple] {\n        height: auto;\n        min-height: 0;\n    }\n\n    fieldset .fieldBox + .fieldBox {\n        margin-top: 10px;\n        padding-top: 10px;\n        border-top: 1px solid var(--hairline-color);\n    }\n\n    textarea {\n        max-width: 100%;\n        max-height: 120px;\n    }\n\n    .aligned label {\n        padding-top: 6px;\n    }\n\n    .aligned .related-lookup,\n    .aligned .datetimeshortcuts,\n    .aligned .related-lookup + strong {\n        align-self: center;\n        margin-left: 15px;\n    }\n\n    form .aligned div.radiolist {\n        margin-left: 2px;\n    }\n\n    .submit-row {\n        padding: 8px;\n    }\n\n    .submit-row a.deletelink {\n        padding: 10px 7px;\n    }\n\n    .button, input[type=submit], input[type=button], .submit-row input, a.button {\n        padding: 7px;\n    }\n\n    /* Selector */\n\n    .selector {\n        display: flex;\n        width: 100%;\n    }\n\n    .selector .selector-filter {\n        display: flex;\n        align-items: center;\n    }\n\n    .selector .selector-filter label {\n        margin: 0 8px 0 0;\n    }\n\n    .selector .selector-filter input {\n        width: 100%;\n        min-height: 0;\n        flex: 1 1;\n    }\n\n    .selector-available, .selector-chosen {\n        width: auto;\n        flex: 1 1;\n        display: flex;\n        flex-direction: column;\n    }\n\n    .selector select {\n        width: 100%;\n        flex: 1 0 auto;\n        margin-bottom: 5px;\n    }\n\n    .selector ul.selector-chooser {\n        width: 26px;\n        height: 52px;\n        padding: 2px 0;\n        border-radius: 20px;\n        transform: translateY(-10px);\n    }\n\n    .selector-add, .selector-remove {\n        width: 20px;\n        height: 20px;\n        background-size: 20px auto;\n    }\n\n    .selector-add {\n        background-position: 0 -120px;\n    }\n\n    .selector-remove {\n        background-position: 0 -80px;\n    }\n\n    a.selector-chooseall, a.selector-clearall {\n        align-self: center;\n    }\n\n    .stacked {\n        flex-direction: column;\n        max-width: 480px;\n    }\n\n    .stacked > * {\n        flex: 0 1 auto;\n    }\n\n    .stacked select {\n        margin-bottom: 0;\n    }\n\n    .stacked .selector-available, .stacked .selector-chosen {\n        width: auto;\n    }\n\n    .stacked ul.selector-chooser {\n        width: 52px;\n        height: 26px;\n        padding: 0 2px;\n        transform: none;\n    }\n\n    .stacked .selector-chooser li {\n        padding: 3px;\n    }\n\n    .stacked .selector-add, .stacked .selector-remove {\n        background-size: 20px auto;\n    }\n\n    .stacked .selector-add {\n        background-position: 0 -40px;\n    }\n\n    .stacked .active.selector-add {\n        background-position: 0 -40px;\n    }\n\n    .active.selector-add:focus, .active.selector-add:hover {\n        background-position: 0 -140px;\n    }\n\n    .stacked .active.selector-add:focus, .stacked .active.selector-add:hover {\n        background-position: 0 -60px;\n    }\n\n    .stacked .selector-remove {\n        background-position: 0 0;\n    }\n\n    .stacked .active.selector-remove {\n        background-position: 0 0;\n    }\n\n    .active.selector-remove:focus, .active.selector-remove:hover {\n        background-position: 0 -100px;\n    }\n\n    .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover {\n        background-position: 0 -20px;\n    }\n\n    .help-tooltip, .selector .help-icon {\n        display: none;\n    }\n\n    .datetime input {\n        width: 50%;\n        max-width: 120px;\n    }\n\n    .datetime span {\n        font-size: 0.8125rem;\n    }\n\n    .datetime .timezonewarning {\n        display: block;\n        font-size: 0.6875rem;\n        color: var(--body-quiet-color);\n    }\n\n    .datetimeshortcuts {\n        color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */\n    }\n\n    .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField {\n        width: 75%;\n    }\n\n    .inline-group {\n        overflow: auto;\n    }\n\n    /* Messages */\n\n    ul.messagelist li {\n        padding-left: 55px;\n        background-position: 30px 12px;\n    }\n\n    ul.messagelist li.error {\n        background-position: 30px 12px;\n    }\n\n    ul.messagelist li.warning {\n        background-position: 30px 14px;\n    }\n\n    /* Login */\n\n    .login #header {\n        padding: 15px 20px;\n    }\n\n    .login #site-name {\n        margin: 0;\n    }\n\n    /* GIS */\n\n    div.olMap {\n        max-width: calc(100vw - 30px);\n        max-height: 300px;\n    }\n\n    .olMap + .clear_features {\n        display: block;\n        margin-top: 10px;\n    }\n\n    /* Docs */\n\n    .module table.xfull {\n        width: 100%;\n    }\n\n    pre.literal-block {\n        overflow: auto;\n    }\n}\n\n/* Mobile */\n\n@media (max-width: 767px) {\n    /* Layout */\n\n    #header, #content, #footer {\n        padding: 15px;\n    }\n\n    #footer:empty {\n        padding: 0;\n    }\n\n    div.breadcrumbs {\n        padding: 10px 15px;\n    }\n\n    /* Dashboard */\n\n    .colMS, .colSM {\n        margin: 0;\n    }\n\n    #content-related, .colSM #content-related {\n        width: 100%;\n        margin: 0;\n    }\n\n    #content-related .module {\n        margin-bottom: 0;\n    }\n\n    #content-related .module h2 {\n        padding: 10px 15px;\n        font-size: 1rem;\n    }\n\n    /* Changelist */\n\n    #changelist {\n        align-items: stretch;\n        flex-direction: column;\n    }\n\n    #toolbar {\n        padding: 10px;\n    }\n\n    #changelist-filter {\n        margin-left: 0;\n    }\n\n    #changelist .actions label {\n        flex: 1 1;\n    }\n\n    #changelist .actions select {\n        flex: 1 0;\n        width: 100%;\n    }\n\n    #changelist .actions span {\n        flex: 1 0 100%;\n    }\n\n    #changelist-filter {\n        position: static;\n        width: auto;\n        margin-top: 30px;\n    }\n\n    .object-tools {\n        float: none;\n        margin: 0 0 15px;\n        padding: 0;\n        overflow: hidden;\n    }\n\n    .object-tools li {\n        height: auto;\n        margin-left: 0;\n    }\n\n    .object-tools li + li {\n        margin-left: 15px;\n    }\n\n    /* Forms */\n\n    .form-row {\n        padding: 15px 0;\n    }\n\n    .aligned .form-row,\n    .aligned .form-row > div {\n        max-width: 100vw;\n    }\n\n    .aligned .form-row > div {\n        width: calc(100vw - 30px);\n    }\n\n    .flex-container {\n        flex-flow: column;\n    }\n\n    .flex-container.checkbox-row {\n        flex-flow: row;\n    }\n\n    textarea {\n        max-width: none;\n    }\n\n    .vURLField {\n        width: auto;\n    }\n\n    fieldset .fieldBox + .fieldBox {\n        margin-top: 15px;\n        padding-top: 15px;\n    }\n\n    fieldset.collapsed .form-row {\n        display: none;\n    }\n\n    .aligned label {\n        width: 100%;\n        min-width: auto;\n        padding: 0 0 10px;\n    }\n\n    .aligned label:after {\n        max-height: 0;\n    }\n\n    .aligned .form-row input,\n    .aligned .form-row select,\n    .aligned .form-row textarea {\n        flex: 1 1 auto;\n        max-width: 100%;\n    }\n\n    .aligned .checkbox-row input {\n        flex: 0 1 auto;\n        margin: 0;\n    }\n\n    .aligned .vCheckboxLabel {\n        flex: 1 0;\n        padding: 1px 0 0 5px;\n    }\n\n    .aligned label + p,\n    .aligned label + div.help,\n    .aligned label + div.readonly {\n        padding: 0;\n        margin-left: 0;\n    }\n\n    .aligned p.file-upload {\n        font-size: 0.8125rem;\n    }\n\n    span.clearable-file-input {\n        margin-left: 15px;\n    }\n\n    span.clearable-file-input label {\n        font-size: 0.8125rem;\n        padding-bottom: 0;\n    }\n\n    .aligned .timezonewarning {\n        flex: 1 0 100%;\n        margin-top: 5px;\n    }\n\n    form .aligned .form-row div.help {\n        width: 100%;\n        margin: 5px 0 0;\n        padding: 0;\n    }\n\n    form .aligned ul,\n    form .aligned ul.errorlist {\n        margin-left: 0;\n        padding-left: 0;\n    }\n\n    form .aligned div.radiolist {\n        margin-top: 5px;\n        margin-right: 15px;\n        margin-bottom: -3px;\n    }\n\n    form .aligned div.radiolist:not(.inline) div + div {\n        margin-top: 5px;\n    }\n\n    /* Related widget */\n\n    .related-widget-wrapper {\n        width: 100%;\n        display: flex;\n        align-items: flex-start;\n    }\n\n    .related-widget-wrapper .selector {\n        order: 1;\n    }\n\n    .related-widget-wrapper > a {\n        order: 2;\n    }\n\n    .related-widget-wrapper .radiolist ~ a {\n        align-self: flex-end;\n    }\n\n    .related-widget-wrapper > select ~ a {\n        align-self: center;\n    }\n\n    /* Selector */\n\n    .selector {\n        flex-direction: column;\n        gap: 10px 0;\n    }\n\n    .selector-available, .selector-chosen {\n        flex: 1 1 auto;\n    }\n\n    .selector select {\n        max-height: 96px;\n    }\n\n    .selector ul.selector-chooser {\n        display: block;\n        width: 52px;\n        height: 26px;\n        padding: 0 2px;\n        transform: none;\n    }\n\n    .selector ul.selector-chooser li {\n        float: left;\n    }\n\n    .selector-remove {\n        background-position: 0 0;\n    }\n\n    .active.selector-remove:focus, .active.selector-remove:hover {\n        background-position: 0 -20px;\n    }\n\n    .selector-add  {\n        background-position: 0 -40px;\n    }\n\n    .active.selector-add:focus, .active.selector-add:hover {\n        background-position: 0 -60px;\n    }\n\n    /* Inlines */\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related {\n        border: 1px solid var(--hairline-color);\n        border-radius: 4px;\n        margin-top: 15px;\n        overflow: auto;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related > * {\n        box-sizing: border-box;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related .module {\n        padding: 0 10px;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related .module .form-row {\n        border-top: 1px solid var(--hairline-color);\n        border-bottom: none;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related .module .form-row:first-child {\n        border-top: none;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related h3 {\n        padding: 10px;\n        border-top-width: 0;\n        border-bottom-width: 2px;\n        display: flex;\n        flex-wrap: wrap;\n        align-items: center;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related h3 .inline_label {\n        margin-right: auto;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related h3 span.delete {\n        float: none;\n        flex: 1 1 100%;\n        margin-top: 5px;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .aligned .form-row > div:not([class]) {\n        width: 100%;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .aligned label {\n        width: 100%;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] div.add-row {\n        margin-top: 15px;\n        border: 1px solid var(--hairline-color);\n        border-radius: 4px;\n    }\n\n    .inline-group div.add-row,\n    .inline-group .tabular tr.add-row td {\n        padding: 0;\n    }\n\n    .inline-group div.add-row a,\n    .inline-group .tabular tr.add-row td a {\n        display: block;\n        padding: 8px 10px 8px 26px;\n        background-position: 8px 9px;\n    }\n\n    /* Submit row */\n\n    .submit-row {\n        padding: 10px;\n        margin: 0 0 15px;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .submit-row input, .submit-row input.default, .submit-row a {\n        text-align: center;\n    }\n\n    .submit-row a.closelink {\n        padding: 10px 0;\n        text-align: center;\n    }\n\n    .submit-row a.deletelink {\n        margin: 0;\n    }\n\n    /* Messages */\n\n    ul.messagelist li {\n        padding-left: 40px;\n        background-position: 15px 12px;\n    }\n\n    ul.messagelist li.error {\n        background-position: 15px 12px;\n    }\n\n    ul.messagelist li.warning {\n        background-position: 15px 14px;\n    }\n\n    /* Paginator */\n\n    .paginator .this-page, .paginator a:link, .paginator a:visited {\n        padding: 4px 10px;\n    }\n\n    /* Login */\n\n    body.login {\n        padding: 0 15px;\n    }\n\n    .login #container {\n        width: auto;\n        max-width: 480px;\n        margin: 50px auto;\n    }\n\n    .login #header,\n    .login #content {\n        padding: 15px;\n    }\n\n    .login #content-main {\n        float: none;\n    }\n\n    .login .form-row {\n        padding: 0;\n    }\n\n    .login .form-row + .form-row {\n        margin-top: 15px;\n    }\n\n    .login .form-row label {\n        margin: 0 0 5px;\n        line-height: 1.2;\n    }\n\n    .login .submit-row {\n        padding: 15px 0 0;\n    }\n\n    .login br {\n        display: none;\n    }\n\n    .login .submit-row input {\n        margin: 0;\n        text-transform: uppercase;\n    }\n\n    .errornote {\n        margin: 0 0 20px;\n        padding: 8px 12px;\n        font-size: 0.8125rem;\n    }\n\n    /* Calendar and clock */\n\n    .calendarbox, .clockbox {\n        position: fixed !important;\n        top: 50% !important;\n        left: 50% !important;\n        transform: translate(-50%, -50%);\n        margin: 0;\n        border: none;\n        overflow: visible;\n    }\n\n    .calendarbox:before, .clockbox:before {\n        content: '';\n        position: fixed;\n        top: 50%;\n        left: 50%;\n        width: 100vw;\n        height: 100vh;\n        background: rgba(0, 0, 0, 0.75);\n        transform: translate(-50%, -50%);\n    }\n\n    .calendarbox > *, .clockbox > * {\n        position: relative;\n        z-index: 1;\n    }\n\n    .calendarbox > div:first-child {\n        z-index: 2;\n    }\n\n    .calendarbox .calendar, .clockbox h2 {\n        border-radius: 4px 4px 0 0;\n        overflow: hidden;\n    }\n\n    .calendarbox .calendar-cancel, .clockbox .calendar-cancel {\n        border-radius: 0 0 4px 4px;\n        overflow: hidden;\n    }\n\n    .calendar-shortcuts {\n        padding: 10px 0;\n        font-size: 0.75rem;\n        line-height: 0.75rem;\n    }\n\n    .calendar-shortcuts a {\n        margin: 0 4px;\n    }\n\n    .timelist a {\n        background: var(--body-bg);\n        padding: 4px;\n    }\n\n    .calendar-cancel {\n        padding: 8px 10px;\n    }\n\n    .clockbox h2 {\n        padding: 8px 15px;\n    }\n\n    .calendar caption {\n        padding: 10px;\n    }\n\n    .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {\n        z-index: 1;\n        top: 10px;\n    }\n\n    /* History */\n\n    table#change-history tbody th, table#change-history tbody td {\n        font-size: 0.8125rem;\n        word-break: break-word;\n    }\n\n    table#change-history tbody th {\n        width: auto;\n    }\n\n    /* Docs */\n\n    table.model tbody th, table.model tbody td {\n        font-size: 0.8125rem;\n        word-break: break-word;\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/responsive.eafb93ff084c.css",
    "content": "/* Tablets */\n\ninput[type=\"submit\"], button {\n    -webkit-appearance: none;\n    appearance: none;\n}\n\n@media (max-width: 1024px) {\n    /* Basic */\n\n    html {\n        -webkit-text-size-adjust: 100%;\n    }\n\n    td, th {\n        padding: 10px;\n        font-size: 0.875rem;\n    }\n\n    .small {\n        font-size: 0.75rem;\n    }\n\n    /* Layout */\n\n    #container {\n        min-width: 0;\n    }\n\n    #content {\n        padding: 15px 20px 20px;\n    }\n\n    div.breadcrumbs {\n        padding: 10px 30px;\n    }\n\n    /* Header */\n\n    #header {\n        flex-direction: column;\n        padding: 15px 30px;\n        justify-content: flex-start;\n    }\n\n    #site-name {\n        margin: 0 0 8px;\n        line-height: 1.2;\n    }\n\n    #user-tools {\n        margin: 0;\n        font-weight: 400;\n        line-height: 1.85;\n        text-align: left;\n    }\n\n    #user-tools a {\n        display: inline-block;\n        line-height: 1.4;\n    }\n\n    /* Dashboard */\n\n    .dashboard #content {\n        width: auto;\n    }\n\n    #content-related {\n        margin-right: -290px;\n    }\n\n    .colSM #content-related {\n        margin-left: -290px;\n    }\n\n    .colMS {\n        margin-right: 290px;\n    }\n\n    .colSM {\n        margin-left: 290px;\n    }\n\n    .dashboard .module table td a {\n        padding-right: 0;\n    }\n\n    td .changelink, td .addlink {\n        font-size: 0.8125rem;\n    }\n\n    /* Changelist */\n\n    #toolbar {\n        border: none;\n        padding: 15px;\n    }\n\n    #changelist-search > div {\n        display: flex;\n        flex-wrap: nowrap;\n        max-width: 480px;\n    }\n\n    #changelist-search label {\n        line-height: 1.375rem;\n    }\n\n    #toolbar form #searchbar {\n        flex: 1 0 auto;\n        width: 0;\n        height: 1.375rem;\n        margin: 0 10px 0 6px;\n    }\n\n    #toolbar form input[type=submit] {\n        flex: 0 1 auto;\n    }\n\n    #changelist-search .quiet {\n        width: 0;\n        flex: 1 0 auto;\n        margin: 5px 0 0 25px;\n    }\n\n    #changelist .actions {\n        display: flex;\n        flex-wrap: wrap;\n        padding: 15px 0;\n    }\n\n    #changelist .actions label {\n        display: flex;\n    }\n\n    #changelist .actions select {\n        background: var(--body-bg);\n    }\n\n    #changelist .actions .button {\n        min-width: 48px;\n        margin: 0 10px;\n    }\n\n    #changelist .actions span.all,\n    #changelist .actions span.clear,\n    #changelist .actions span.question,\n    #changelist .actions span.action-counter {\n        font-size: 0.6875rem;\n        margin: 0 10px 0 0;\n    }\n\n    #changelist-filter {\n        flex-basis: 200px;\n    }\n\n    .change-list .filtered .results,\n    .change-list .filtered .paginator,\n    .filtered #toolbar,\n    .filtered .actions,\n\n    #changelist .paginator {\n        border-top-color: var(--hairline-color); /* XXX Is this used at all? */\n    }\n\n    #changelist .results + .paginator {\n        border-top: none;\n    }\n\n    /* Forms */\n\n    label {\n        font-size: 0.875rem;\n    }\n\n    .form-row input[type=text],\n    .form-row input[type=password],\n    .form-row input[type=email],\n    .form-row input[type=url],\n    .form-row input[type=tel],\n    .form-row input[type=number],\n    .form-row textarea,\n    .form-row select,\n    .form-row .vTextField {\n        box-sizing: border-box;\n        margin: 0;\n        padding: 6px 8px;\n        min-height: 2.25rem;\n        font-size: 0.875rem;\n    }\n\n    .form-row select {\n        height: 2.25rem;\n    }\n\n    .form-row select[multiple] {\n        height: auto;\n        min-height: 0;\n    }\n\n    fieldset .fieldBox + .fieldBox {\n        margin-top: 10px;\n        padding-top: 10px;\n        border-top: 1px solid var(--hairline-color);\n    }\n\n    textarea {\n        max-width: 100%;\n        max-height: 120px;\n    }\n\n    .aligned label {\n        padding-top: 6px;\n    }\n\n    .aligned .related-lookup,\n    .aligned .datetimeshortcuts,\n    .aligned .related-lookup + strong {\n        align-self: center;\n        margin-left: 15px;\n    }\n\n    form .aligned div.radiolist {\n        margin-left: 2px;\n    }\n\n    .submit-row {\n        padding: 8px;\n    }\n\n    .submit-row a.deletelink {\n        padding: 10px 7px;\n    }\n\n    .button, input[type=submit], input[type=button], .submit-row input, a.button {\n        padding: 7px;\n    }\n\n    /* Selector */\n\n    .selector {\n        display: flex;\n        width: 100%;\n    }\n\n    .selector .selector-filter {\n        display: flex;\n        align-items: center;\n    }\n\n    .selector .selector-filter label {\n        margin: 0 8px 0 0;\n    }\n\n    .selector .selector-filter input {\n        width: 100%;\n        min-height: 0;\n        flex: 1 1;\n    }\n\n    .selector-available, .selector-chosen {\n        width: auto;\n        flex: 1 1;\n        display: flex;\n        flex-direction: column;\n    }\n\n    .selector select {\n        width: 100%;\n        flex: 1 0 auto;\n        margin-bottom: 5px;\n    }\n\n    .selector ul.selector-chooser {\n        width: 26px;\n        height: 52px;\n        padding: 2px 0;\n        border-radius: 20px;\n        transform: translateY(-10px);\n    }\n\n    .selector-add, .selector-remove {\n        width: 20px;\n        height: 20px;\n        background-size: 20px auto;\n    }\n\n    .selector-add {\n        background-position: 0 -120px;\n    }\n\n    .selector-remove {\n        background-position: 0 -80px;\n    }\n\n    a.selector-chooseall, a.selector-clearall {\n        align-self: center;\n    }\n\n    .stacked {\n        flex-direction: column;\n        max-width: 480px;\n    }\n\n    .stacked > * {\n        flex: 0 1 auto;\n    }\n\n    .stacked select {\n        margin-bottom: 0;\n    }\n\n    .stacked .selector-available, .stacked .selector-chosen {\n        width: auto;\n    }\n\n    .stacked ul.selector-chooser {\n        width: 52px;\n        height: 26px;\n        padding: 0 2px;\n        transform: none;\n    }\n\n    .stacked .selector-chooser li {\n        padding: 3px;\n    }\n\n    .stacked .selector-add, .stacked .selector-remove {\n        background-size: 20px auto;\n    }\n\n    .stacked .selector-add {\n        background-position: 0 -40px;\n    }\n\n    .stacked .active.selector-add {\n        background-position: 0 -40px;\n    }\n\n    .active.selector-add:focus, .active.selector-add:hover {\n        background-position: 0 -140px;\n    }\n\n    .stacked .active.selector-add:focus, .stacked .active.selector-add:hover {\n        background-position: 0 -60px;\n    }\n\n    .stacked .selector-remove {\n        background-position: 0 0;\n    }\n\n    .stacked .active.selector-remove {\n        background-position: 0 0;\n    }\n\n    .active.selector-remove:focus, .active.selector-remove:hover {\n        background-position: 0 -100px;\n    }\n\n    .stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover {\n        background-position: 0 -20px;\n    }\n\n    .help-tooltip, .selector .help-icon {\n        display: none;\n    }\n\n    .datetime input {\n        width: 50%;\n        max-width: 120px;\n    }\n\n    .datetime span {\n        font-size: 0.8125rem;\n    }\n\n    .datetime .timezonewarning {\n        display: block;\n        font-size: 0.6875rem;\n        color: var(--body-quiet-color);\n    }\n\n    .datetimeshortcuts {\n        color: var(--border-color); /* XXX Redundant, .datetime span also sets #ccc */\n    }\n\n    .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField {\n        width: 75%;\n    }\n\n    .inline-group {\n        overflow: auto;\n    }\n\n    /* Messages */\n\n    ul.messagelist li {\n        padding-left: 55px;\n        background-position: 30px 12px;\n    }\n\n    ul.messagelist li.error {\n        background-position: 30px 12px;\n    }\n\n    ul.messagelist li.warning {\n        background-position: 30px 14px;\n    }\n\n    /* Login */\n\n    .login #header {\n        padding: 15px 20px;\n    }\n\n    .login #site-name {\n        margin: 0;\n    }\n\n    /* GIS */\n\n    div.olMap {\n        max-width: calc(100vw - 30px);\n        max-height: 300px;\n    }\n\n    .olMap + .clear_features {\n        display: block;\n        margin-top: 10px;\n    }\n\n    /* Docs */\n\n    .module table.xfull {\n        width: 100%;\n    }\n\n    pre.literal-block {\n        overflow: auto;\n    }\n}\n\n/* Mobile */\n\n@media (max-width: 767px) {\n    /* Layout */\n\n    #header, #content, #footer {\n        padding: 15px;\n    }\n\n    #footer:empty {\n        padding: 0;\n    }\n\n    div.breadcrumbs {\n        padding: 10px 15px;\n    }\n\n    /* Dashboard */\n\n    .colMS, .colSM {\n        margin: 0;\n    }\n\n    #content-related, .colSM #content-related {\n        width: 100%;\n        margin: 0;\n    }\n\n    #content-related .module {\n        margin-bottom: 0;\n    }\n\n    #content-related .module h2 {\n        padding: 10px 15px;\n        font-size: 1rem;\n    }\n\n    /* Changelist */\n\n    #changelist {\n        align-items: stretch;\n        flex-direction: column;\n    }\n\n    #toolbar {\n        padding: 10px;\n    }\n\n    #changelist-filter {\n        margin-left: 0;\n    }\n\n    #changelist .actions label {\n        flex: 1 1;\n    }\n\n    #changelist .actions select {\n        flex: 1 0;\n        width: 100%;\n    }\n\n    #changelist .actions span {\n        flex: 1 0 100%;\n    }\n\n    #changelist-filter {\n        position: static;\n        width: auto;\n        margin-top: 30px;\n    }\n\n    .object-tools {\n        float: none;\n        margin: 0 0 15px;\n        padding: 0;\n        overflow: hidden;\n    }\n\n    .object-tools li {\n        height: auto;\n        margin-left: 0;\n    }\n\n    .object-tools li + li {\n        margin-left: 15px;\n    }\n\n    /* Forms */\n\n    .form-row {\n        padding: 15px 0;\n    }\n\n    .aligned .form-row,\n    .aligned .form-row > div {\n        max-width: 100vw;\n    }\n\n    .aligned .form-row > div {\n        width: calc(100vw - 30px);\n    }\n\n    .flex-container {\n        flex-flow: column;\n    }\n\n    .flex-container.checkbox-row {\n        flex-flow: row;\n    }\n\n    textarea {\n        max-width: none;\n    }\n\n    .vURLField {\n        width: auto;\n    }\n\n    fieldset .fieldBox + .fieldBox {\n        margin-top: 15px;\n        padding-top: 15px;\n    }\n\n    fieldset.collapsed .form-row {\n        display: none;\n    }\n\n    .aligned label {\n        width: 100%;\n        min-width: auto;\n        padding: 0 0 10px;\n    }\n\n    .aligned label:after {\n        max-height: 0;\n    }\n\n    .aligned .form-row input,\n    .aligned .form-row select,\n    .aligned .form-row textarea {\n        flex: 1 1 auto;\n        max-width: 100%;\n    }\n\n    .aligned .checkbox-row input {\n        flex: 0 1 auto;\n        margin: 0;\n    }\n\n    .aligned .vCheckboxLabel {\n        flex: 1 0;\n        padding: 1px 0 0 5px;\n    }\n\n    .aligned label + p,\n    .aligned label + div.help,\n    .aligned label + div.readonly {\n        padding: 0;\n        margin-left: 0;\n    }\n\n    .aligned p.file-upload {\n        font-size: 0.8125rem;\n    }\n\n    span.clearable-file-input {\n        margin-left: 15px;\n    }\n\n    span.clearable-file-input label {\n        font-size: 0.8125rem;\n        padding-bottom: 0;\n    }\n\n    .aligned .timezonewarning {\n        flex: 1 0 100%;\n        margin-top: 5px;\n    }\n\n    form .aligned .form-row div.help {\n        width: 100%;\n        margin: 5px 0 0;\n        padding: 0;\n    }\n\n    form .aligned ul,\n    form .aligned ul.errorlist {\n        margin-left: 0;\n        padding-left: 0;\n    }\n\n    form .aligned div.radiolist {\n        margin-top: 5px;\n        margin-right: 15px;\n        margin-bottom: -3px;\n    }\n\n    form .aligned div.radiolist:not(.inline) div + div {\n        margin-top: 5px;\n    }\n\n    /* Related widget */\n\n    .related-widget-wrapper {\n        width: 100%;\n        display: flex;\n        align-items: flex-start;\n    }\n\n    .related-widget-wrapper .selector {\n        order: 1;\n    }\n\n    .related-widget-wrapper > a {\n        order: 2;\n    }\n\n    .related-widget-wrapper .radiolist ~ a {\n        align-self: flex-end;\n    }\n\n    .related-widget-wrapper > select ~ a {\n        align-self: center;\n    }\n\n    /* Selector */\n\n    .selector {\n        flex-direction: column;\n        gap: 10px 0;\n    }\n\n    .selector-available, .selector-chosen {\n        flex: 1 1 auto;\n    }\n\n    .selector select {\n        max-height: 96px;\n    }\n\n    .selector ul.selector-chooser {\n        display: block;\n        width: 52px;\n        height: 26px;\n        padding: 0 2px;\n        transform: none;\n    }\n\n    .selector ul.selector-chooser li {\n        float: left;\n    }\n\n    .selector-remove {\n        background-position: 0 0;\n    }\n\n    .active.selector-remove:focus, .active.selector-remove:hover {\n        background-position: 0 -20px;\n    }\n\n    .selector-add  {\n        background-position: 0 -40px;\n    }\n\n    .active.selector-add:focus, .active.selector-add:hover {\n        background-position: 0 -60px;\n    }\n\n    /* Inlines */\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related {\n        border: 1px solid var(--hairline-color);\n        border-radius: 4px;\n        margin-top: 15px;\n        overflow: auto;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related > * {\n        box-sizing: border-box;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related .module {\n        padding: 0 10px;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related .module .form-row {\n        border-top: 1px solid var(--hairline-color);\n        border-bottom: none;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related .module .form-row:first-child {\n        border-top: none;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related h3 {\n        padding: 10px;\n        border-top-width: 0;\n        border-bottom-width: 2px;\n        display: flex;\n        flex-wrap: wrap;\n        align-items: center;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related h3 .inline_label {\n        margin-right: auto;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .inline-related h3 span.delete {\n        float: none;\n        flex: 1 1 100%;\n        margin-top: 5px;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .aligned .form-row > div:not([class]) {\n        width: 100%;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] .aligned label {\n        width: 100%;\n    }\n\n    .inline-group[data-inline-type=\"stacked\"] div.add-row {\n        margin-top: 15px;\n        border: 1px solid var(--hairline-color);\n        border-radius: 4px;\n    }\n\n    .inline-group div.add-row,\n    .inline-group .tabular tr.add-row td {\n        padding: 0;\n    }\n\n    .inline-group div.add-row a,\n    .inline-group .tabular tr.add-row td a {\n        display: block;\n        padding: 8px 10px 8px 26px;\n        background-position: 8px 9px;\n    }\n\n    /* Submit row */\n\n    .submit-row {\n        padding: 10px;\n        margin: 0 0 15px;\n        flex-direction: column;\n        gap: 8px;\n    }\n\n    .submit-row input, .submit-row input.default, .submit-row a {\n        text-align: center;\n    }\n\n    .submit-row a.closelink {\n        padding: 10px 0;\n        text-align: center;\n    }\n\n    .submit-row a.deletelink {\n        margin: 0;\n    }\n\n    /* Messages */\n\n    ul.messagelist li {\n        padding-left: 40px;\n        background-position: 15px 12px;\n    }\n\n    ul.messagelist li.error {\n        background-position: 15px 12px;\n    }\n\n    ul.messagelist li.warning {\n        background-position: 15px 14px;\n    }\n\n    /* Paginator */\n\n    .paginator .this-page, .paginator a:link, .paginator a:visited {\n        padding: 4px 10px;\n    }\n\n    /* Login */\n\n    body.login {\n        padding: 0 15px;\n    }\n\n    .login #container {\n        width: auto;\n        max-width: 480px;\n        margin: 50px auto;\n    }\n\n    .login #header,\n    .login #content {\n        padding: 15px;\n    }\n\n    .login #content-main {\n        float: none;\n    }\n\n    .login .form-row {\n        padding: 0;\n    }\n\n    .login .form-row + .form-row {\n        margin-top: 15px;\n    }\n\n    .login .form-row label {\n        margin: 0 0 5px;\n        line-height: 1.2;\n    }\n\n    .login .submit-row {\n        padding: 15px 0 0;\n    }\n\n    .login br {\n        display: none;\n    }\n\n    .login .submit-row input {\n        margin: 0;\n        text-transform: uppercase;\n    }\n\n    .errornote {\n        margin: 0 0 20px;\n        padding: 8px 12px;\n        font-size: 0.8125rem;\n    }\n\n    /* Calendar and clock */\n\n    .calendarbox, .clockbox {\n        position: fixed !important;\n        top: 50% !important;\n        left: 50% !important;\n        transform: translate(-50%, -50%);\n        margin: 0;\n        border: none;\n        overflow: visible;\n    }\n\n    .calendarbox:before, .clockbox:before {\n        content: '';\n        position: fixed;\n        top: 50%;\n        left: 50%;\n        width: 100vw;\n        height: 100vh;\n        background: rgba(0, 0, 0, 0.75);\n        transform: translate(-50%, -50%);\n    }\n\n    .calendarbox > *, .clockbox > * {\n        position: relative;\n        z-index: 1;\n    }\n\n    .calendarbox > div:first-child {\n        z-index: 2;\n    }\n\n    .calendarbox .calendar, .clockbox h2 {\n        border-radius: 4px 4px 0 0;\n        overflow: hidden;\n    }\n\n    .calendarbox .calendar-cancel, .clockbox .calendar-cancel {\n        border-radius: 0 0 4px 4px;\n        overflow: hidden;\n    }\n\n    .calendar-shortcuts {\n        padding: 10px 0;\n        font-size: 0.75rem;\n        line-height: 0.75rem;\n    }\n\n    .calendar-shortcuts a {\n        margin: 0 4px;\n    }\n\n    .timelist a {\n        background: var(--body-bg);\n        padding: 4px;\n    }\n\n    .calendar-cancel {\n        padding: 8px 10px;\n    }\n\n    .clockbox h2 {\n        padding: 8px 15px;\n    }\n\n    .calendar caption {\n        padding: 10px;\n    }\n\n    .calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {\n        z-index: 1;\n        top: 10px;\n    }\n\n    /* History */\n\n    table#change-history tbody th, table#change-history tbody td {\n        font-size: 0.8125rem;\n        word-break: break-word;\n    }\n\n    table#change-history tbody th {\n        width: auto;\n    }\n\n    /* Docs */\n\n    table.model tbody th, table.model tbody td {\n        font-size: 0.8125rem;\n        word-break: break-word;\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/responsive_rtl.7d1130848605.css",
    "content": "/* TABLETS */\n\n@media (max-width: 1024px) {\n    [dir=\"rtl\"] .colMS {\n        margin-right: 0;\n    }\n\n    [dir=\"rtl\"] #user-tools {\n        text-align: right;\n    }\n\n    [dir=\"rtl\"] #changelist .actions label {\n        padding-left: 10px;\n        padding-right: 0;\n    }\n\n    [dir=\"rtl\"] #changelist .actions select {\n        margin-left: 0;\n        margin-right: 15px;\n    }\n\n    [dir=\"rtl\"] .change-list .filtered .results,\n    [dir=\"rtl\"] .change-list .filtered .paginator,\n    [dir=\"rtl\"] .filtered #toolbar,\n    [dir=\"rtl\"] .filtered div.xfull,\n    [dir=\"rtl\"] .filtered .actions,\n    [dir=\"rtl\"] #changelist-filter {\n        margin-left: 0;\n    }\n\n    [dir=\"rtl\"] .inline-group ul.tools a.add,\n    [dir=\"rtl\"] .inline-group div.add-row a,\n    [dir=\"rtl\"] .inline-group .tabular tr.add-row td a {\n        padding: 8px 26px 8px 10px;\n        background-position: calc(100% - 8px) 9px;\n    }\n\n    [dir=\"rtl\"] .related-widget-wrapper-link + .selector {\n        margin-right: 0;\n        margin-left: 15px;\n    }\n\n    [dir=\"rtl\"] .selector .selector-filter label {\n        margin-right: 0;\n        margin-left: 8px;\n    }\n\n    [dir=\"rtl\"] .object-tools li {\n        float: right;\n    }\n\n    [dir=\"rtl\"] .object-tools li + li {\n        margin-left: 0;\n        margin-right: 15px;\n    }\n\n    [dir=\"rtl\"] .dashboard .module table td a {\n        padding-left: 0;\n        padding-right: 16px;\n    }\n}\n\n/* MOBILE */\n\n@media (max-width: 767px) {\n    [dir=\"rtl\"] .aligned .related-lookup,\n    [dir=\"rtl\"] .aligned .datetimeshortcuts {\n        margin-left: 0;\n        margin-right: 15px;\n    }\n\n    [dir=\"rtl\"] .aligned ul,\n    [dir=\"rtl\"] form .aligned ul.errorlist {\n        margin-right: 0;\n    }\n\n    [dir=\"rtl\"] #changelist-filter {\n        margin-left: 0;\n        margin-right: 0;\n    }\n    [dir=\"rtl\"] .aligned .vCheckboxLabel {\n        padding: 1px 5px 0 0;\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/responsive_rtl.css",
    "content": "/* TABLETS */\n\n@media (max-width: 1024px) {\n    [dir=\"rtl\"] .colMS {\n        margin-right: 0;\n    }\n\n    [dir=\"rtl\"] #user-tools {\n        text-align: right;\n    }\n\n    [dir=\"rtl\"] #changelist .actions label {\n        padding-left: 10px;\n        padding-right: 0;\n    }\n\n    [dir=\"rtl\"] #changelist .actions select {\n        margin-left: 0;\n        margin-right: 15px;\n    }\n\n    [dir=\"rtl\"] .change-list .filtered .results,\n    [dir=\"rtl\"] .change-list .filtered .paginator,\n    [dir=\"rtl\"] .filtered #toolbar,\n    [dir=\"rtl\"] .filtered div.xfull,\n    [dir=\"rtl\"] .filtered .actions,\n    [dir=\"rtl\"] #changelist-filter {\n        margin-left: 0;\n    }\n\n    [dir=\"rtl\"] .inline-group ul.tools a.add,\n    [dir=\"rtl\"] .inline-group div.add-row a,\n    [dir=\"rtl\"] .inline-group .tabular tr.add-row td a {\n        padding: 8px 26px 8px 10px;\n        background-position: calc(100% - 8px) 9px;\n    }\n\n    [dir=\"rtl\"] .related-widget-wrapper-link + .selector {\n        margin-right: 0;\n        margin-left: 15px;\n    }\n\n    [dir=\"rtl\"] .selector .selector-filter label {\n        margin-right: 0;\n        margin-left: 8px;\n    }\n\n    [dir=\"rtl\"] .object-tools li {\n        float: right;\n    }\n\n    [dir=\"rtl\"] .object-tools li + li {\n        margin-left: 0;\n        margin-right: 15px;\n    }\n\n    [dir=\"rtl\"] .dashboard .module table td a {\n        padding-left: 0;\n        padding-right: 16px;\n    }\n}\n\n/* MOBILE */\n\n@media (max-width: 767px) {\n    [dir=\"rtl\"] .aligned .related-lookup,\n    [dir=\"rtl\"] .aligned .datetimeshortcuts {\n        margin-left: 0;\n        margin-right: 15px;\n    }\n\n    [dir=\"rtl\"] .aligned ul,\n    [dir=\"rtl\"] form .aligned ul.errorlist {\n        margin-right: 0;\n    }\n\n    [dir=\"rtl\"] #changelist-filter {\n        margin-left: 0;\n        margin-right: 0;\n    }\n    [dir=\"rtl\"] .aligned .vCheckboxLabel {\n        padding: 1px 5px 0 0;\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/rtl.aa92d763340b.css",
    "content": "/* GLOBAL */\n\nth {\n    text-align: right;\n}\n\n.module h2, .module caption {\n    text-align: right;\n}\n\n.module ul, .module ol {\n    margin-left: 0;\n    margin-right: 1.5em;\n}\n\n.viewlink, .addlink, .changelink, .hidelink {\n    padding-left: 0;\n    padding-right: 16px;\n    background-position: 100% 1px;\n}\n\n.deletelink {\n    padding-left: 0;\n    padding-right: 16px;\n    background-position: 100% 1px;\n}\n\n.object-tools {\n    float: left;\n}\n\nthead th:first-child,\ntfoot td:first-child {\n    border-left: none;\n}\n\n/* LAYOUT */\n\n#user-tools {\n    right: auto;\n    left: 0;\n    text-align: left;\n}\n\ndiv.breadcrumbs {\n    text-align: right;\n}\n\n#content-main {\n    float: right;\n}\n\n#content-related {\n    float: left;\n    margin-left: -300px;\n    margin-right: auto;\n}\n\n.colMS {\n    margin-left: 300px;\n    margin-right: 0;\n}\n\n/* SORTABLE TABLES */\n\ntable thead th.sorted .sortoptions {\n   float: left;\n}\n\nthead th.sorted .text {\n    padding-right: 0;\n    padding-left: 42px;\n}\n\n/* dashboard styles */\n\n.dashboard .module table td a {\n    padding-left: .6em;\n    padding-right: 16px;\n}\n\n/* changelists styles */\n\n.change-list .filtered table {\n    border-left: none;\n    border-right: 0px none;\n}\n\n#changelist-filter {\n    border-left: none;\n    border-right: none;\n    margin-left: 0;\n    margin-right: 30px;\n}\n\n#changelist-filter li.selected {\n    border-left: none;\n    padding-left: 10px;\n    margin-left: 0;\n    border-right: 5px solid var(--hairline-color);\n    padding-right: 10px;\n    margin-right: -15px;\n}\n\n#changelist table tbody td:first-child, #changelist table tbody th:first-child {\n    border-right: none;\n    border-left: none;\n}\n\n.paginator .end {\n    margin-left: 6px;\n    margin-right: 0;\n}\n\n.paginator input {\n    margin-left: 0;\n    margin-right: auto;\n}\n\n/* FORMS */\n\n.aligned label {\n    padding: 0 0 3px 1em;\n}\n\n.submit-row a.deletelink {\n    margin-left: 0;\n    margin-right: auto;\n}\n\n.vDateField, .vTimeField {\n    margin-left: 2px;\n}\n\n.aligned .form-row input {\n    margin-left: 5px;\n}\n\nform .aligned ul {\n    margin-right: 163px;\n    padding-right: 10px;\n    margin-left: 0;\n    padding-left: 0;\n}\n\nform ul.inline li {\n    float: right;\n    padding-right: 0;\n    padding-left: 7px;\n}\n\nform .aligned p.help,\nform .aligned div.help {\n    margin-right: 160px;\n    padding-right: 10px;\n}\n\nform div.help ul,\nform .aligned .checkbox-row + .help,\nform .aligned p.date div.help.timezonewarning,\nform .aligned p.datetime div.help.timezonewarning,\nform .aligned p.time div.help.timezonewarning {\n    margin-right: 0;\n    padding-right: 0;\n}\n\nform .wide p.help, form .wide div.help {\n    padding-left: 0;\n    padding-right: 50px;\n}\n\nform .wide p,\nform .wide ul.errorlist,\nform .wide input + p.help,\nform .wide input + div.help {\n    margin-right: 200px;\n    margin-left: 0px;\n}\n\n.submit-row {\n    text-align: right;\n}\n\nfieldset .fieldBox {\n    margin-left: 20px;\n    margin-right: 0;\n}\n\n.errorlist li {\n    background-position: 100% 12px;\n    padding: 0;\n}\n\n.errornote {\n    background-position: 100% 12px;\n    padding: 10px 12px;\n}\n\n/* WIDGETS */\n\n.calendarnav-previous {\n    top: 0;\n    left: auto;\n    right: 10px;\n    background: url(\"../img/calendar-icons.39b290681a8b.svg\") 0 -30px no-repeat;\n}\n\n.calendarbox .calendarnav-previous:focus,\n.calendarbox .calendarnav-previous:hover {\n    background-position: 0 -45px;\n}\n\n.calendarnav-next {\n    top: 0;\n    right: auto;\n    left: 10px;\n    background: url(\"../img/calendar-icons.39b290681a8b.svg\") 0 0 no-repeat;\n}\n\n.calendarbox .calendarnav-next:focus,\n.calendarbox .calendarnav-next:hover {\n    background-position: 0 -15px;\n}\n\n.calendar caption, .calendarbox h2 {\n    text-align: center;\n}\n\n.selector {\n    float: right;\n}\n\n.selector .selector-filter {\n    text-align: right;\n}\n\n.selector-add {\n  background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 -64px no-repeat;\n}\n\n.active.selector-add:focus, .active.selector-add:hover {\n  background-position: 0 -80px;\n}\n\n.selector-remove {\n  background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 -96px no-repeat;\n}\n\n.active.selector-remove:focus, .active.selector-remove:hover {\n  background-position: 0 -112px;\n}\n\na.selector-chooseall {\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") right -128px no-repeat;\n}\n\na.active.selector-chooseall:focus, a.active.selector-chooseall:hover {\n    background-position: 100% -144px;\n}\n\na.selector-clearall {\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 -160px no-repeat;\n}\n\na.active.selector-clearall:focus, a.active.selector-clearall:hover {\n    background-position: 0 -176px;\n}\n\n.inline-deletelink {\n    float: left;\n}\n\nform .form-row p.datetime {\n    overflow: hidden;\n}\n\n.related-widget-wrapper {\n    float: right;\n}\n\n/* MISC */\n\n.inline-related h2, .inline-group h2 {\n    text-align: right\n}\n\n.inline-related h3 span.delete {\n    padding-right: 20px;\n    padding-left: inherit;\n    left: 10px;\n    right: inherit;\n    float:left;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: inherit;\n    margin-right: 2px;\n}\n\n.selector .selector-chooser {\n    margin: 0;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/rtl.css",
    "content": "/* GLOBAL */\n\nth {\n    text-align: right;\n}\n\n.module h2, .module caption {\n    text-align: right;\n}\n\n.module ul, .module ol {\n    margin-left: 0;\n    margin-right: 1.5em;\n}\n\n.viewlink, .addlink, .changelink, .hidelink {\n    padding-left: 0;\n    padding-right: 16px;\n    background-position: 100% 1px;\n}\n\n.deletelink {\n    padding-left: 0;\n    padding-right: 16px;\n    background-position: 100% 1px;\n}\n\n.object-tools {\n    float: left;\n}\n\nthead th:first-child,\ntfoot td:first-child {\n    border-left: none;\n}\n\n/* LAYOUT */\n\n#user-tools {\n    right: auto;\n    left: 0;\n    text-align: left;\n}\n\ndiv.breadcrumbs {\n    text-align: right;\n}\n\n#content-main {\n    float: right;\n}\n\n#content-related {\n    float: left;\n    margin-left: -300px;\n    margin-right: auto;\n}\n\n.colMS {\n    margin-left: 300px;\n    margin-right: 0;\n}\n\n/* SORTABLE TABLES */\n\ntable thead th.sorted .sortoptions {\n   float: left;\n}\n\nthead th.sorted .text {\n    padding-right: 0;\n    padding-left: 42px;\n}\n\n/* dashboard styles */\n\n.dashboard .module table td a {\n    padding-left: .6em;\n    padding-right: 16px;\n}\n\n/* changelists styles */\n\n.change-list .filtered table {\n    border-left: none;\n    border-right: 0px none;\n}\n\n#changelist-filter {\n    border-left: none;\n    border-right: none;\n    margin-left: 0;\n    margin-right: 30px;\n}\n\n#changelist-filter li.selected {\n    border-left: none;\n    padding-left: 10px;\n    margin-left: 0;\n    border-right: 5px solid var(--hairline-color);\n    padding-right: 10px;\n    margin-right: -15px;\n}\n\n#changelist table tbody td:first-child, #changelist table tbody th:first-child {\n    border-right: none;\n    border-left: none;\n}\n\n.paginator .end {\n    margin-left: 6px;\n    margin-right: 0;\n}\n\n.paginator input {\n    margin-left: 0;\n    margin-right: auto;\n}\n\n/* FORMS */\n\n.aligned label {\n    padding: 0 0 3px 1em;\n}\n\n.submit-row a.deletelink {\n    margin-left: 0;\n    margin-right: auto;\n}\n\n.vDateField, .vTimeField {\n    margin-left: 2px;\n}\n\n.aligned .form-row input {\n    margin-left: 5px;\n}\n\nform .aligned ul {\n    margin-right: 163px;\n    padding-right: 10px;\n    margin-left: 0;\n    padding-left: 0;\n}\n\nform ul.inline li {\n    float: right;\n    padding-right: 0;\n    padding-left: 7px;\n}\n\nform .aligned p.help,\nform .aligned div.help {\n    margin-right: 160px;\n    padding-right: 10px;\n}\n\nform div.help ul,\nform .aligned .checkbox-row + .help,\nform .aligned p.date div.help.timezonewarning,\nform .aligned p.datetime div.help.timezonewarning,\nform .aligned p.time div.help.timezonewarning {\n    margin-right: 0;\n    padding-right: 0;\n}\n\nform .wide p.help, form .wide div.help {\n    padding-left: 0;\n    padding-right: 50px;\n}\n\nform .wide p,\nform .wide ul.errorlist,\nform .wide input + p.help,\nform .wide input + div.help {\n    margin-right: 200px;\n    margin-left: 0px;\n}\n\n.submit-row {\n    text-align: right;\n}\n\nfieldset .fieldBox {\n    margin-left: 20px;\n    margin-right: 0;\n}\n\n.errorlist li {\n    background-position: 100% 12px;\n    padding: 0;\n}\n\n.errornote {\n    background-position: 100% 12px;\n    padding: 10px 12px;\n}\n\n/* WIDGETS */\n\n.calendarnav-previous {\n    top: 0;\n    left: auto;\n    right: 10px;\n    background: url(../img/calendar-icons.svg) 0 -30px no-repeat;\n}\n\n.calendarbox .calendarnav-previous:focus,\n.calendarbox .calendarnav-previous:hover {\n    background-position: 0 -45px;\n}\n\n.calendarnav-next {\n    top: 0;\n    right: auto;\n    left: 10px;\n    background: url(../img/calendar-icons.svg) 0 0 no-repeat;\n}\n\n.calendarbox .calendarnav-next:focus,\n.calendarbox .calendarnav-next:hover {\n    background-position: 0 -15px;\n}\n\n.calendar caption, .calendarbox h2 {\n    text-align: center;\n}\n\n.selector {\n    float: right;\n}\n\n.selector .selector-filter {\n    text-align: right;\n}\n\n.selector-add {\n  background: url(../img/selector-icons.svg) 0 -64px no-repeat;\n}\n\n.active.selector-add:focus, .active.selector-add:hover {\n  background-position: 0 -80px;\n}\n\n.selector-remove {\n  background: url(../img/selector-icons.svg) 0 -96px no-repeat;\n}\n\n.active.selector-remove:focus, .active.selector-remove:hover {\n  background-position: 0 -112px;\n}\n\na.selector-chooseall {\n    background: url(../img/selector-icons.svg) right -128px no-repeat;\n}\n\na.active.selector-chooseall:focus, a.active.selector-chooseall:hover {\n    background-position: 100% -144px;\n}\n\na.selector-clearall {\n    background: url(../img/selector-icons.svg) 0 -160px no-repeat;\n}\n\na.active.selector-clearall:focus, a.active.selector-clearall:hover {\n    background-position: 0 -176px;\n}\n\n.inline-deletelink {\n    float: left;\n}\n\nform .form-row p.datetime {\n    overflow: hidden;\n}\n\n.related-widget-wrapper {\n    float: right;\n}\n\n/* MISC */\n\n.inline-related h2, .inline-group h2 {\n    text-align: right\n}\n\n.inline-related h3 span.delete {\n    padding-right: 20px;\n    padding-left: inherit;\n    left: 10px;\n    right: inherit;\n    float:left;\n}\n\n.inline-related h3 span.delete label {\n    margin-left: inherit;\n    margin-right: 2px;\n}\n\n.selector .selector-chooser {\n    margin: 0;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/css/vendor/select2/LICENSE-SELECT2.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/css/vendor/select2/select2.a2194c262648.css",
    "content": ".select2-container {\n  box-sizing: border-box;\n  display: inline-block;\n  margin: 0;\n  position: relative;\n  vertical-align: middle; }\n  .select2-container .select2-selection--single {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    height: 28px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--single .select2-selection__rendered {\n      display: block;\n      padding-left: 8px;\n      padding-right: 20px;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap; }\n    .select2-container .select2-selection--single .select2-selection__clear {\n      position: relative; }\n  .select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered {\n    padding-right: 8px;\n    padding-left: 20px; }\n  .select2-container .select2-selection--multiple {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    min-height: 32px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--multiple .select2-selection__rendered {\n      display: inline-block;\n      overflow: hidden;\n      padding-left: 8px;\n      text-overflow: ellipsis;\n      white-space: nowrap; }\n  .select2-container .select2-search--inline {\n    float: left; }\n    .select2-container .select2-search--inline .select2-search__field {\n      box-sizing: border-box;\n      border: none;\n      font-size: 100%;\n      margin-top: 5px;\n      padding: 0; }\n      .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\n        -webkit-appearance: none; }\n\n.select2-dropdown {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  box-sizing: border-box;\n  display: block;\n  position: absolute;\n  left: -100000px;\n  width: 100%;\n  z-index: 1051; }\n\n.select2-results {\n  display: block; }\n\n.select2-results__options {\n  list-style: none;\n  margin: 0;\n  padding: 0; }\n\n.select2-results__option {\n  padding: 6px;\n  user-select: none;\n  -webkit-user-select: none; }\n  .select2-results__option[aria-selected] {\n    cursor: pointer; }\n\n.select2-container--open .select2-dropdown {\n  left: 0; }\n\n.select2-container--open .select2-dropdown--above {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--open .select2-dropdown--below {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-search--dropdown {\n  display: block;\n  padding: 4px; }\n  .select2-search--dropdown .select2-search__field {\n    padding: 4px;\n    width: 100%;\n    box-sizing: border-box; }\n    .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\n      -webkit-appearance: none; }\n  .select2-search--dropdown.select2-search--hide {\n    display: none; }\n\n.select2-close-mask {\n  border: 0;\n  margin: 0;\n  padding: 0;\n  display: block;\n  position: fixed;\n  left: 0;\n  top: 0;\n  min-height: 100%;\n  min-width: 100%;\n  height: auto;\n  width: auto;\n  opacity: 0;\n  z-index: 99;\n  background-color: #fff;\n  filter: alpha(opacity=0); }\n\n.select2-hidden-accessible {\n  border: 0 !important;\n  clip: rect(0 0 0 0) !important;\n  -webkit-clip-path: inset(50%) !important;\n  clip-path: inset(50%) !important;\n  height: 1px !important;\n  overflow: hidden !important;\n  padding: 0 !important;\n  position: absolute !important;\n  width: 1px !important;\n  white-space: nowrap !important; }\n\n.select2-container--default .select2-selection--single {\n  background-color: #fff;\n  border: 1px solid #aaa;\n  border-radius: 4px; }\n  .select2-container--default .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--default .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold; }\n  .select2-container--default .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--default .select2-selection--single .select2-selection__arrow {\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px; }\n    .select2-container--default .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  left: 1px;\n  right: auto; }\n\n.select2-container--default.select2-container--disabled .select2-selection--single {\n  background-color: #eee;\n  cursor: default; }\n  .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\n    display: none; }\n\n.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\n  border-color: transparent transparent #888 transparent;\n  border-width: 0 4px 5px 4px; }\n\n.select2-container--default .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text; }\n  .select2-container--default .select2-selection--multiple .select2-selection__rendered {\n    box-sizing: border-box;\n    list-style: none;\n    margin: 0;\n    padding: 0 5px;\n    width: 100%; }\n    .select2-container--default .select2-selection--multiple .select2-selection__rendered li {\n      list-style: none; }\n  .select2-container--default .select2-selection--multiple .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin-top: 5px;\n    margin-right: 10px;\n    padding: 1px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n    color: #999;\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px; }\n    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n      color: #333; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-search--inline {\n  float: right; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  margin-left: 2px;\n  margin-right: auto; }\n\n.select2-container--default.select2-container--focus .select2-selection--multiple {\n  border: solid black 1px;\n  outline: 0; }\n\n.select2-container--default.select2-container--disabled .select2-selection--multiple {\n  background-color: #eee;\n  cursor: default; }\n\n.select2-container--default.select2-container--disabled .select2-selection__choice__remove {\n  display: none; }\n\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--default .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa; }\n\n.select2-container--default .select2-search--inline .select2-search__field {\n  background: transparent;\n  border: none;\n  outline: 0;\n  box-shadow: none;\n  -webkit-appearance: textfield; }\n\n.select2-container--default .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--default .select2-results__option[role=group] {\n  padding: 0; }\n\n.select2-container--default .select2-results__option[aria-disabled=true] {\n  color: #999; }\n\n.select2-container--default .select2-results__option[aria-selected=true] {\n  background-color: #ddd; }\n\n.select2-container--default .select2-results__option .select2-results__option {\n  padding-left: 1em; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\n    padding-left: 0; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -1em;\n    padding-left: 2em; }\n    .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n      margin-left: -2em;\n      padding-left: 3em; }\n      .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n        margin-left: -3em;\n        padding-left: 4em; }\n        .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n          margin-left: -4em;\n          padding-left: 5em; }\n          .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n            margin-left: -5em;\n            padding-left: 6em; }\n\n.select2-container--default .select2-results__option--highlighted[aria-selected] {\n  background-color: #5897fb;\n  color: white; }\n\n.select2-container--default .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic .select2-selection--single {\n  background-color: #f7f7f7;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  outline: 0;\n  background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n  .select2-container--classic .select2-selection--single:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--classic .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin-right: 10px; }\n  .select2-container--classic .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--classic .select2-selection--single .select2-selection__arrow {\n    background-color: #ddd;\n    border: none;\n    border-left: 1px solid #aaa;\n    border-top-right-radius: 4px;\n    border-bottom-right-radius: 4px;\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px;\n    background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }\n    .select2-container--classic .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  border: none;\n  border-right: 1px solid #aaa;\n  border-radius: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  left: 1px;\n  right: auto; }\n\n.select2-container--classic.select2-container--open .select2-selection--single {\n  border: 1px solid #5897fb; }\n  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {\n    background: transparent;\n    border: none; }\n    .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {\n      border-color: transparent transparent #888 transparent;\n      border-width: 0 4px 5px 4px; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }\n\n.select2-container--classic .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text;\n  outline: 0; }\n  .select2-container--classic .select2-selection--multiple:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__rendered {\n    list-style: none;\n    margin: 0;\n    padding: 0 5px; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__clear {\n    display: none; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {\n    color: #888;\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px; }\n    .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {\n      color: #555; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  float: right;\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  margin-left: 2px;\n  margin-right: auto; }\n\n.select2-container--classic.select2-container--open .select2-selection--multiple {\n  border: 1px solid #5897fb; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--classic .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa;\n  outline: 0; }\n\n.select2-container--classic .select2-search--inline .select2-search__field {\n  outline: 0;\n  box-shadow: none; }\n\n.select2-container--classic .select2-dropdown {\n  background-color: white;\n  border: 1px solid transparent; }\n\n.select2-container--classic .select2-dropdown--above {\n  border-bottom: none; }\n\n.select2-container--classic .select2-dropdown--below {\n  border-top: none; }\n\n.select2-container--classic .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--classic .select2-results__option[role=group] {\n  padding: 0; }\n\n.select2-container--classic .select2-results__option[aria-disabled=true] {\n  color: grey; }\n\n.select2-container--classic .select2-results__option--highlighted[aria-selected] {\n  background-color: #3875d7;\n  color: white; }\n\n.select2-container--classic .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic.select2-container--open .select2-dropdown {\n  border-color: #5897fb; }\n"
  },
  {
    "path": "src/staticfiles/admin/css/vendor/select2/select2.css",
    "content": ".select2-container {\n  box-sizing: border-box;\n  display: inline-block;\n  margin: 0;\n  position: relative;\n  vertical-align: middle; }\n  .select2-container .select2-selection--single {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    height: 28px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--single .select2-selection__rendered {\n      display: block;\n      padding-left: 8px;\n      padding-right: 20px;\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap; }\n    .select2-container .select2-selection--single .select2-selection__clear {\n      position: relative; }\n  .select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered {\n    padding-right: 8px;\n    padding-left: 20px; }\n  .select2-container .select2-selection--multiple {\n    box-sizing: border-box;\n    cursor: pointer;\n    display: block;\n    min-height: 32px;\n    user-select: none;\n    -webkit-user-select: none; }\n    .select2-container .select2-selection--multiple .select2-selection__rendered {\n      display: inline-block;\n      overflow: hidden;\n      padding-left: 8px;\n      text-overflow: ellipsis;\n      white-space: nowrap; }\n  .select2-container .select2-search--inline {\n    float: left; }\n    .select2-container .select2-search--inline .select2-search__field {\n      box-sizing: border-box;\n      border: none;\n      font-size: 100%;\n      margin-top: 5px;\n      padding: 0; }\n      .select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {\n        -webkit-appearance: none; }\n\n.select2-dropdown {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  box-sizing: border-box;\n  display: block;\n  position: absolute;\n  left: -100000px;\n  width: 100%;\n  z-index: 1051; }\n\n.select2-results {\n  display: block; }\n\n.select2-results__options {\n  list-style: none;\n  margin: 0;\n  padding: 0; }\n\n.select2-results__option {\n  padding: 6px;\n  user-select: none;\n  -webkit-user-select: none; }\n  .select2-results__option[aria-selected] {\n    cursor: pointer; }\n\n.select2-container--open .select2-dropdown {\n  left: 0; }\n\n.select2-container--open .select2-dropdown--above {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--open .select2-dropdown--below {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-search--dropdown {\n  display: block;\n  padding: 4px; }\n  .select2-search--dropdown .select2-search__field {\n    padding: 4px;\n    width: 100%;\n    box-sizing: border-box; }\n    .select2-search--dropdown .select2-search__field::-webkit-search-cancel-button {\n      -webkit-appearance: none; }\n  .select2-search--dropdown.select2-search--hide {\n    display: none; }\n\n.select2-close-mask {\n  border: 0;\n  margin: 0;\n  padding: 0;\n  display: block;\n  position: fixed;\n  left: 0;\n  top: 0;\n  min-height: 100%;\n  min-width: 100%;\n  height: auto;\n  width: auto;\n  opacity: 0;\n  z-index: 99;\n  background-color: #fff;\n  filter: alpha(opacity=0); }\n\n.select2-hidden-accessible {\n  border: 0 !important;\n  clip: rect(0 0 0 0) !important;\n  -webkit-clip-path: inset(50%) !important;\n  clip-path: inset(50%) !important;\n  height: 1px !important;\n  overflow: hidden !important;\n  padding: 0 !important;\n  position: absolute !important;\n  width: 1px !important;\n  white-space: nowrap !important; }\n\n.select2-container--default .select2-selection--single {\n  background-color: #fff;\n  border: 1px solid #aaa;\n  border-radius: 4px; }\n  .select2-container--default .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--default .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold; }\n  .select2-container--default .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--default .select2-selection--single .select2-selection__arrow {\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px; }\n    .select2-container--default .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  left: 1px;\n  right: auto; }\n\n.select2-container--default.select2-container--disabled .select2-selection--single {\n  background-color: #eee;\n  cursor: default; }\n  .select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {\n    display: none; }\n\n.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {\n  border-color: transparent transparent #888 transparent;\n  border-width: 0 4px 5px 4px; }\n\n.select2-container--default .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text; }\n  .select2-container--default .select2-selection--multiple .select2-selection__rendered {\n    box-sizing: border-box;\n    list-style: none;\n    margin: 0;\n    padding: 0 5px;\n    width: 100%; }\n    .select2-container--default .select2-selection--multiple .select2-selection__rendered li {\n      list-style: none; }\n  .select2-container--default .select2-selection--multiple .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin-top: 5px;\n    margin-right: 10px;\n    padding: 1px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px; }\n  .select2-container--default .select2-selection--multiple .select2-selection__choice__remove {\n    color: #999;\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px; }\n    .select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {\n      color: #333; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-search--inline {\n  float: right; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  margin-left: 2px;\n  margin-right: auto; }\n\n.select2-container--default.select2-container--focus .select2-selection--multiple {\n  border: solid black 1px;\n  outline: 0; }\n\n.select2-container--default.select2-container--disabled .select2-selection--multiple {\n  background-color: #eee;\n  cursor: default; }\n\n.select2-container--default.select2-container--disabled .select2-selection__choice__remove {\n  display: none; }\n\n.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--default .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa; }\n\n.select2-container--default .select2-search--inline .select2-search__field {\n  background: transparent;\n  border: none;\n  outline: 0;\n  box-shadow: none;\n  -webkit-appearance: textfield; }\n\n.select2-container--default .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--default .select2-results__option[role=group] {\n  padding: 0; }\n\n.select2-container--default .select2-results__option[aria-disabled=true] {\n  color: #999; }\n\n.select2-container--default .select2-results__option[aria-selected=true] {\n  background-color: #ddd; }\n\n.select2-container--default .select2-results__option .select2-results__option {\n  padding-left: 1em; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__group {\n    padding-left: 0; }\n  .select2-container--default .select2-results__option .select2-results__option .select2-results__option {\n    margin-left: -1em;\n    padding-left: 2em; }\n    .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n      margin-left: -2em;\n      padding-left: 3em; }\n      .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n        margin-left: -3em;\n        padding-left: 4em; }\n        .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n          margin-left: -4em;\n          padding-left: 5em; }\n          .select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {\n            margin-left: -5em;\n            padding-left: 6em; }\n\n.select2-container--default .select2-results__option--highlighted[aria-selected] {\n  background-color: #5897fb;\n  color: white; }\n\n.select2-container--default .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic .select2-selection--single {\n  background-color: #f7f7f7;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  outline: 0;\n  background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);\n  background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n  .select2-container--classic .select2-selection--single:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--single .select2-selection__rendered {\n    color: #444;\n    line-height: 28px; }\n  .select2-container--classic .select2-selection--single .select2-selection__clear {\n    cursor: pointer;\n    float: right;\n    font-weight: bold;\n    margin-right: 10px; }\n  .select2-container--classic .select2-selection--single .select2-selection__placeholder {\n    color: #999; }\n  .select2-container--classic .select2-selection--single .select2-selection__arrow {\n    background-color: #ddd;\n    border: none;\n    border-left: 1px solid #aaa;\n    border-top-right-radius: 4px;\n    border-bottom-right-radius: 4px;\n    height: 26px;\n    position: absolute;\n    top: 1px;\n    right: 1px;\n    width: 20px;\n    background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);\n    background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }\n    .select2-container--classic .select2-selection--single .select2-selection__arrow b {\n      border-color: #888 transparent transparent transparent;\n      border-style: solid;\n      border-width: 5px 4px 0 4px;\n      height: 0;\n      left: 50%;\n      margin-left: -4px;\n      margin-top: -2px;\n      position: absolute;\n      top: 50%;\n      width: 0; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__clear {\n  float: left; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow {\n  border: none;\n  border-right: 1px solid #aaa;\n  border-radius: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  left: 1px;\n  right: auto; }\n\n.select2-container--classic.select2-container--open .select2-selection--single {\n  border: 1px solid #5897fb; }\n  .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {\n    background: transparent;\n    border: none; }\n    .select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {\n      border-color: transparent transparent #888 transparent;\n      border-width: 0 4px 5px 4px; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);\n  background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n  background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);\n  background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }\n\n.select2-container--classic .select2-selection--multiple {\n  background-color: white;\n  border: 1px solid #aaa;\n  border-radius: 4px;\n  cursor: text;\n  outline: 0; }\n  .select2-container--classic .select2-selection--multiple:focus {\n    border: 1px solid #5897fb; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__rendered {\n    list-style: none;\n    margin: 0;\n    padding: 0 5px; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__clear {\n    display: none; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice {\n    background-color: #e4e4e4;\n    border: 1px solid #aaa;\n    border-radius: 4px;\n    cursor: default;\n    float: left;\n    margin-right: 5px;\n    margin-top: 5px;\n    padding: 0 5px; }\n  .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove {\n    color: #888;\n    cursor: pointer;\n    display: inline-block;\n    font-weight: bold;\n    margin-right: 2px; }\n    .select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {\n      color: #555; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice {\n  float: right;\n  margin-left: 5px;\n  margin-right: auto; }\n\n.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove {\n  margin-left: 2px;\n  margin-right: auto; }\n\n.select2-container--classic.select2-container--open .select2-selection--multiple {\n  border: 1px solid #5897fb; }\n\n.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {\n  border-top: none;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0; }\n\n.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {\n  border-bottom: none;\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0; }\n\n.select2-container--classic .select2-search--dropdown .select2-search__field {\n  border: 1px solid #aaa;\n  outline: 0; }\n\n.select2-container--classic .select2-search--inline .select2-search__field {\n  outline: 0;\n  box-shadow: none; }\n\n.select2-container--classic .select2-dropdown {\n  background-color: white;\n  border: 1px solid transparent; }\n\n.select2-container--classic .select2-dropdown--above {\n  border-bottom: none; }\n\n.select2-container--classic .select2-dropdown--below {\n  border-top: none; }\n\n.select2-container--classic .select2-results > .select2-results__options {\n  max-height: 200px;\n  overflow-y: auto; }\n\n.select2-container--classic .select2-results__option[role=group] {\n  padding: 0; }\n\n.select2-container--classic .select2-results__option[aria-disabled=true] {\n  color: grey; }\n\n.select2-container--classic .select2-results__option--highlighted[aria-selected] {\n  background-color: #3875d7;\n  color: white; }\n\n.select2-container--classic .select2-results__group {\n  cursor: default;\n  display: block;\n  padding: 6px; }\n\n.select2-container--classic.select2-container--open .select2-dropdown {\n  border-color: #5897fb; }\n"
  },
  {
    "path": "src/staticfiles/admin/css/vendor/select2/select2.min.9f54e6414f87.css",
    "content": ".select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=\"rtl\"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;height:1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important;white-space:nowrap !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=\"rtl\"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=\"rtl\"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}\n"
  },
  {
    "path": "src/staticfiles/admin/css/widgets.8a70ea6d8850.css",
    "content": "/* SELECTOR (FILTER INTERFACE) */\n\n.selector {\n    display: flex;\n    flex-grow: 1;\n    gap: 0 10px;\n}\n\n.selector select {\n    height: 17.2em;\n    flex: 1 0 auto;\n    overflow: scroll;\n    width: 100%;\n}\n\n.selector-available, .selector-chosen {\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    flex: 1 1;\n}\n\n.selector-available h2, .selector-chosen h2 {\n    border: 1px solid var(--border-color);\n    border-radius: 4px 4px 0 0;\n}\n\n.selector-chosen .list-footer-display {\n    border: 1px solid var(--border-color);\n    border-top: none;\n    border-radius: 0 0 4px 4px;\n    margin: 0 0 10px;\n    padding: 8px;\n    text-align: center;\n    background: var(--primary);\n    color: var(--header-link-color);\n    cursor: pointer;\n}\n.selector-chosen .list-footer-display__clear {\n    color: var(--breadcrumbs-fg);\n}\n\n.selector-chosen h2 {\n    background: var(--secondary);\n    color: var(--header-link-color);\n}\n\n.selector .selector-available h2 {\n    background: var(--darkened-bg);\n    color: var(--body-quiet-color);\n}\n\n.selector .selector-filter {\n    border: 1px solid var(--border-color);\n    border-width: 0 1px;\n    padding: 8px;\n    color: var(--body-quiet-color);\n    font-size: 0.625rem;\n    margin: 0;\n    text-align: left;\n    display: flex;\n}\n\n.selector .selector-filter label,\n.inline-group .aligned .selector .selector-filter label {\n    float: left;\n    margin: 7px 0 0;\n    width: 18px;\n    height: 18px;\n    padding: 0;\n    overflow: hidden;\n    line-height: 1;\n    min-width: auto;\n}\n\n.selector-filter input {\n    flex-grow: 1;\n}\n\n.selector .selector-available input,\n.selector .selector-chosen input {\n    margin-left: 8px;\n}\n\n.selector ul.selector-chooser {\n    align-self: center;\n    width: 22px;\n    background-color: var(--selected-bg);\n    border-radius: 10px;\n    margin: 0;\n    padding: 0;\n    transform: translateY(-17px);\n}\n\n.selector-chooser li {\n    margin: 0;\n    padding: 3px;\n    list-style-type: none;\n}\n\n.selector select {\n    padding: 0 10px;\n    margin: 0 0 10px;\n    border-radius: 0 0 4px 4px;\n}\n.selector .selector-chosen--with-filtered select {\n    margin: 0;\n    border-radius: 0;\n    height: 14em;\n}\n\n.selector .selector-chosen:not(.selector-chosen--with-filtered) .list-footer-display {\n    display: none;\n}\n\n.selector-add, .selector-remove {\n    width: 16px;\n    height: 16px;\n    display: block;\n    text-indent: -3000px;\n    overflow: hidden;\n    cursor: default;\n    opacity: 0.55;\n}\n\n.active.selector-add, .active.selector-remove {\n    opacity: 1;\n}\n\n.active.selector-add:hover, .active.selector-remove:hover {\n    cursor: pointer;\n}\n\n.selector-add {\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 -96px no-repeat;\n}\n\n.active.selector-add:focus, .active.selector-add:hover {\n    background-position: 0 -112px;\n}\n\n.selector-remove {\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 -64px no-repeat;\n}\n\n.active.selector-remove:focus, .active.selector-remove:hover {\n    background-position: 0 -80px;\n}\n\na.selector-chooseall, a.selector-clearall {\n    display: inline-block;\n    height: 16px;\n    text-align: left;\n    margin: 0 auto;\n    overflow: hidden;\n    font-weight: bold;\n    line-height: 16px;\n    color: var(--body-quiet-color);\n    text-decoration: none;\n    opacity: 0.55;\n}\n\na.active.selector-chooseall:focus, a.active.selector-clearall:focus,\na.active.selector-chooseall:hover, a.active.selector-clearall:hover {\n    color: var(--link-fg);\n}\n\na.active.selector-chooseall, a.active.selector-clearall {\n    opacity: 1;\n}\n\na.active.selector-chooseall:hover, a.active.selector-clearall:hover {\n    cursor: pointer;\n}\n\na.selector-chooseall {\n    padding: 0 18px 0 0;\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") right -160px no-repeat;\n    cursor: default;\n}\n\na.active.selector-chooseall:focus, a.active.selector-chooseall:hover {\n    background-position: 100% -176px;\n}\n\na.selector-clearall {\n    padding: 0 0 0 18px;\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 -128px no-repeat;\n    cursor: default;\n}\n\na.active.selector-clearall:focus, a.active.selector-clearall:hover {\n    background-position: 0 -144px;\n}\n\n/* STACKED SELECTORS */\n\n.stacked {\n    float: left;\n    width: 490px;\n    display: block;\n}\n\n.stacked select {\n    width: 480px;\n    height: 10.1em;\n}\n\n.stacked .selector-available, .stacked .selector-chosen {\n    width: 480px;\n}\n\n.stacked .selector-available {\n    margin-bottom: 0;\n}\n\n.stacked .selector-available input {\n    width: 422px;\n}\n\n.stacked ul.selector-chooser {\n    height: 22px;\n    width: 50px;\n    margin: 0 0 10px 40%;\n    background-color: #eee;\n    border-radius: 10px;\n    transform: none;\n}\n\n.stacked .selector-chooser li {\n    float: left;\n    padding: 3px 3px 3px 5px;\n}\n\n.stacked .selector-chooseall, .stacked .selector-clearall {\n    display: none;\n}\n\n.stacked .selector-add {\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 -32px no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-add {\n    background-position: 0 -32px;\n    cursor: pointer;\n}\n\n.stacked .active.selector-add:focus, .stacked .active.selector-add:hover {\n    background-position: 0 -48px;\n    cursor: pointer;\n}\n\n.stacked .selector-remove {\n    background: url(\"../img/selector-icons.b4555096cea2.svg\") 0 0 no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-remove {\n    background-position: 0 0px;\n    cursor: pointer;\n}\n\n.stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover {\n    background-position: 0 -16px;\n    cursor: pointer;\n}\n\n.selector .help-icon {\n    background: url(\"../img/icon-unknown.a18cb4398978.svg\") 0 0 no-repeat;\n    display: inline-block;\n    vertical-align: middle;\n    margin: -2px 0 0 2px;\n    width: 13px;\n    height: 13px;\n}\n\n.selector .selector-chosen .help-icon {\n    background: url(\"../img/icon-unknown-alt.81536e128bb6.svg\") 0 0 no-repeat;\n}\n\n.selector .search-label-icon {\n    background: url(\"../img/search.7cf54ff789c6.svg\") 0 0 no-repeat;\n    display: inline-block;\n    height: 1.125rem;\n    width: 1.125rem;\n}\n\n/* DATE AND TIME */\n\np.datetime {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: var(--body-quiet-color);\n    font-weight: bold;\n}\n\n.datetime span {\n    white-space: nowrap;\n    font-weight: normal;\n    font-size: 0.6875rem;\n    color: var(--body-quiet-color);\n}\n\n.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField {\n    margin-left: 5px;\n    margin-bottom: 4px;\n}\n\ntable p.datetime {\n    font-size: 0.6875rem;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon {\n    position: relative;\n    display: inline-block;\n    vertical-align: middle;\n    height: 16px;\n    width: 16px;\n    overflow: hidden;\n}\n\n.datetimeshortcuts .clock-icon {\n    background: url(\"../img/icon-clock.e1d4dfac3f2b.svg\") 0 0 no-repeat;\n}\n\n.datetimeshortcuts a:focus .clock-icon,\n.datetimeshortcuts a:hover .clock-icon {\n    background-position: 0 -16px;\n}\n\n.datetimeshortcuts .date-icon {\n    background: url(\"../img/icon-calendar.ac7aea671bea.svg\") 0 0 no-repeat;\n    top: -1px;\n}\n\n.datetimeshortcuts a:focus .date-icon,\n.datetimeshortcuts a:hover .date-icon {\n    background-position: 0 -16px;\n}\n\n.timezonewarning {\n    font-size: 0.6875rem;\n    color: var(--body-quiet-color);\n}\n\n/* URL */\n\np.url {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: var(--body-quiet-color);\n    font-size: 0.6875rem;\n    font-weight: bold;\n}\n\n.url a {\n    font-weight: normal;\n}\n\n/* FILE UPLOADS */\n\np.file-upload {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: var(--body-quiet-color);\n    font-size: 0.6875rem;\n    font-weight: bold;\n}\n\n.file-upload a {\n    font-weight: normal;\n}\n\n.file-upload .deletelink {\n    margin-left: 5px;\n}\n\nspan.clearable-file-input label {\n    color: var(--body-fg);\n    font-size: 0.6875rem;\n    display: inline;\n    float: none;\n}\n\n/* CALENDARS & CLOCKS */\n\n.calendarbox, .clockbox {\n    margin: 5px auto;\n    font-size: 0.75rem;\n    width: 19em;\n    text-align: center;\n    background: var(--body-bg);\n    color: var(--body-fg);\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n    overflow: hidden;\n    position: relative;\n}\n\n.clockbox {\n    width: auto;\n}\n\n.calendar {\n    margin: 0;\n    padding: 0;\n}\n\n.calendar table {\n    margin: 0;\n    padding: 0;\n    border-collapse: collapse;\n    background: white;\n    width: 100%;\n}\n\n.calendar caption, .calendarbox h2 {\n    margin: 0;\n    text-align: center;\n    border-top: none;\n    font-weight: 700;\n    font-size: 0.75rem;\n    color: #333;\n    background: var(--accent);\n}\n\n.calendar th {\n    padding: 8px 5px;\n    background: var(--darkened-bg);\n    border-bottom: 1px solid var(--border-color);\n    font-weight: 400;\n    font-size: 0.75rem;\n    text-align: center;\n    color: var(--body-quiet-color);\n}\n\n.calendar td {\n    font-weight: 400;\n    font-size: 0.75rem;\n    text-align: center;\n    padding: 0;\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: none;\n}\n\n.calendar td.selected a {\n    background: var(--secondary);\n    color: var(--button-fg);\n}\n\n.calendar td.nonday {\n    background: var(--darkened-bg);\n}\n\n.calendar td.today a {\n    font-weight: 700;\n}\n\n.calendar td a, .timelist a {\n    display: block;\n    font-weight: 400;\n    padding: 6px;\n    text-decoration: none;\n    color: var(--body-quiet-color);\n}\n\n.calendar td a:focus, .timelist a:focus,\n.calendar td a:hover, .timelist a:hover {\n    background: var(--primary);\n    color: white;\n}\n\n.calendar td a:active, .timelist a:active {\n    background: var(--header-bg);\n    color: white;\n}\n\n.calendarnav {\n    font-size: 0.625rem;\n    text-align: center;\n    color: #ccc;\n    margin: 0;\n    padding: 1px 3px;\n}\n\n.calendarnav a:link, #calendarnav a:visited,\n#calendarnav a:focus, #calendarnav a:hover {\n    color: var(--body-quiet-color);\n}\n\n.calendar-shortcuts {\n    background: var(--body-bg);\n    color: var(--body-quiet-color);\n    font-size: 0.6875rem;\n    line-height: 0.6875rem;\n    border-top: 1px solid var(--hairline-color);\n    padding: 8px 0;\n}\n\n.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {\n    display: block;\n    position: absolute;\n    top: 8px;\n    width: 15px;\n    height: 15px;\n    text-indent: -9999px;\n    padding: 0;\n}\n\n.calendarnav-previous {\n    left: 10px;\n    background: url(\"../img/calendar-icons.39b290681a8b.svg\") 0 0 no-repeat;\n}\n\n.calendarbox .calendarnav-previous:focus,\n.calendarbox .calendarnav-previous:hover {\n    background-position: 0 -15px;\n}\n\n.calendarnav-next {\n    right: 10px;\n    background: url(\"../img/calendar-icons.39b290681a8b.svg\") 0 -30px no-repeat;\n}\n\n.calendarbox .calendarnav-next:focus,\n.calendarbox .calendarnav-next:hover {\n    background-position: 0 -45px;\n}\n\n.calendar-cancel {\n    margin: 0;\n    padding: 4px 0;\n    font-size: 0.75rem;\n    background: var(--close-button-bg);\n    border-top: 1px solid var(--border-color);\n    color: var(--button-fg);\n}\n\n.calendar-cancel:focus, .calendar-cancel:hover {\n    background: var(--close-button-hover-bg);\n}\n\n.calendar-cancel a {\n    color: var(--button-fg);\n    display: block;\n}\n\nul.timelist, .timelist li {\n    list-style-type: none;\n    margin: 0;\n    padding: 0;\n}\n\n.timelist a {\n    padding: 2px;\n}\n\n/* EDIT INLINE */\n\n.inline-deletelink {\n    float: right;\n    text-indent: -9999px;\n    background: url(\"../img/inline-delete.fec1b761f254.svg\") 0 0 no-repeat;\n    width: 16px;\n    height: 16px;\n    border: 0px none;\n}\n\n.inline-deletelink:focus, .inline-deletelink:hover {\n    cursor: pointer;\n}\n\n/* RELATED WIDGET WRAPPER */\n.related-widget-wrapper {\n    display: flex;\n    gap: 0 10px;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    margin-bottom: 5px;\n}\n\n.related-widget-wrapper-link {\n    opacity: .6;\n    filter: grayscale(1);\n}\n\n.related-widget-wrapper-link:link {\n    opacity: 1;\n    filter: grayscale(0);\n}\n\n/* GIS MAPS */\n.dj_map {\n    width: 600px;\n    height: 400px;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/css/widgets.css",
    "content": "/* SELECTOR (FILTER INTERFACE) */\n\n.selector {\n    display: flex;\n    flex-grow: 1;\n    gap: 0 10px;\n}\n\n.selector select {\n    height: 17.2em;\n    flex: 1 0 auto;\n    overflow: scroll;\n    width: 100%;\n}\n\n.selector-available, .selector-chosen {\n    text-align: center;\n    display: flex;\n    flex-direction: column;\n    flex: 1 1;\n}\n\n.selector-available h2, .selector-chosen h2 {\n    border: 1px solid var(--border-color);\n    border-radius: 4px 4px 0 0;\n}\n\n.selector-chosen .list-footer-display {\n    border: 1px solid var(--border-color);\n    border-top: none;\n    border-radius: 0 0 4px 4px;\n    margin: 0 0 10px;\n    padding: 8px;\n    text-align: center;\n    background: var(--primary);\n    color: var(--header-link-color);\n    cursor: pointer;\n}\n.selector-chosen .list-footer-display__clear {\n    color: var(--breadcrumbs-fg);\n}\n\n.selector-chosen h2 {\n    background: var(--secondary);\n    color: var(--header-link-color);\n}\n\n.selector .selector-available h2 {\n    background: var(--darkened-bg);\n    color: var(--body-quiet-color);\n}\n\n.selector .selector-filter {\n    border: 1px solid var(--border-color);\n    border-width: 0 1px;\n    padding: 8px;\n    color: var(--body-quiet-color);\n    font-size: 0.625rem;\n    margin: 0;\n    text-align: left;\n    display: flex;\n}\n\n.selector .selector-filter label,\n.inline-group .aligned .selector .selector-filter label {\n    float: left;\n    margin: 7px 0 0;\n    width: 18px;\n    height: 18px;\n    padding: 0;\n    overflow: hidden;\n    line-height: 1;\n    min-width: auto;\n}\n\n.selector-filter input {\n    flex-grow: 1;\n}\n\n.selector .selector-available input,\n.selector .selector-chosen input {\n    margin-left: 8px;\n}\n\n.selector ul.selector-chooser {\n    align-self: center;\n    width: 22px;\n    background-color: var(--selected-bg);\n    border-radius: 10px;\n    margin: 0;\n    padding: 0;\n    transform: translateY(-17px);\n}\n\n.selector-chooser li {\n    margin: 0;\n    padding: 3px;\n    list-style-type: none;\n}\n\n.selector select {\n    padding: 0 10px;\n    margin: 0 0 10px;\n    border-radius: 0 0 4px 4px;\n}\n.selector .selector-chosen--with-filtered select {\n    margin: 0;\n    border-radius: 0;\n    height: 14em;\n}\n\n.selector .selector-chosen:not(.selector-chosen--with-filtered) .list-footer-display {\n    display: none;\n}\n\n.selector-add, .selector-remove {\n    width: 16px;\n    height: 16px;\n    display: block;\n    text-indent: -3000px;\n    overflow: hidden;\n    cursor: default;\n    opacity: 0.55;\n}\n\n.active.selector-add, .active.selector-remove {\n    opacity: 1;\n}\n\n.active.selector-add:hover, .active.selector-remove:hover {\n    cursor: pointer;\n}\n\n.selector-add {\n    background: url(../img/selector-icons.svg) 0 -96px no-repeat;\n}\n\n.active.selector-add:focus, .active.selector-add:hover {\n    background-position: 0 -112px;\n}\n\n.selector-remove {\n    background: url(../img/selector-icons.svg) 0 -64px no-repeat;\n}\n\n.active.selector-remove:focus, .active.selector-remove:hover {\n    background-position: 0 -80px;\n}\n\na.selector-chooseall, a.selector-clearall {\n    display: inline-block;\n    height: 16px;\n    text-align: left;\n    margin: 0 auto;\n    overflow: hidden;\n    font-weight: bold;\n    line-height: 16px;\n    color: var(--body-quiet-color);\n    text-decoration: none;\n    opacity: 0.55;\n}\n\na.active.selector-chooseall:focus, a.active.selector-clearall:focus,\na.active.selector-chooseall:hover, a.active.selector-clearall:hover {\n    color: var(--link-fg);\n}\n\na.active.selector-chooseall, a.active.selector-clearall {\n    opacity: 1;\n}\n\na.active.selector-chooseall:hover, a.active.selector-clearall:hover {\n    cursor: pointer;\n}\n\na.selector-chooseall {\n    padding: 0 18px 0 0;\n    background: url(../img/selector-icons.svg) right -160px no-repeat;\n    cursor: default;\n}\n\na.active.selector-chooseall:focus, a.active.selector-chooseall:hover {\n    background-position: 100% -176px;\n}\n\na.selector-clearall {\n    padding: 0 0 0 18px;\n    background: url(../img/selector-icons.svg) 0 -128px no-repeat;\n    cursor: default;\n}\n\na.active.selector-clearall:focus, a.active.selector-clearall:hover {\n    background-position: 0 -144px;\n}\n\n/* STACKED SELECTORS */\n\n.stacked {\n    float: left;\n    width: 490px;\n    display: block;\n}\n\n.stacked select {\n    width: 480px;\n    height: 10.1em;\n}\n\n.stacked .selector-available, .stacked .selector-chosen {\n    width: 480px;\n}\n\n.stacked .selector-available {\n    margin-bottom: 0;\n}\n\n.stacked .selector-available input {\n    width: 422px;\n}\n\n.stacked ul.selector-chooser {\n    height: 22px;\n    width: 50px;\n    margin: 0 0 10px 40%;\n    background-color: #eee;\n    border-radius: 10px;\n    transform: none;\n}\n\n.stacked .selector-chooser li {\n    float: left;\n    padding: 3px 3px 3px 5px;\n}\n\n.stacked .selector-chooseall, .stacked .selector-clearall {\n    display: none;\n}\n\n.stacked .selector-add {\n    background: url(../img/selector-icons.svg) 0 -32px no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-add {\n    background-position: 0 -32px;\n    cursor: pointer;\n}\n\n.stacked .active.selector-add:focus, .stacked .active.selector-add:hover {\n    background-position: 0 -48px;\n    cursor: pointer;\n}\n\n.stacked .selector-remove {\n    background: url(../img/selector-icons.svg) 0 0 no-repeat;\n    cursor: default;\n}\n\n.stacked .active.selector-remove {\n    background-position: 0 0px;\n    cursor: pointer;\n}\n\n.stacked .active.selector-remove:focus, .stacked .active.selector-remove:hover {\n    background-position: 0 -16px;\n    cursor: pointer;\n}\n\n.selector .help-icon {\n    background: url(../img/icon-unknown.svg) 0 0 no-repeat;\n    display: inline-block;\n    vertical-align: middle;\n    margin: -2px 0 0 2px;\n    width: 13px;\n    height: 13px;\n}\n\n.selector .selector-chosen .help-icon {\n    background: url(../img/icon-unknown-alt.svg) 0 0 no-repeat;\n}\n\n.selector .search-label-icon {\n    background: url(../img/search.svg) 0 0 no-repeat;\n    display: inline-block;\n    height: 1.125rem;\n    width: 1.125rem;\n}\n\n/* DATE AND TIME */\n\np.datetime {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: var(--body-quiet-color);\n    font-weight: bold;\n}\n\n.datetime span {\n    white-space: nowrap;\n    font-weight: normal;\n    font-size: 0.6875rem;\n    color: var(--body-quiet-color);\n}\n\n.datetime input, .form-row .datetime input.vDateField, .form-row .datetime input.vTimeField {\n    margin-left: 5px;\n    margin-bottom: 4px;\n}\n\ntable p.datetime {\n    font-size: 0.6875rem;\n    margin-left: 0;\n    padding-left: 0;\n}\n\n.datetimeshortcuts .clock-icon, .datetimeshortcuts .date-icon {\n    position: relative;\n    display: inline-block;\n    vertical-align: middle;\n    height: 16px;\n    width: 16px;\n    overflow: hidden;\n}\n\n.datetimeshortcuts .clock-icon {\n    background: url(../img/icon-clock.svg) 0 0 no-repeat;\n}\n\n.datetimeshortcuts a:focus .clock-icon,\n.datetimeshortcuts a:hover .clock-icon {\n    background-position: 0 -16px;\n}\n\n.datetimeshortcuts .date-icon {\n    background: url(../img/icon-calendar.svg) 0 0 no-repeat;\n    top: -1px;\n}\n\n.datetimeshortcuts a:focus .date-icon,\n.datetimeshortcuts a:hover .date-icon {\n    background-position: 0 -16px;\n}\n\n.timezonewarning {\n    font-size: 0.6875rem;\n    color: var(--body-quiet-color);\n}\n\n/* URL */\n\np.url {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: var(--body-quiet-color);\n    font-size: 0.6875rem;\n    font-weight: bold;\n}\n\n.url a {\n    font-weight: normal;\n}\n\n/* FILE UPLOADS */\n\np.file-upload {\n    line-height: 20px;\n    margin: 0;\n    padding: 0;\n    color: var(--body-quiet-color);\n    font-size: 0.6875rem;\n    font-weight: bold;\n}\n\n.file-upload a {\n    font-weight: normal;\n}\n\n.file-upload .deletelink {\n    margin-left: 5px;\n}\n\nspan.clearable-file-input label {\n    color: var(--body-fg);\n    font-size: 0.6875rem;\n    display: inline;\n    float: none;\n}\n\n/* CALENDARS & CLOCKS */\n\n.calendarbox, .clockbox {\n    margin: 5px auto;\n    font-size: 0.75rem;\n    width: 19em;\n    text-align: center;\n    background: var(--body-bg);\n    color: var(--body-fg);\n    border: 1px solid var(--hairline-color);\n    border-radius: 4px;\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n    overflow: hidden;\n    position: relative;\n}\n\n.clockbox {\n    width: auto;\n}\n\n.calendar {\n    margin: 0;\n    padding: 0;\n}\n\n.calendar table {\n    margin: 0;\n    padding: 0;\n    border-collapse: collapse;\n    background: white;\n    width: 100%;\n}\n\n.calendar caption, .calendarbox h2 {\n    margin: 0;\n    text-align: center;\n    border-top: none;\n    font-weight: 700;\n    font-size: 0.75rem;\n    color: #333;\n    background: var(--accent);\n}\n\n.calendar th {\n    padding: 8px 5px;\n    background: var(--darkened-bg);\n    border-bottom: 1px solid var(--border-color);\n    font-weight: 400;\n    font-size: 0.75rem;\n    text-align: center;\n    color: var(--body-quiet-color);\n}\n\n.calendar td {\n    font-weight: 400;\n    font-size: 0.75rem;\n    text-align: center;\n    padding: 0;\n    border-top: 1px solid var(--hairline-color);\n    border-bottom: none;\n}\n\n.calendar td.selected a {\n    background: var(--secondary);\n    color: var(--button-fg);\n}\n\n.calendar td.nonday {\n    background: var(--darkened-bg);\n}\n\n.calendar td.today a {\n    font-weight: 700;\n}\n\n.calendar td a, .timelist a {\n    display: block;\n    font-weight: 400;\n    padding: 6px;\n    text-decoration: none;\n    color: var(--body-quiet-color);\n}\n\n.calendar td a:focus, .timelist a:focus,\n.calendar td a:hover, .timelist a:hover {\n    background: var(--primary);\n    color: white;\n}\n\n.calendar td a:active, .timelist a:active {\n    background: var(--header-bg);\n    color: white;\n}\n\n.calendarnav {\n    font-size: 0.625rem;\n    text-align: center;\n    color: #ccc;\n    margin: 0;\n    padding: 1px 3px;\n}\n\n.calendarnav a:link, #calendarnav a:visited,\n#calendarnav a:focus, #calendarnav a:hover {\n    color: var(--body-quiet-color);\n}\n\n.calendar-shortcuts {\n    background: var(--body-bg);\n    color: var(--body-quiet-color);\n    font-size: 0.6875rem;\n    line-height: 0.6875rem;\n    border-top: 1px solid var(--hairline-color);\n    padding: 8px 0;\n}\n\n.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {\n    display: block;\n    position: absolute;\n    top: 8px;\n    width: 15px;\n    height: 15px;\n    text-indent: -9999px;\n    padding: 0;\n}\n\n.calendarnav-previous {\n    left: 10px;\n    background: url(../img/calendar-icons.svg) 0 0 no-repeat;\n}\n\n.calendarbox .calendarnav-previous:focus,\n.calendarbox .calendarnav-previous:hover {\n    background-position: 0 -15px;\n}\n\n.calendarnav-next {\n    right: 10px;\n    background: url(../img/calendar-icons.svg) 0 -30px no-repeat;\n}\n\n.calendarbox .calendarnav-next:focus,\n.calendarbox .calendarnav-next:hover {\n    background-position: 0 -45px;\n}\n\n.calendar-cancel {\n    margin: 0;\n    padding: 4px 0;\n    font-size: 0.75rem;\n    background: var(--close-button-bg);\n    border-top: 1px solid var(--border-color);\n    color: var(--button-fg);\n}\n\n.calendar-cancel:focus, .calendar-cancel:hover {\n    background: var(--close-button-hover-bg);\n}\n\n.calendar-cancel a {\n    color: var(--button-fg);\n    display: block;\n}\n\nul.timelist, .timelist li {\n    list-style-type: none;\n    margin: 0;\n    padding: 0;\n}\n\n.timelist a {\n    padding: 2px;\n}\n\n/* EDIT INLINE */\n\n.inline-deletelink {\n    float: right;\n    text-indent: -9999px;\n    background: url(../img/inline-delete.svg) 0 0 no-repeat;\n    width: 16px;\n    height: 16px;\n    border: 0px none;\n}\n\n.inline-deletelink:focus, .inline-deletelink:hover {\n    cursor: pointer;\n}\n\n/* RELATED WIDGET WRAPPER */\n.related-widget-wrapper {\n    display: flex;\n    gap: 0 10px;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    margin-bottom: 5px;\n}\n\n.related-widget-wrapper-link {\n    opacity: .6;\n    filter: grayscale(1);\n}\n\n.related-widget-wrapper-link:link {\n    opacity: 1;\n    filter: grayscale(0);\n}\n\n/* GIS MAPS */\n.dj_map {\n    width: 600px;\n    height: 400px;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/img/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Code Charm Ltd\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/img/LICENSE.2c54f4e1ca1c",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Code Charm Ltd\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/img/README.a70711a38d87.txt",
    "content": "All icons are taken from Font Awesome (http://fontawesome.io/) project.\nThe Font Awesome font is licensed under the SIL OFL 1.1:\n- https://scripts.sil.org/OFL\n\nSVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG\nFont-Awesome-SVG-PNG is licensed under the MIT license (see file license\nin current folder).\n"
  },
  {
    "path": "src/staticfiles/admin/img/README.txt",
    "content": "All icons are taken from Font Awesome (http://fontawesome.io/) project.\nThe Font Awesome font is licensed under the SIL OFL 1.1:\n- https://scripts.sil.org/OFL\n\nSVG icons source: https://github.com/encharm/Font-Awesome-SVG-PNG\nFont-Awesome-SVG-PNG is licensed under the MIT license (see file license\nin current folder).\n"
  },
  {
    "path": "src/staticfiles/admin/js/SelectBox.7d3ce5a98007.js",
    "content": "'use strict';\n{\n    const SelectBox = {\n        cache: {},\n        init: function(id) {\n            const box = document.getElementById(id);\n            SelectBox.cache[id] = [];\n            const cache = SelectBox.cache[id];\n            for (const node of box.options) {\n                cache.push({value: node.value, text: node.text, displayed: 1});\n            }\n        },\n        redisplay: function(id) {\n            // Repopulate HTML select box from cache\n            const box = document.getElementById(id);\n            const scroll_value_from_top = box.scrollTop;\n            box.innerHTML = '';\n            for (const node of SelectBox.cache[id]) {\n                if (node.displayed) {\n                    const new_option = new Option(node.text, node.value, false, false);\n                    // Shows a tooltip when hovering over the option\n                    new_option.title = node.text;\n                    box.appendChild(new_option);\n                }\n            }\n            box.scrollTop = scroll_value_from_top;\n        },\n        filter: function(id, text) {\n            // Redisplay the HTML select box, displaying only the choices containing ALL\n            // the words in text. (It's an AND search.)\n            const tokens = text.toLowerCase().split(/\\s+/);\n            for (const node of SelectBox.cache[id]) {\n                node.displayed = 1;\n                const node_text = node.text.toLowerCase();\n                for (const token of tokens) {\n                    if (!node_text.includes(token)) {\n                        node.displayed = 0;\n                        break; // Once the first token isn't found we're done\n                    }\n                }\n            }\n            SelectBox.redisplay(id);\n        },\n        get_hidden_node_count(id) {\n            const cache = SelectBox.cache[id] || [];\n            return cache.filter(node => node.displayed === 0).length;\n        },\n        delete_from_cache: function(id, value) {\n            let delete_index = null;\n            const cache = SelectBox.cache[id];\n            for (const [i, node] of cache.entries()) {\n                if (node.value === value) {\n                    delete_index = i;\n                    break;\n                }\n            }\n            cache.splice(delete_index, 1);\n        },\n        add_to_cache: function(id, option) {\n            SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});\n        },\n        cache_contains: function(id, value) {\n            // Check if an item is contained in the cache\n            for (const node of SelectBox.cache[id]) {\n                if (node.value === value) {\n                    return true;\n                }\n            }\n            return false;\n        },\n        move: function(from, to) {\n            const from_box = document.getElementById(from);\n            for (const option of from_box.options) {\n                const option_value = option.value;\n                if (option.selected && SelectBox.cache_contains(from, option_value)) {\n                    SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1});\n                    SelectBox.delete_from_cache(from, option_value);\n                }\n            }\n            SelectBox.redisplay(from);\n            SelectBox.redisplay(to);\n        },\n        move_all: function(from, to) {\n            const from_box = document.getElementById(from);\n            for (const option of from_box.options) {\n                const option_value = option.value;\n                if (SelectBox.cache_contains(from, option_value)) {\n                    SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1});\n                    SelectBox.delete_from_cache(from, option_value);\n                }\n            }\n            SelectBox.redisplay(from);\n            SelectBox.redisplay(to);\n        },\n        sort: function(id) {\n            SelectBox.cache[id].sort(function(a, b) {\n                a = a.text.toLowerCase();\n                b = b.text.toLowerCase();\n                if (a > b) {\n                    return 1;\n                }\n                if (a < b) {\n                    return -1;\n                }\n                return 0;\n            } );\n        },\n        select_all: function(id) {\n            const box = document.getElementById(id);\n            for (const option of box.options) {\n                option.selected = true;\n            }\n        }\n    };\n    window.SelectBox = SelectBox;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/SelectBox.js",
    "content": "'use strict';\n{\n    const SelectBox = {\n        cache: {},\n        init: function(id) {\n            const box = document.getElementById(id);\n            SelectBox.cache[id] = [];\n            const cache = SelectBox.cache[id];\n            for (const node of box.options) {\n                cache.push({value: node.value, text: node.text, displayed: 1});\n            }\n        },\n        redisplay: function(id) {\n            // Repopulate HTML select box from cache\n            const box = document.getElementById(id);\n            const scroll_value_from_top = box.scrollTop;\n            box.innerHTML = '';\n            for (const node of SelectBox.cache[id]) {\n                if (node.displayed) {\n                    const new_option = new Option(node.text, node.value, false, false);\n                    // Shows a tooltip when hovering over the option\n                    new_option.title = node.text;\n                    box.appendChild(new_option);\n                }\n            }\n            box.scrollTop = scroll_value_from_top;\n        },\n        filter: function(id, text) {\n            // Redisplay the HTML select box, displaying only the choices containing ALL\n            // the words in text. (It's an AND search.)\n            const tokens = text.toLowerCase().split(/\\s+/);\n            for (const node of SelectBox.cache[id]) {\n                node.displayed = 1;\n                const node_text = node.text.toLowerCase();\n                for (const token of tokens) {\n                    if (!node_text.includes(token)) {\n                        node.displayed = 0;\n                        break; // Once the first token isn't found we're done\n                    }\n                }\n            }\n            SelectBox.redisplay(id);\n        },\n        get_hidden_node_count(id) {\n            const cache = SelectBox.cache[id] || [];\n            return cache.filter(node => node.displayed === 0).length;\n        },\n        delete_from_cache: function(id, value) {\n            let delete_index = null;\n            const cache = SelectBox.cache[id];\n            for (const [i, node] of cache.entries()) {\n                if (node.value === value) {\n                    delete_index = i;\n                    break;\n                }\n            }\n            cache.splice(delete_index, 1);\n        },\n        add_to_cache: function(id, option) {\n            SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});\n        },\n        cache_contains: function(id, value) {\n            // Check if an item is contained in the cache\n            for (const node of SelectBox.cache[id]) {\n                if (node.value === value) {\n                    return true;\n                }\n            }\n            return false;\n        },\n        move: function(from, to) {\n            const from_box = document.getElementById(from);\n            for (const option of from_box.options) {\n                const option_value = option.value;\n                if (option.selected && SelectBox.cache_contains(from, option_value)) {\n                    SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1});\n                    SelectBox.delete_from_cache(from, option_value);\n                }\n            }\n            SelectBox.redisplay(from);\n            SelectBox.redisplay(to);\n        },\n        move_all: function(from, to) {\n            const from_box = document.getElementById(from);\n            for (const option of from_box.options) {\n                const option_value = option.value;\n                if (SelectBox.cache_contains(from, option_value)) {\n                    SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1});\n                    SelectBox.delete_from_cache(from, option_value);\n                }\n            }\n            SelectBox.redisplay(from);\n            SelectBox.redisplay(to);\n        },\n        sort: function(id) {\n            SelectBox.cache[id].sort(function(a, b) {\n                a = a.text.toLowerCase();\n                b = b.text.toLowerCase();\n                if (a > b) {\n                    return 1;\n                }\n                if (a < b) {\n                    return -1;\n                }\n                return 0;\n            } );\n        },\n        select_all: function(id) {\n            const box = document.getElementById(id);\n            for (const option of box.options) {\n                option.selected = true;\n            }\n        }\n    };\n    window.SelectBox = SelectBox;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/SelectFilter2.b8cf7343ff9e.js",
    "content": "/*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/\n/*\nSelectFilter2 - Turns a multiple-select box into a filter interface.\n\nRequires core.js and SelectBox.js.\n*/\n'use strict';\n{\n    window.SelectFilter = {\n        init: function(field_id, field_name, is_stacked) {\n            if (field_id.match(/__prefix__/)) {\n                // Don't initialize on empty forms.\n                return;\n            }\n            const from_box = document.getElementById(field_id);\n            from_box.id += '_from'; // change its ID\n            from_box.className = 'filtered';\n\n            for (const p of from_box.parentNode.getElementsByTagName('p')) {\n                if (p.classList.contains(\"info\")) {\n                    // Remove <p class=\"info\">, because it just gets in the way.\n                    from_box.parentNode.removeChild(p);\n                } else if (p.classList.contains(\"help\")) {\n                    // Move help text up to the top so it isn't below the select\n                    // boxes or wrapped off on the side to the right of the add\n                    // button:\n                    from_box.parentNode.insertBefore(p, from_box.parentNode.firstChild);\n                }\n            }\n\n            // <div class=\"selector\"> or <div class=\"selector stacked\">\n            const selector_div = quickElement('div', from_box.parentNode);\n            // Make sure the selector div is at the beginning so that the\n            // add link would be displayed to the right of the widget.\n            from_box.parentNode.prepend(selector_div);\n            selector_div.className = is_stacked ? 'selector stacked' : 'selector';\n\n            // <div class=\"selector-available\">\n            const selector_available = quickElement('div', selector_div);\n            selector_available.className = 'selector-available';\n            const title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));\n            quickElement(\n                'span', title_available, '',\n                'class', 'help help-tooltip help-icon',\n                'title', interpolate(\n                    gettext(\n                        'This is the list of available %s. You may choose some by ' +\n                        'selecting them in the box below and then clicking the ' +\n                        '\"Choose\" arrow between the two boxes.'\n                    ),\n                    [field_name]\n                )\n            );\n\n            const filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');\n            filter_p.className = 'selector-filter';\n\n            const search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input');\n\n            quickElement(\n                'span', search_filter_label, '',\n                'class', 'help-tooltip search-label-icon',\n                'title', interpolate(gettext(\"Type into this box to filter down the list of available %s.\"), [field_name])\n            );\n\n            filter_p.appendChild(document.createTextNode(' '));\n\n            const filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext(\"Filter\"));\n            filter_input.id = field_id + '_input';\n\n            selector_available.appendChild(from_box);\n            const choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link');\n            choose_all.className = 'selector-chooseall';\n\n            // <ul class=\"selector-chooser\">\n            const selector_chooser = quickElement('ul', selector_div);\n            selector_chooser.className = 'selector-chooser';\n            const add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', '#', 'id', field_id + '_add_link');\n            add_link.className = 'selector-add';\n            const remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', '#', 'id', field_id + '_remove_link');\n            remove_link.className = 'selector-remove';\n\n            // <div class=\"selector-chosen\">\n            const selector_chosen = quickElement('div', selector_div, '', 'id', field_id + '_selector_chosen');\n            selector_chosen.className = 'selector-chosen';\n            const title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));\n            quickElement(\n                'span', title_chosen, '',\n                'class', 'help help-tooltip help-icon',\n                'title', interpolate(\n                    gettext(\n                        'This is the list of chosen %s. You may remove some by ' +\n                        'selecting them in the box below and then clicking the ' +\n                        '\"Remove\" arrow between the two boxes.'\n                    ),\n                    [field_name]\n                )\n            );\n            \n            const filter_selected_p = quickElement('p', selector_chosen, '', 'id', field_id + '_filter_selected');\n            filter_selected_p.className = 'selector-filter';\n\n            const search_filter_selected_label = quickElement('label', filter_selected_p, '', 'for', field_id + '_selected_input');\n\n            quickElement(\n                'span', search_filter_selected_label, '',\n                'class', 'help-tooltip search-label-icon',\n                'title', interpolate(gettext(\"Type into this box to filter down the list of selected %s.\"), [field_name])\n            );\n\n            filter_selected_p.appendChild(document.createTextNode(' '));\n\n            const filter_selected_input = quickElement('input', filter_selected_p, '', 'type', 'text', 'placeholder', gettext(\"Filter\"));\n            filter_selected_input.id = field_id + '_selected_input';\n\n            const to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', '', 'size', from_box.size, 'name', from_box.name);\n            to_box.className = 'filtered';\n            \n            const warning_footer = quickElement('div', selector_chosen, '', 'class', 'list-footer-display');\n            quickElement('span', warning_footer, '', 'id', field_id + '_list-footer-display-text');\n            quickElement('span', warning_footer, ' (click to clear)', 'class', 'list-footer-display__clear');\n            \n            const clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_remove_all_link');\n            clear_all.className = 'selector-clearall';\n\n            from_box.name = from_box.name + '_old';\n\n            // Set up the JavaScript event handlers for the select box filter interface\n            const move_selection = function(e, elem, move_func, from, to) {\n                if (elem.classList.contains('active')) {\n                    move_func(from, to);\n                    SelectFilter.refresh_icons(field_id);\n                    SelectFilter.refresh_filtered_selects(field_id);\n                    SelectFilter.refresh_filtered_warning(field_id);\n                }\n                e.preventDefault();\n            };\n            choose_all.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move_all, field_id + '_from', field_id + '_to');\n            });\n            add_link.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move, field_id + '_from', field_id + '_to');\n            });\n            remove_link.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move, field_id + '_to', field_id + '_from');\n            });\n            clear_all.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move_all, field_id + '_to', field_id + '_from');\n            });\n            warning_footer.addEventListener('click', function(e) {\n                filter_selected_input.value = '';\n                SelectBox.filter(field_id + '_to', '');\n                SelectFilter.refresh_filtered_warning(field_id);\n                SelectFilter.refresh_icons(field_id);\n            });\n            filter_input.addEventListener('keypress', function(e) {\n                SelectFilter.filter_key_press(e, field_id, '_from', '_to');\n            });\n            filter_input.addEventListener('keyup', function(e) {\n                SelectFilter.filter_key_up(e, field_id, '_from');\n            });\n            filter_input.addEventListener('keydown', function(e) {\n                SelectFilter.filter_key_down(e, field_id, '_from', '_to');\n            });\n            filter_selected_input.addEventListener('keypress', function(e) {\n                SelectFilter.filter_key_press(e, field_id, '_to', '_from');\n            });\n            filter_selected_input.addEventListener('keyup', function(e) {\n                SelectFilter.filter_key_up(e, field_id, '_to', '_selected_input');\n            });\n            filter_selected_input.addEventListener('keydown', function(e) {\n                SelectFilter.filter_key_down(e, field_id, '_to', '_from');\n            });\n            selector_div.addEventListener('change', function(e) {\n                if (e.target.tagName === 'SELECT') {\n                    SelectFilter.refresh_icons(field_id);\n                }\n            });\n            selector_div.addEventListener('dblclick', function(e) {\n                if (e.target.tagName === 'OPTION') {\n                    if (e.target.closest('select').id === field_id + '_to') {\n                        SelectBox.move(field_id + '_to', field_id + '_from');\n                    } else {\n                        SelectBox.move(field_id + '_from', field_id + '_to');\n                    }\n                    SelectFilter.refresh_icons(field_id);\n                }\n            });\n            from_box.closest('form').addEventListener('submit', function() {\n                SelectBox.filter(field_id + '_to', '');\n                SelectBox.select_all(field_id + '_to');\n            });\n            SelectBox.init(field_id + '_from');\n            SelectBox.init(field_id + '_to');\n            // Move selected from_box options to to_box\n            SelectBox.move(field_id + '_from', field_id + '_to');\n\n            // Initial icon refresh\n            SelectFilter.refresh_icons(field_id);\n        },\n        any_selected: function(field) {\n            // Temporarily add the required attribute and check validity.\n            field.required = true;\n            const any_selected = field.checkValidity();\n            field.required = false;\n            return any_selected;\n        },\n        refresh_filtered_warning: function(field_id) {\n            const count = SelectBox.get_hidden_node_count(field_id + '_to');\n            const selector = document.getElementById(field_id + '_selector_chosen');\n            const warning = document.getElementById(field_id + '_list-footer-display-text');\n            selector.className = selector.className.replace('selector-chosen--with-filtered', '');\n            warning.textContent = interpolate(ngettext(\n                '%s selected option not visible',\n                '%s selected options not visible',\n                count\n            ), [count]);\n            if(count > 0) {\n                selector.className += ' selector-chosen--with-filtered';\n            }\n        },\n        refresh_filtered_selects: function(field_id) {\n            SelectBox.filter(field_id + '_from', document.getElementById(field_id + \"_input\").value);\n            SelectBox.filter(field_id + '_to', document.getElementById(field_id + \"_selected_input\").value);\n        },\n        refresh_icons: function(field_id) {\n            const from = document.getElementById(field_id + '_from');\n            const to = document.getElementById(field_id + '_to');\n            // Active if at least one item is selected\n            document.getElementById(field_id + '_add_link').classList.toggle('active', SelectFilter.any_selected(from));\n            document.getElementById(field_id + '_remove_link').classList.toggle('active', SelectFilter.any_selected(to));\n            // Active if the corresponding box isn't empty\n            document.getElementById(field_id + '_add_all_link').classList.toggle('active', from.querySelector('option'));\n            document.getElementById(field_id + '_remove_all_link').classList.toggle('active', to.querySelector('option'));\n            SelectFilter.refresh_filtered_warning(field_id);\n        },\n        filter_key_press: function(event, field_id, source, target) {\n            const source_box = document.getElementById(field_id + source);\n            // don't submit form if user pressed Enter\n            if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) {\n                source_box.selectedIndex = 0;\n                SelectBox.move(field_id + source, field_id + target);\n                source_box.selectedIndex = 0;\n                event.preventDefault();\n            }\n        },\n        filter_key_up: function(event, field_id, source, filter_input) {\n            const input = filter_input || '_input';\n            const source_box = document.getElementById(field_id + source);\n            const temp = source_box.selectedIndex;\n            SelectBox.filter(field_id + source, document.getElementById(field_id + input).value);\n            source_box.selectedIndex = temp;\n            SelectFilter.refresh_filtered_warning(field_id);\n            SelectFilter.refresh_icons(field_id);\n        },\n        filter_key_down: function(event, field_id, source, target) {\n            const source_box = document.getElementById(field_id + source);\n            // right key (39) or left key (37)\n            const direction = source === '_from' ? 39 : 37;\n            // right arrow -- move across\n            if ((event.which && event.which === direction) || (event.keyCode && event.keyCode === direction)) {\n                const old_index = source_box.selectedIndex;\n                SelectBox.move(field_id + source, field_id + target);\n                SelectFilter.refresh_filtered_selects(field_id);\n                SelectFilter.refresh_filtered_warning(field_id);\n                source_box.selectedIndex = (old_index === source_box.length) ? source_box.length - 1 : old_index;\n                return;\n            }\n            // down arrow -- wrap around\n            if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) {\n                source_box.selectedIndex = (source_box.length === source_box.selectedIndex + 1) ? 0 : source_box.selectedIndex + 1;\n            }\n            // up arrow -- wrap around\n            if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) {\n                source_box.selectedIndex = (source_box.selectedIndex === 0) ? source_box.length - 1 : source_box.selectedIndex - 1;\n            }\n        }\n    };\n\n    window.addEventListener('load', function(e) {\n        document.querySelectorAll('select.selectfilter, select.selectfilterstacked').forEach(function(el) {\n            const data = el.dataset;\n            SelectFilter.init(el.id, data.fieldName, parseInt(data.isStacked, 10));\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/SelectFilter2.js",
    "content": "/*global SelectBox, gettext, interpolate, quickElement, SelectFilter*/\n/*\nSelectFilter2 - Turns a multiple-select box into a filter interface.\n\nRequires core.js and SelectBox.js.\n*/\n'use strict';\n{\n    window.SelectFilter = {\n        init: function(field_id, field_name, is_stacked) {\n            if (field_id.match(/__prefix__/)) {\n                // Don't initialize on empty forms.\n                return;\n            }\n            const from_box = document.getElementById(field_id);\n            from_box.id += '_from'; // change its ID\n            from_box.className = 'filtered';\n\n            for (const p of from_box.parentNode.getElementsByTagName('p')) {\n                if (p.classList.contains(\"info\")) {\n                    // Remove <p class=\"info\">, because it just gets in the way.\n                    from_box.parentNode.removeChild(p);\n                } else if (p.classList.contains(\"help\")) {\n                    // Move help text up to the top so it isn't below the select\n                    // boxes or wrapped off on the side to the right of the add\n                    // button:\n                    from_box.parentNode.insertBefore(p, from_box.parentNode.firstChild);\n                }\n            }\n\n            // <div class=\"selector\"> or <div class=\"selector stacked\">\n            const selector_div = quickElement('div', from_box.parentNode);\n            // Make sure the selector div is at the beginning so that the\n            // add link would be displayed to the right of the widget.\n            from_box.parentNode.prepend(selector_div);\n            selector_div.className = is_stacked ? 'selector stacked' : 'selector';\n\n            // <div class=\"selector-available\">\n            const selector_available = quickElement('div', selector_div);\n            selector_available.className = 'selector-available';\n            const title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));\n            quickElement(\n                'span', title_available, '',\n                'class', 'help help-tooltip help-icon',\n                'title', interpolate(\n                    gettext(\n                        'This is the list of available %s. You may choose some by ' +\n                        'selecting them in the box below and then clicking the ' +\n                        '\"Choose\" arrow between the two boxes.'\n                    ),\n                    [field_name]\n                )\n            );\n\n            const filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');\n            filter_p.className = 'selector-filter';\n\n            const search_filter_label = quickElement('label', filter_p, '', 'for', field_id + '_input');\n\n            quickElement(\n                'span', search_filter_label, '',\n                'class', 'help-tooltip search-label-icon',\n                'title', interpolate(gettext(\"Type into this box to filter down the list of available %s.\"), [field_name])\n            );\n\n            filter_p.appendChild(document.createTextNode(' '));\n\n            const filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext(\"Filter\"));\n            filter_input.id = field_id + '_input';\n\n            selector_available.appendChild(from_box);\n            const choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_add_all_link');\n            choose_all.className = 'selector-chooseall';\n\n            // <ul class=\"selector-chooser\">\n            const selector_chooser = quickElement('ul', selector_div);\n            selector_chooser.className = 'selector-chooser';\n            const add_link = quickElement('a', quickElement('li', selector_chooser), gettext('Choose'), 'title', gettext('Choose'), 'href', '#', 'id', field_id + '_add_link');\n            add_link.className = 'selector-add';\n            const remove_link = quickElement('a', quickElement('li', selector_chooser), gettext('Remove'), 'title', gettext('Remove'), 'href', '#', 'id', field_id + '_remove_link');\n            remove_link.className = 'selector-remove';\n\n            // <div class=\"selector-chosen\">\n            const selector_chosen = quickElement('div', selector_div, '', 'id', field_id + '_selector_chosen');\n            selector_chosen.className = 'selector-chosen';\n            const title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));\n            quickElement(\n                'span', title_chosen, '',\n                'class', 'help help-tooltip help-icon',\n                'title', interpolate(\n                    gettext(\n                        'This is the list of chosen %s. You may remove some by ' +\n                        'selecting them in the box below and then clicking the ' +\n                        '\"Remove\" arrow between the two boxes.'\n                    ),\n                    [field_name]\n                )\n            );\n            \n            const filter_selected_p = quickElement('p', selector_chosen, '', 'id', field_id + '_filter_selected');\n            filter_selected_p.className = 'selector-filter';\n\n            const search_filter_selected_label = quickElement('label', filter_selected_p, '', 'for', field_id + '_selected_input');\n\n            quickElement(\n                'span', search_filter_selected_label, '',\n                'class', 'help-tooltip search-label-icon',\n                'title', interpolate(gettext(\"Type into this box to filter down the list of selected %s.\"), [field_name])\n            );\n\n            filter_selected_p.appendChild(document.createTextNode(' '));\n\n            const filter_selected_input = quickElement('input', filter_selected_p, '', 'type', 'text', 'placeholder', gettext(\"Filter\"));\n            filter_selected_input.id = field_id + '_selected_input';\n\n            const to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', '', 'size', from_box.size, 'name', from_box.name);\n            to_box.className = 'filtered';\n            \n            const warning_footer = quickElement('div', selector_chosen, '', 'class', 'list-footer-display');\n            quickElement('span', warning_footer, '', 'id', field_id + '_list-footer-display-text');\n            quickElement('span', warning_footer, ' (click to clear)', 'class', 'list-footer-display__clear');\n            \n            const clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', '#', 'id', field_id + '_remove_all_link');\n            clear_all.className = 'selector-clearall';\n\n            from_box.name = from_box.name + '_old';\n\n            // Set up the JavaScript event handlers for the select box filter interface\n            const move_selection = function(e, elem, move_func, from, to) {\n                if (elem.classList.contains('active')) {\n                    move_func(from, to);\n                    SelectFilter.refresh_icons(field_id);\n                    SelectFilter.refresh_filtered_selects(field_id);\n                    SelectFilter.refresh_filtered_warning(field_id);\n                }\n                e.preventDefault();\n            };\n            choose_all.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move_all, field_id + '_from', field_id + '_to');\n            });\n            add_link.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move, field_id + '_from', field_id + '_to');\n            });\n            remove_link.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move, field_id + '_to', field_id + '_from');\n            });\n            clear_all.addEventListener('click', function(e) {\n                move_selection(e, this, SelectBox.move_all, field_id + '_to', field_id + '_from');\n            });\n            warning_footer.addEventListener('click', function(e) {\n                filter_selected_input.value = '';\n                SelectBox.filter(field_id + '_to', '');\n                SelectFilter.refresh_filtered_warning(field_id);\n                SelectFilter.refresh_icons(field_id);\n            });\n            filter_input.addEventListener('keypress', function(e) {\n                SelectFilter.filter_key_press(e, field_id, '_from', '_to');\n            });\n            filter_input.addEventListener('keyup', function(e) {\n                SelectFilter.filter_key_up(e, field_id, '_from');\n            });\n            filter_input.addEventListener('keydown', function(e) {\n                SelectFilter.filter_key_down(e, field_id, '_from', '_to');\n            });\n            filter_selected_input.addEventListener('keypress', function(e) {\n                SelectFilter.filter_key_press(e, field_id, '_to', '_from');\n            });\n            filter_selected_input.addEventListener('keyup', function(e) {\n                SelectFilter.filter_key_up(e, field_id, '_to', '_selected_input');\n            });\n            filter_selected_input.addEventListener('keydown', function(e) {\n                SelectFilter.filter_key_down(e, field_id, '_to', '_from');\n            });\n            selector_div.addEventListener('change', function(e) {\n                if (e.target.tagName === 'SELECT') {\n                    SelectFilter.refresh_icons(field_id);\n                }\n            });\n            selector_div.addEventListener('dblclick', function(e) {\n                if (e.target.tagName === 'OPTION') {\n                    if (e.target.closest('select').id === field_id + '_to') {\n                        SelectBox.move(field_id + '_to', field_id + '_from');\n                    } else {\n                        SelectBox.move(field_id + '_from', field_id + '_to');\n                    }\n                    SelectFilter.refresh_icons(field_id);\n                }\n            });\n            from_box.closest('form').addEventListener('submit', function() {\n                SelectBox.filter(field_id + '_to', '');\n                SelectBox.select_all(field_id + '_to');\n            });\n            SelectBox.init(field_id + '_from');\n            SelectBox.init(field_id + '_to');\n            // Move selected from_box options to to_box\n            SelectBox.move(field_id + '_from', field_id + '_to');\n\n            // Initial icon refresh\n            SelectFilter.refresh_icons(field_id);\n        },\n        any_selected: function(field) {\n            // Temporarily add the required attribute and check validity.\n            field.required = true;\n            const any_selected = field.checkValidity();\n            field.required = false;\n            return any_selected;\n        },\n        refresh_filtered_warning: function(field_id) {\n            const count = SelectBox.get_hidden_node_count(field_id + '_to');\n            const selector = document.getElementById(field_id + '_selector_chosen');\n            const warning = document.getElementById(field_id + '_list-footer-display-text');\n            selector.className = selector.className.replace('selector-chosen--with-filtered', '');\n            warning.textContent = interpolate(ngettext(\n                '%s selected option not visible',\n                '%s selected options not visible',\n                count\n            ), [count]);\n            if(count > 0) {\n                selector.className += ' selector-chosen--with-filtered';\n            }\n        },\n        refresh_filtered_selects: function(field_id) {\n            SelectBox.filter(field_id + '_from', document.getElementById(field_id + \"_input\").value);\n            SelectBox.filter(field_id + '_to', document.getElementById(field_id + \"_selected_input\").value);\n        },\n        refresh_icons: function(field_id) {\n            const from = document.getElementById(field_id + '_from');\n            const to = document.getElementById(field_id + '_to');\n            // Active if at least one item is selected\n            document.getElementById(field_id + '_add_link').classList.toggle('active', SelectFilter.any_selected(from));\n            document.getElementById(field_id + '_remove_link').classList.toggle('active', SelectFilter.any_selected(to));\n            // Active if the corresponding box isn't empty\n            document.getElementById(field_id + '_add_all_link').classList.toggle('active', from.querySelector('option'));\n            document.getElementById(field_id + '_remove_all_link').classList.toggle('active', to.querySelector('option'));\n            SelectFilter.refresh_filtered_warning(field_id);\n        },\n        filter_key_press: function(event, field_id, source, target) {\n            const source_box = document.getElementById(field_id + source);\n            // don't submit form if user pressed Enter\n            if ((event.which && event.which === 13) || (event.keyCode && event.keyCode === 13)) {\n                source_box.selectedIndex = 0;\n                SelectBox.move(field_id + source, field_id + target);\n                source_box.selectedIndex = 0;\n                event.preventDefault();\n            }\n        },\n        filter_key_up: function(event, field_id, source, filter_input) {\n            const input = filter_input || '_input';\n            const source_box = document.getElementById(field_id + source);\n            const temp = source_box.selectedIndex;\n            SelectBox.filter(field_id + source, document.getElementById(field_id + input).value);\n            source_box.selectedIndex = temp;\n            SelectFilter.refresh_filtered_warning(field_id);\n            SelectFilter.refresh_icons(field_id);\n        },\n        filter_key_down: function(event, field_id, source, target) {\n            const source_box = document.getElementById(field_id + source);\n            // right key (39) or left key (37)\n            const direction = source === '_from' ? 39 : 37;\n            // right arrow -- move across\n            if ((event.which && event.which === direction) || (event.keyCode && event.keyCode === direction)) {\n                const old_index = source_box.selectedIndex;\n                SelectBox.move(field_id + source, field_id + target);\n                SelectFilter.refresh_filtered_selects(field_id);\n                SelectFilter.refresh_filtered_warning(field_id);\n                source_box.selectedIndex = (old_index === source_box.length) ? source_box.length - 1 : old_index;\n                return;\n            }\n            // down arrow -- wrap around\n            if ((event.which && event.which === 40) || (event.keyCode && event.keyCode === 40)) {\n                source_box.selectedIndex = (source_box.length === source_box.selectedIndex + 1) ? 0 : source_box.selectedIndex + 1;\n            }\n            // up arrow -- wrap around\n            if ((event.which && event.which === 38) || (event.keyCode && event.keyCode === 38)) {\n                source_box.selectedIndex = (source_box.selectedIndex === 0) ? source_box.length - 1 : source_box.selectedIndex - 1;\n            }\n        }\n    };\n\n    window.addEventListener('load', function(e) {\n        document.querySelectorAll('select.selectfilter, select.selectfilterstacked').forEach(function(el) {\n            const data = el.dataset;\n            SelectFilter.init(el.id, data.fieldName, parseInt(data.isStacked, 10));\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/actions.867b023a736d.js",
    "content": "/*global gettext, interpolate, ngettext*/\n'use strict';\n{\n    function show(selector) {\n        document.querySelectorAll(selector).forEach(function(el) {\n            el.classList.remove('hidden');\n        });\n    }\n\n    function hide(selector) {\n        document.querySelectorAll(selector).forEach(function(el) {\n            el.classList.add('hidden');\n        });\n    }\n\n    function showQuestion(options) {\n        hide(options.acrossClears);\n        show(options.acrossQuestions);\n        hide(options.allContainer);\n    }\n\n    function showClear(options) {\n        show(options.acrossClears);\n        hide(options.acrossQuestions);\n        document.querySelector(options.actionContainer).classList.remove(options.selectedClass);\n        show(options.allContainer);\n        hide(options.counterContainer);\n    }\n\n    function reset(options) {\n        hide(options.acrossClears);\n        hide(options.acrossQuestions);\n        hide(options.allContainer);\n        show(options.counterContainer);\n    }\n\n    function clearAcross(options) {\n        reset(options);\n        const acrossInputs = document.querySelectorAll(options.acrossInput);\n        acrossInputs.forEach(function(acrossInput) {\n            acrossInput.value = 0;\n        });\n        document.querySelector(options.actionContainer).classList.remove(options.selectedClass);\n    }\n\n    function checker(actionCheckboxes, options, checked) {\n        if (checked) {\n            showQuestion(options);\n        } else {\n            reset(options);\n        }\n        actionCheckboxes.forEach(function(el) {\n            el.checked = checked;\n            el.closest('tr').classList.toggle(options.selectedClass, checked);\n        });\n    }\n\n    function updateCounter(actionCheckboxes, options) {\n        const sel = Array.from(actionCheckboxes).filter(function(el) {\n            return el.checked;\n        }).length;\n        const counter = document.querySelector(options.counterContainer);\n        // data-actions-icnt is defined in the generated HTML\n        // and contains the total amount of objects in the queryset\n        const actions_icnt = Number(counter.dataset.actionsIcnt);\n        counter.textContent = interpolate(\n            ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {\n                sel: sel,\n                cnt: actions_icnt\n            }, true);\n        const allToggle = document.getElementById(options.allToggleId);\n        allToggle.checked = sel === actionCheckboxes.length;\n        if (allToggle.checked) {\n            showQuestion(options);\n        } else {\n            clearAcross(options);\n        }\n    }\n\n    const defaults = {\n        actionContainer: \"div.actions\",\n        counterContainer: \"span.action-counter\",\n        allContainer: \"div.actions span.all\",\n        acrossInput: \"div.actions input.select-across\",\n        acrossQuestions: \"div.actions span.question\",\n        acrossClears: \"div.actions span.clear\",\n        allToggleId: \"action-toggle\",\n        selectedClass: \"selected\"\n    };\n\n    window.Actions = function(actionCheckboxes, options) {\n        options = Object.assign({}, defaults, options);\n        let list_editable_changed = false;\n        let lastChecked = null;\n        let shiftPressed = false;\n\n        document.addEventListener('keydown', (event) => {\n            shiftPressed = event.shiftKey;\n        });\n\n        document.addEventListener('keyup', (event) => {\n            shiftPressed = event.shiftKey;\n        });\n\n        document.getElementById(options.allToggleId).addEventListener('click', function(event) {\n            checker(actionCheckboxes, options, this.checked);\n            updateCounter(actionCheckboxes, options);\n        });\n\n        document.querySelectorAll(options.acrossQuestions + \" a\").forEach(function(el) {\n            el.addEventListener('click', function(event) {\n                event.preventDefault();\n                const acrossInputs = document.querySelectorAll(options.acrossInput);\n                acrossInputs.forEach(function(acrossInput) {\n                    acrossInput.value = 1;\n                });\n                showClear(options);\n            });\n        });\n\n        document.querySelectorAll(options.acrossClears + \" a\").forEach(function(el) {\n            el.addEventListener('click', function(event) {\n                event.preventDefault();\n                document.getElementById(options.allToggleId).checked = false;\n                clearAcross(options);\n                checker(actionCheckboxes, options, false);\n                updateCounter(actionCheckboxes, options);\n            });\n        });\n\n        function affectedCheckboxes(target, withModifier) {\n            const multiSelect = (lastChecked && withModifier && lastChecked !== target);\n            if (!multiSelect) {\n                return [target];\n            }\n            const checkboxes = Array.from(actionCheckboxes);\n            const targetIndex = checkboxes.findIndex(el => el === target);\n            const lastCheckedIndex = checkboxes.findIndex(el => el === lastChecked);\n            const startIndex = Math.min(targetIndex, lastCheckedIndex);\n            const endIndex = Math.max(targetIndex, lastCheckedIndex);\n            const filtered = checkboxes.filter((el, index) => (startIndex <= index) && (index <= endIndex));\n            return filtered;\n        };\n\n        Array.from(document.getElementById('result_list').tBodies).forEach(function(el) {\n            el.addEventListener('change', function(event) {\n                const target = event.target;\n                if (target.classList.contains('action-select')) {\n                    const checkboxes = affectedCheckboxes(target, shiftPressed);\n                    checker(checkboxes, options, target.checked);\n                    updateCounter(actionCheckboxes, options);\n                    lastChecked = target;\n                } else {\n                    list_editable_changed = true;\n                }\n            });\n        });\n\n        document.querySelector('#changelist-form button[name=index]').addEventListener('click', function(event) {\n            if (list_editable_changed) {\n                const confirmed = confirm(gettext(\"You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.\"));\n                if (!confirmed) {\n                    event.preventDefault();\n                }\n            }\n        });\n\n        const el = document.querySelector('#changelist-form input[name=_save]');\n        // The button does not exist if no fields are editable.\n        if (el) {\n            el.addEventListener('click', function(event) {\n                if (document.querySelector('[name=action]').value) {\n                    const text = list_editable_changed\n                        ? gettext(\"You have selected an action, but you haven’t saved your changes to individual fields yet. Please click OK to save. You’ll need to re-run the action.\")\n                        : gettext(\"You have selected an action, and you haven’t made any changes on individual fields. You’re probably looking for the Go button rather than the Save button.\");\n                    if (!confirm(text)) {\n                        event.preventDefault();\n                    }\n                }\n            });\n        }\n        // Sync counter when navigating to the page, such as through the back\n        // button.\n        window.addEventListener('pageshow', (event) => updateCounter(actionCheckboxes, options));\n    };\n\n    // Call function fn when the DOM is loaded and ready. If it is already\n    // loaded, call the function now.\n    // http://youmightnotneedjquery.com/#ready\n    function ready(fn) {\n        if (document.readyState !== 'loading') {\n            fn();\n        } else {\n            document.addEventListener('DOMContentLoaded', fn);\n        }\n    }\n\n    ready(function() {\n        const actionsEls = document.querySelectorAll('tr input.action-select');\n        if (actionsEls.length > 0) {\n            Actions(actionsEls);\n        }\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/actions.js",
    "content": "/*global gettext, interpolate, ngettext*/\n'use strict';\n{\n    function show(selector) {\n        document.querySelectorAll(selector).forEach(function(el) {\n            el.classList.remove('hidden');\n        });\n    }\n\n    function hide(selector) {\n        document.querySelectorAll(selector).forEach(function(el) {\n            el.classList.add('hidden');\n        });\n    }\n\n    function showQuestion(options) {\n        hide(options.acrossClears);\n        show(options.acrossQuestions);\n        hide(options.allContainer);\n    }\n\n    function showClear(options) {\n        show(options.acrossClears);\n        hide(options.acrossQuestions);\n        document.querySelector(options.actionContainer).classList.remove(options.selectedClass);\n        show(options.allContainer);\n        hide(options.counterContainer);\n    }\n\n    function reset(options) {\n        hide(options.acrossClears);\n        hide(options.acrossQuestions);\n        hide(options.allContainer);\n        show(options.counterContainer);\n    }\n\n    function clearAcross(options) {\n        reset(options);\n        const acrossInputs = document.querySelectorAll(options.acrossInput);\n        acrossInputs.forEach(function(acrossInput) {\n            acrossInput.value = 0;\n        });\n        document.querySelector(options.actionContainer).classList.remove(options.selectedClass);\n    }\n\n    function checker(actionCheckboxes, options, checked) {\n        if (checked) {\n            showQuestion(options);\n        } else {\n            reset(options);\n        }\n        actionCheckboxes.forEach(function(el) {\n            el.checked = checked;\n            el.closest('tr').classList.toggle(options.selectedClass, checked);\n        });\n    }\n\n    function updateCounter(actionCheckboxes, options) {\n        const sel = Array.from(actionCheckboxes).filter(function(el) {\n            return el.checked;\n        }).length;\n        const counter = document.querySelector(options.counterContainer);\n        // data-actions-icnt is defined in the generated HTML\n        // and contains the total amount of objects in the queryset\n        const actions_icnt = Number(counter.dataset.actionsIcnt);\n        counter.textContent = interpolate(\n            ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {\n                sel: sel,\n                cnt: actions_icnt\n            }, true);\n        const allToggle = document.getElementById(options.allToggleId);\n        allToggle.checked = sel === actionCheckboxes.length;\n        if (allToggle.checked) {\n            showQuestion(options);\n        } else {\n            clearAcross(options);\n        }\n    }\n\n    const defaults = {\n        actionContainer: \"div.actions\",\n        counterContainer: \"span.action-counter\",\n        allContainer: \"div.actions span.all\",\n        acrossInput: \"div.actions input.select-across\",\n        acrossQuestions: \"div.actions span.question\",\n        acrossClears: \"div.actions span.clear\",\n        allToggleId: \"action-toggle\",\n        selectedClass: \"selected\"\n    };\n\n    window.Actions = function(actionCheckboxes, options) {\n        options = Object.assign({}, defaults, options);\n        let list_editable_changed = false;\n        let lastChecked = null;\n        let shiftPressed = false;\n\n        document.addEventListener('keydown', (event) => {\n            shiftPressed = event.shiftKey;\n        });\n\n        document.addEventListener('keyup', (event) => {\n            shiftPressed = event.shiftKey;\n        });\n\n        document.getElementById(options.allToggleId).addEventListener('click', function(event) {\n            checker(actionCheckboxes, options, this.checked);\n            updateCounter(actionCheckboxes, options);\n        });\n\n        document.querySelectorAll(options.acrossQuestions + \" a\").forEach(function(el) {\n            el.addEventListener('click', function(event) {\n                event.preventDefault();\n                const acrossInputs = document.querySelectorAll(options.acrossInput);\n                acrossInputs.forEach(function(acrossInput) {\n                    acrossInput.value = 1;\n                });\n                showClear(options);\n            });\n        });\n\n        document.querySelectorAll(options.acrossClears + \" a\").forEach(function(el) {\n            el.addEventListener('click', function(event) {\n                event.preventDefault();\n                document.getElementById(options.allToggleId).checked = false;\n                clearAcross(options);\n                checker(actionCheckboxes, options, false);\n                updateCounter(actionCheckboxes, options);\n            });\n        });\n\n        function affectedCheckboxes(target, withModifier) {\n            const multiSelect = (lastChecked && withModifier && lastChecked !== target);\n            if (!multiSelect) {\n                return [target];\n            }\n            const checkboxes = Array.from(actionCheckboxes);\n            const targetIndex = checkboxes.findIndex(el => el === target);\n            const lastCheckedIndex = checkboxes.findIndex(el => el === lastChecked);\n            const startIndex = Math.min(targetIndex, lastCheckedIndex);\n            const endIndex = Math.max(targetIndex, lastCheckedIndex);\n            const filtered = checkboxes.filter((el, index) => (startIndex <= index) && (index <= endIndex));\n            return filtered;\n        };\n\n        Array.from(document.getElementById('result_list').tBodies).forEach(function(el) {\n            el.addEventListener('change', function(event) {\n                const target = event.target;\n                if (target.classList.contains('action-select')) {\n                    const checkboxes = affectedCheckboxes(target, shiftPressed);\n                    checker(checkboxes, options, target.checked);\n                    updateCounter(actionCheckboxes, options);\n                    lastChecked = target;\n                } else {\n                    list_editable_changed = true;\n                }\n            });\n        });\n\n        document.querySelector('#changelist-form button[name=index]').addEventListener('click', function(event) {\n            if (list_editable_changed) {\n                const confirmed = confirm(gettext(\"You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.\"));\n                if (!confirmed) {\n                    event.preventDefault();\n                }\n            }\n        });\n\n        const el = document.querySelector('#changelist-form input[name=_save]');\n        // The button does not exist if no fields are editable.\n        if (el) {\n            el.addEventListener('click', function(event) {\n                if (document.querySelector('[name=action]').value) {\n                    const text = list_editable_changed\n                        ? gettext(\"You have selected an action, but you haven’t saved your changes to individual fields yet. Please click OK to save. You’ll need to re-run the action.\")\n                        : gettext(\"You have selected an action, and you haven’t made any changes on individual fields. You’re probably looking for the Go button rather than the Save button.\");\n                    if (!confirm(text)) {\n                        event.preventDefault();\n                    }\n                }\n            });\n        }\n        // Sync counter when navigating to the page, such as through the back\n        // button.\n        window.addEventListener('pageshow', (event) => updateCounter(actionCheckboxes, options));\n    };\n\n    // Call function fn when the DOM is loaded and ready. If it is already\n    // loaded, call the function now.\n    // http://youmightnotneedjquery.com/#ready\n    function ready(fn) {\n        if (document.readyState !== 'loading') {\n            fn();\n        } else {\n            document.addEventListener('DOMContentLoaded', fn);\n        }\n    }\n\n    ready(function() {\n        const actionsEls = document.querySelectorAll('tr input.action-select');\n        if (actionsEls.length > 0) {\n            Actions(actionsEls);\n        }\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/admin/DateTimeShortcuts.9f6e209cebca.js",
    "content": "/*global Calendar, findPosX, findPosY, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/\n// Inserts shortcut buttons after all of the following:\n//     <input type=\"text\" class=\"vDateField\">\n//     <input type=\"text\" class=\"vTimeField\">\n'use strict';\n{\n    const DateTimeShortcuts = {\n        calendars: [],\n        calendarInputs: [],\n        clockInputs: [],\n        clockHours: {\n            default_: [\n                [gettext_noop('Now'), -1],\n                [gettext_noop('Midnight'), 0],\n                [gettext_noop('6 a.m.'), 6],\n                [gettext_noop('Noon'), 12],\n                [gettext_noop('6 p.m.'), 18]\n            ]\n        },\n        dismissClockFunc: [],\n        dismissCalendarFunc: [],\n        calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled\n        calendarDivName2: 'calendarin', // name of <div> that contains calendar\n        calendarLinkName: 'calendarlink', // name of the link that is used to toggle\n        clockDivName: 'clockbox', // name of clock <div> that gets toggled\n        clockLinkName: 'clocklink', // name of the link that is used to toggle\n        shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts\n        timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch\n        timezoneOffset: 0,\n        init: function() {\n            const serverOffset = document.body.dataset.adminUtcOffset;\n            if (serverOffset) {\n                const localOffset = new Date().getTimezoneOffset() * -60;\n                DateTimeShortcuts.timezoneOffset = localOffset - serverOffset;\n            }\n\n            for (const inp of document.getElementsByTagName('input')) {\n                if (inp.type === 'text' && inp.classList.contains('vTimeField')) {\n                    DateTimeShortcuts.addClock(inp);\n                    DateTimeShortcuts.addTimezoneWarning(inp);\n                }\n                else if (inp.type === 'text' && inp.classList.contains('vDateField')) {\n                    DateTimeShortcuts.addCalendar(inp);\n                    DateTimeShortcuts.addTimezoneWarning(inp);\n                }\n            }\n        },\n        // Return the current time while accounting for the server timezone.\n        now: function() {\n            const serverOffset = document.body.dataset.adminUtcOffset;\n            if (serverOffset) {\n                const localNow = new Date();\n                const localOffset = localNow.getTimezoneOffset() * -60;\n                localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset));\n                return localNow;\n            } else {\n                return new Date();\n            }\n        },\n        // Add a warning when the time zone in the browser and backend do not match.\n        addTimezoneWarning: function(inp) {\n            const warningClass = DateTimeShortcuts.timezoneWarningClass;\n            let timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600;\n\n            // Only warn if there is a time zone mismatch.\n            if (!timezoneOffset) {\n                return;\n            }\n\n            // Check if warning is already there.\n            if (inp.parentNode.querySelectorAll('.' + warningClass).length) {\n                return;\n            }\n\n            let message;\n            if (timezoneOffset > 0) {\n                message = ngettext(\n                    'Note: You are %s hour ahead of server time.',\n                    'Note: You are %s hours ahead of server time.',\n                    timezoneOffset\n                );\n            }\n            else {\n                timezoneOffset *= -1;\n                message = ngettext(\n                    'Note: You are %s hour behind server time.',\n                    'Note: You are %s hours behind server time.',\n                    timezoneOffset\n                );\n            }\n            message = interpolate(message, [timezoneOffset]);\n\n            const warning = document.createElement('div');\n            warning.classList.add('help', warningClass);\n            warning.textContent = message;\n            inp.parentNode.appendChild(warning);\n        },\n        // Add clock widget to a given field\n        addClock: function(inp) {\n            const num = DateTimeShortcuts.clockInputs.length;\n            DateTimeShortcuts.clockInputs[num] = inp;\n            DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };\n\n            // Shortcut links (clock icon and \"Now\" link)\n            const shortcuts_span = document.createElement('span');\n            shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n            inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n            const now_link = document.createElement('a');\n            now_link.href = \"#\";\n            now_link.textContent = gettext('Now');\n            now_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleClockQuicklink(num, -1);\n            });\n            const clock_link = document.createElement('a');\n            clock_link.href = '#';\n            clock_link.id = DateTimeShortcuts.clockLinkName + num;\n            clock_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                // avoid triggering the document click handler to dismiss the clock\n                e.stopPropagation();\n                DateTimeShortcuts.openClock(num);\n            });\n\n            quickElement(\n                'span', clock_link, '',\n                'class', 'clock-icon',\n                'title', gettext('Choose a Time')\n            );\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0'));\n            shortcuts_span.appendChild(now_link);\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            shortcuts_span.appendChild(clock_link);\n\n            // Create clock link div\n            //\n            // Markup looks like:\n            // <div id=\"clockbox1\" class=\"clockbox module\">\n            //     <h2>Choose a time</h2>\n            //     <ul class=\"timelist\">\n            //         <li><a href=\"#\">Now</a></li>\n            //         <li><a href=\"#\">Midnight</a></li>\n            //         <li><a href=\"#\">6 a.m.</a></li>\n            //         <li><a href=\"#\">Noon</a></li>\n            //         <li><a href=\"#\">6 p.m.</a></li>\n            //     </ul>\n            //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n            // </div>\n\n            const clock_box = document.createElement('div');\n            clock_box.style.display = 'none';\n            clock_box.style.position = 'absolute';\n            clock_box.className = 'clockbox module';\n            clock_box.id = DateTimeShortcuts.clockDivName + num;\n            document.body.appendChild(clock_box);\n            clock_box.addEventListener('click', function(e) { e.stopPropagation(); });\n\n            quickElement('h2', clock_box, gettext('Choose a time'));\n            const time_list = quickElement('ul', clock_box);\n            time_list.className = 'timelist';\n            // The list of choices can be overridden in JavaScript like this:\n            // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]];\n            // where name is the name attribute of the <input>.\n            const name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name;\n            DateTimeShortcuts.clockHours[name].forEach(function(element) {\n                const time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#');\n                time_link.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    DateTimeShortcuts.handleClockQuicklink(num, element[1]);\n                });\n            });\n\n            const cancel_p = quickElement('p', clock_box);\n            cancel_p.className = 'calendar-cancel';\n            const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#');\n            cancel_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.dismissClock(num);\n            });\n\n            document.addEventListener('keyup', function(event) {\n                if (event.which === 27) {\n                    // ESC key closes popup\n                    DateTimeShortcuts.dismissClock(num);\n                    event.preventDefault();\n                }\n            });\n        },\n        openClock: function(num) {\n            const clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num);\n            const clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num);\n\n            // Recalculate the clockbox position\n            // is it left-to-right or right-to-left layout ?\n            if (window.getComputedStyle(document.body).direction !== 'rtl') {\n                clock_box.style.left = findPosX(clock_link) + 17 + 'px';\n            }\n            else {\n                // since style's width is in em, it'd be tough to calculate\n                // px value of it. let's use an estimated px for now\n                clock_box.style.left = findPosX(clock_link) - 110 + 'px';\n            }\n            clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';\n\n            // Show the clock box\n            clock_box.style.display = 'block';\n            document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]);\n        },\n        dismissClock: function(num) {\n            document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';\n            document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]);\n        },\n        handleClockQuicklink: function(num, val) {\n            let d;\n            if (val === -1) {\n                d = DateTimeShortcuts.now();\n            }\n            else {\n                d = new Date(1970, 1, 1, val, 0, 0, 0);\n            }\n            DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]);\n            DateTimeShortcuts.clockInputs[num].focus();\n            DateTimeShortcuts.dismissClock(num);\n        },\n        // Add calendar widget to a given field.\n        addCalendar: function(inp) {\n            const num = DateTimeShortcuts.calendars.length;\n\n            DateTimeShortcuts.calendarInputs[num] = inp;\n            DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };\n\n            // Shortcut links (calendar icon and \"Today\" link)\n            const shortcuts_span = document.createElement('span');\n            shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n            inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n            const today_link = document.createElement('a');\n            today_link.href = '#';\n            today_link.appendChild(document.createTextNode(gettext('Today')));\n            today_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, 0);\n            });\n            const cal_link = document.createElement('a');\n            cal_link.href = '#';\n            cal_link.id = DateTimeShortcuts.calendarLinkName + num;\n            cal_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                // avoid triggering the document click handler to dismiss the calendar\n                e.stopPropagation();\n                DateTimeShortcuts.openCalendar(num);\n            });\n            quickElement(\n                'span', cal_link, '',\n                'class', 'date-icon',\n                'title', gettext('Choose a Date')\n            );\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0'));\n            shortcuts_span.appendChild(today_link);\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            shortcuts_span.appendChild(cal_link);\n\n            // Create calendarbox div.\n            //\n            // Markup looks like:\n            //\n            // <div id=\"calendarbox3\" class=\"calendarbox module\">\n            //     <h2>\n            //           <a href=\"#\" class=\"link-previous\">&lsaquo;</a>\n            //           <a href=\"#\" class=\"link-next\">&rsaquo;</a> February 2003\n            //     </h2>\n            //     <div class=\"calendar\" id=\"calendarin3\">\n            //         <!-- (cal) -->\n            //     </div>\n            //     <div class=\"calendar-shortcuts\">\n            //          <a href=\"#\">Yesterday</a> | <a href=\"#\">Today</a> | <a href=\"#\">Tomorrow</a>\n            //     </div>\n            //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n            // </div>\n            const cal_box = document.createElement('div');\n            cal_box.style.display = 'none';\n            cal_box.style.position = 'absolute';\n            cal_box.className = 'calendarbox module';\n            cal_box.id = DateTimeShortcuts.calendarDivName1 + num;\n            document.body.appendChild(cal_box);\n            cal_box.addEventListener('click', function(e) { e.stopPropagation(); });\n\n            // next-prev links\n            const cal_nav = quickElement('div', cal_box);\n            const cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#');\n            cal_nav_prev.className = 'calendarnav-previous';\n            cal_nav_prev.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.drawPrev(num);\n            });\n\n            const cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#');\n            cal_nav_next.className = 'calendarnav-next';\n            cal_nav_next.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.drawNext(num);\n            });\n\n            // main box\n            const cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);\n            cal_main.className = 'calendar';\n            DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));\n            DateTimeShortcuts.calendars[num].drawCurrent();\n\n            // calendar shortcuts\n            const shortcuts = quickElement('div', cal_box);\n            shortcuts.className = 'calendar-shortcuts';\n            let day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#');\n            day_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, -1);\n            });\n            shortcuts.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#');\n            day_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, 0);\n            });\n            shortcuts.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#');\n            day_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, +1);\n            });\n\n            // cancel bar\n            const cancel_p = quickElement('p', cal_box);\n            cancel_p.className = 'calendar-cancel';\n            const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#');\n            cancel_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.dismissCalendar(num);\n            });\n            document.addEventListener('keyup', function(event) {\n                if (event.which === 27) {\n                    // ESC key closes popup\n                    DateTimeShortcuts.dismissCalendar(num);\n                    event.preventDefault();\n                }\n            });\n        },\n        openCalendar: function(num) {\n            const cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num);\n            const cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num);\n            const inp = DateTimeShortcuts.calendarInputs[num];\n\n            // Determine if the current value in the input has a valid date.\n            // If so, draw the calendar with that date's year and month.\n            if (inp.value) {\n                const format = get_format('DATE_INPUT_FORMATS')[0];\n                const selected = inp.value.strptime(format);\n                const year = selected.getUTCFullYear();\n                const month = selected.getUTCMonth() + 1;\n                const re = /\\d{4}/;\n                if (re.test(year.toString()) && month >= 1 && month <= 12) {\n                    DateTimeShortcuts.calendars[num].drawDate(month, year, selected);\n                }\n            }\n\n            // Recalculate the clockbox position\n            // is it left-to-right or right-to-left layout ?\n            if (window.getComputedStyle(document.body).direction !== 'rtl') {\n                cal_box.style.left = findPosX(cal_link) + 17 + 'px';\n            }\n            else {\n                // since style's width is in em, it'd be tough to calculate\n                // px value of it. let's use an estimated px for now\n                cal_box.style.left = findPosX(cal_link) - 180 + 'px';\n            }\n            cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';\n\n            cal_box.style.display = 'block';\n            document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]);\n        },\n        dismissCalendar: function(num) {\n            document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';\n            document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]);\n        },\n        drawPrev: function(num) {\n            DateTimeShortcuts.calendars[num].drawPreviousMonth();\n        },\n        drawNext: function(num) {\n            DateTimeShortcuts.calendars[num].drawNextMonth();\n        },\n        handleCalendarCallback: function(num) {\n            const format = get_format('DATE_INPUT_FORMATS')[0];\n            return function(y, m, d) {\n                DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format);\n                DateTimeShortcuts.calendarInputs[num].focus();\n                document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';\n            };\n        },\n        handleCalendarQuickLink: function(num, offset) {\n            const d = DateTimeShortcuts.now();\n            d.setDate(d.getDate() + offset);\n            DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);\n            DateTimeShortcuts.calendarInputs[num].focus();\n            DateTimeShortcuts.dismissCalendar(num);\n        }\n    };\n\n    window.addEventListener('load', DateTimeShortcuts.init);\n    window.DateTimeShortcuts = DateTimeShortcuts;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/admin/DateTimeShortcuts.js",
    "content": "/*global Calendar, findPosX, findPosY, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/\n// Inserts shortcut buttons after all of the following:\n//     <input type=\"text\" class=\"vDateField\">\n//     <input type=\"text\" class=\"vTimeField\">\n'use strict';\n{\n    const DateTimeShortcuts = {\n        calendars: [],\n        calendarInputs: [],\n        clockInputs: [],\n        clockHours: {\n            default_: [\n                [gettext_noop('Now'), -1],\n                [gettext_noop('Midnight'), 0],\n                [gettext_noop('6 a.m.'), 6],\n                [gettext_noop('Noon'), 12],\n                [gettext_noop('6 p.m.'), 18]\n            ]\n        },\n        dismissClockFunc: [],\n        dismissCalendarFunc: [],\n        calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled\n        calendarDivName2: 'calendarin', // name of <div> that contains calendar\n        calendarLinkName: 'calendarlink', // name of the link that is used to toggle\n        clockDivName: 'clockbox', // name of clock <div> that gets toggled\n        clockLinkName: 'clocklink', // name of the link that is used to toggle\n        shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts\n        timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch\n        timezoneOffset: 0,\n        init: function() {\n            const serverOffset = document.body.dataset.adminUtcOffset;\n            if (serverOffset) {\n                const localOffset = new Date().getTimezoneOffset() * -60;\n                DateTimeShortcuts.timezoneOffset = localOffset - serverOffset;\n            }\n\n            for (const inp of document.getElementsByTagName('input')) {\n                if (inp.type === 'text' && inp.classList.contains('vTimeField')) {\n                    DateTimeShortcuts.addClock(inp);\n                    DateTimeShortcuts.addTimezoneWarning(inp);\n                }\n                else if (inp.type === 'text' && inp.classList.contains('vDateField')) {\n                    DateTimeShortcuts.addCalendar(inp);\n                    DateTimeShortcuts.addTimezoneWarning(inp);\n                }\n            }\n        },\n        // Return the current time while accounting for the server timezone.\n        now: function() {\n            const serverOffset = document.body.dataset.adminUtcOffset;\n            if (serverOffset) {\n                const localNow = new Date();\n                const localOffset = localNow.getTimezoneOffset() * -60;\n                localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset));\n                return localNow;\n            } else {\n                return new Date();\n            }\n        },\n        // Add a warning when the time zone in the browser and backend do not match.\n        addTimezoneWarning: function(inp) {\n            const warningClass = DateTimeShortcuts.timezoneWarningClass;\n            let timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600;\n\n            // Only warn if there is a time zone mismatch.\n            if (!timezoneOffset) {\n                return;\n            }\n\n            // Check if warning is already there.\n            if (inp.parentNode.querySelectorAll('.' + warningClass).length) {\n                return;\n            }\n\n            let message;\n            if (timezoneOffset > 0) {\n                message = ngettext(\n                    'Note: You are %s hour ahead of server time.',\n                    'Note: You are %s hours ahead of server time.',\n                    timezoneOffset\n                );\n            }\n            else {\n                timezoneOffset *= -1;\n                message = ngettext(\n                    'Note: You are %s hour behind server time.',\n                    'Note: You are %s hours behind server time.',\n                    timezoneOffset\n                );\n            }\n            message = interpolate(message, [timezoneOffset]);\n\n            const warning = document.createElement('div');\n            warning.classList.add('help', warningClass);\n            warning.textContent = message;\n            inp.parentNode.appendChild(warning);\n        },\n        // Add clock widget to a given field\n        addClock: function(inp) {\n            const num = DateTimeShortcuts.clockInputs.length;\n            DateTimeShortcuts.clockInputs[num] = inp;\n            DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };\n\n            // Shortcut links (clock icon and \"Now\" link)\n            const shortcuts_span = document.createElement('span');\n            shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n            inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n            const now_link = document.createElement('a');\n            now_link.href = \"#\";\n            now_link.textContent = gettext('Now');\n            now_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleClockQuicklink(num, -1);\n            });\n            const clock_link = document.createElement('a');\n            clock_link.href = '#';\n            clock_link.id = DateTimeShortcuts.clockLinkName + num;\n            clock_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                // avoid triggering the document click handler to dismiss the clock\n                e.stopPropagation();\n                DateTimeShortcuts.openClock(num);\n            });\n\n            quickElement(\n                'span', clock_link, '',\n                'class', 'clock-icon',\n                'title', gettext('Choose a Time')\n            );\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0'));\n            shortcuts_span.appendChild(now_link);\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            shortcuts_span.appendChild(clock_link);\n\n            // Create clock link div\n            //\n            // Markup looks like:\n            // <div id=\"clockbox1\" class=\"clockbox module\">\n            //     <h2>Choose a time</h2>\n            //     <ul class=\"timelist\">\n            //         <li><a href=\"#\">Now</a></li>\n            //         <li><a href=\"#\">Midnight</a></li>\n            //         <li><a href=\"#\">6 a.m.</a></li>\n            //         <li><a href=\"#\">Noon</a></li>\n            //         <li><a href=\"#\">6 p.m.</a></li>\n            //     </ul>\n            //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n            // </div>\n\n            const clock_box = document.createElement('div');\n            clock_box.style.display = 'none';\n            clock_box.style.position = 'absolute';\n            clock_box.className = 'clockbox module';\n            clock_box.id = DateTimeShortcuts.clockDivName + num;\n            document.body.appendChild(clock_box);\n            clock_box.addEventListener('click', function(e) { e.stopPropagation(); });\n\n            quickElement('h2', clock_box, gettext('Choose a time'));\n            const time_list = quickElement('ul', clock_box);\n            time_list.className = 'timelist';\n            // The list of choices can be overridden in JavaScript like this:\n            // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]];\n            // where name is the name attribute of the <input>.\n            const name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name;\n            DateTimeShortcuts.clockHours[name].forEach(function(element) {\n                const time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#');\n                time_link.addEventListener('click', function(e) {\n                    e.preventDefault();\n                    DateTimeShortcuts.handleClockQuicklink(num, element[1]);\n                });\n            });\n\n            const cancel_p = quickElement('p', clock_box);\n            cancel_p.className = 'calendar-cancel';\n            const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#');\n            cancel_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.dismissClock(num);\n            });\n\n            document.addEventListener('keyup', function(event) {\n                if (event.which === 27) {\n                    // ESC key closes popup\n                    DateTimeShortcuts.dismissClock(num);\n                    event.preventDefault();\n                }\n            });\n        },\n        openClock: function(num) {\n            const clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num);\n            const clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num);\n\n            // Recalculate the clockbox position\n            // is it left-to-right or right-to-left layout ?\n            if (window.getComputedStyle(document.body).direction !== 'rtl') {\n                clock_box.style.left = findPosX(clock_link) + 17 + 'px';\n            }\n            else {\n                // since style's width is in em, it'd be tough to calculate\n                // px value of it. let's use an estimated px for now\n                clock_box.style.left = findPosX(clock_link) - 110 + 'px';\n            }\n            clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';\n\n            // Show the clock box\n            clock_box.style.display = 'block';\n            document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]);\n        },\n        dismissClock: function(num) {\n            document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';\n            document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]);\n        },\n        handleClockQuicklink: function(num, val) {\n            let d;\n            if (val === -1) {\n                d = DateTimeShortcuts.now();\n            }\n            else {\n                d = new Date(1970, 1, 1, val, 0, 0, 0);\n            }\n            DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]);\n            DateTimeShortcuts.clockInputs[num].focus();\n            DateTimeShortcuts.dismissClock(num);\n        },\n        // Add calendar widget to a given field.\n        addCalendar: function(inp) {\n            const num = DateTimeShortcuts.calendars.length;\n\n            DateTimeShortcuts.calendarInputs[num] = inp;\n            DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };\n\n            // Shortcut links (calendar icon and \"Today\" link)\n            const shortcuts_span = document.createElement('span');\n            shortcuts_span.className = DateTimeShortcuts.shortCutsClass;\n            inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);\n            const today_link = document.createElement('a');\n            today_link.href = '#';\n            today_link.appendChild(document.createTextNode(gettext('Today')));\n            today_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, 0);\n            });\n            const cal_link = document.createElement('a');\n            cal_link.href = '#';\n            cal_link.id = DateTimeShortcuts.calendarLinkName + num;\n            cal_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                // avoid triggering the document click handler to dismiss the calendar\n                e.stopPropagation();\n                DateTimeShortcuts.openCalendar(num);\n            });\n            quickElement(\n                'span', cal_link, '',\n                'class', 'date-icon',\n                'title', gettext('Choose a Date')\n            );\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0'));\n            shortcuts_span.appendChild(today_link);\n            shortcuts_span.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            shortcuts_span.appendChild(cal_link);\n\n            // Create calendarbox div.\n            //\n            // Markup looks like:\n            //\n            // <div id=\"calendarbox3\" class=\"calendarbox module\">\n            //     <h2>\n            //           <a href=\"#\" class=\"link-previous\">&lsaquo;</a>\n            //           <a href=\"#\" class=\"link-next\">&rsaquo;</a> February 2003\n            //     </h2>\n            //     <div class=\"calendar\" id=\"calendarin3\">\n            //         <!-- (cal) -->\n            //     </div>\n            //     <div class=\"calendar-shortcuts\">\n            //          <a href=\"#\">Yesterday</a> | <a href=\"#\">Today</a> | <a href=\"#\">Tomorrow</a>\n            //     </div>\n            //     <p class=\"calendar-cancel\"><a href=\"#\">Cancel</a></p>\n            // </div>\n            const cal_box = document.createElement('div');\n            cal_box.style.display = 'none';\n            cal_box.style.position = 'absolute';\n            cal_box.className = 'calendarbox module';\n            cal_box.id = DateTimeShortcuts.calendarDivName1 + num;\n            document.body.appendChild(cal_box);\n            cal_box.addEventListener('click', function(e) { e.stopPropagation(); });\n\n            // next-prev links\n            const cal_nav = quickElement('div', cal_box);\n            const cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#');\n            cal_nav_prev.className = 'calendarnav-previous';\n            cal_nav_prev.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.drawPrev(num);\n            });\n\n            const cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#');\n            cal_nav_next.className = 'calendarnav-next';\n            cal_nav_next.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.drawNext(num);\n            });\n\n            // main box\n            const cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);\n            cal_main.className = 'calendar';\n            DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));\n            DateTimeShortcuts.calendars[num].drawCurrent();\n\n            // calendar shortcuts\n            const shortcuts = quickElement('div', cal_box);\n            shortcuts.className = 'calendar-shortcuts';\n            let day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#');\n            day_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, -1);\n            });\n            shortcuts.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#');\n            day_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, 0);\n            });\n            shortcuts.appendChild(document.createTextNode('\\u00A0|\\u00A0'));\n            day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#');\n            day_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.handleCalendarQuickLink(num, +1);\n            });\n\n            // cancel bar\n            const cancel_p = quickElement('p', cal_box);\n            cancel_p.className = 'calendar-cancel';\n            const cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#');\n            cancel_link.addEventListener('click', function(e) {\n                e.preventDefault();\n                DateTimeShortcuts.dismissCalendar(num);\n            });\n            document.addEventListener('keyup', function(event) {\n                if (event.which === 27) {\n                    // ESC key closes popup\n                    DateTimeShortcuts.dismissCalendar(num);\n                    event.preventDefault();\n                }\n            });\n        },\n        openCalendar: function(num) {\n            const cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num);\n            const cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num);\n            const inp = DateTimeShortcuts.calendarInputs[num];\n\n            // Determine if the current value in the input has a valid date.\n            // If so, draw the calendar with that date's year and month.\n            if (inp.value) {\n                const format = get_format('DATE_INPUT_FORMATS')[0];\n                const selected = inp.value.strptime(format);\n                const year = selected.getUTCFullYear();\n                const month = selected.getUTCMonth() + 1;\n                const re = /\\d{4}/;\n                if (re.test(year.toString()) && month >= 1 && month <= 12) {\n                    DateTimeShortcuts.calendars[num].drawDate(month, year, selected);\n                }\n            }\n\n            // Recalculate the clockbox position\n            // is it left-to-right or right-to-left layout ?\n            if (window.getComputedStyle(document.body).direction !== 'rtl') {\n                cal_box.style.left = findPosX(cal_link) + 17 + 'px';\n            }\n            else {\n                // since style's width is in em, it'd be tough to calculate\n                // px value of it. let's use an estimated px for now\n                cal_box.style.left = findPosX(cal_link) - 180 + 'px';\n            }\n            cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';\n\n            cal_box.style.display = 'block';\n            document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]);\n        },\n        dismissCalendar: function(num) {\n            document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';\n            document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]);\n        },\n        drawPrev: function(num) {\n            DateTimeShortcuts.calendars[num].drawPreviousMonth();\n        },\n        drawNext: function(num) {\n            DateTimeShortcuts.calendars[num].drawNextMonth();\n        },\n        handleCalendarCallback: function(num) {\n            const format = get_format('DATE_INPUT_FORMATS')[0];\n            return function(y, m, d) {\n                DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format);\n                DateTimeShortcuts.calendarInputs[num].focus();\n                document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none';\n            };\n        },\n        handleCalendarQuickLink: function(num, offset) {\n            const d = DateTimeShortcuts.now();\n            d.setDate(d.getDate() + offset);\n            DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);\n            DateTimeShortcuts.calendarInputs[num].focus();\n            DateTimeShortcuts.dismissCalendar(num);\n        }\n    };\n\n    window.addEventListener('load', DateTimeShortcuts.init);\n    window.DateTimeShortcuts = DateTimeShortcuts;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/admin/RelatedObjectLookups.ef211845e458.js",
    "content": "/*global SelectBox, interpolate*/\n// Handles related-objects functionality: lookup link for raw_id_fields\n// and Add Another links.\n'use strict';\n{\n    const $ = django.jQuery;\n    let popupIndex = 0;\n    const relatedWindows = [];\n\n    function dismissChildPopups() {\n        relatedWindows.forEach(function(win) {\n            if(!win.closed) {\n                win.dismissChildPopups();\n                win.close();    \n            }\n        });\n    }\n\n    function setPopupIndex() {\n        if(document.getElementsByName(\"_popup\").length > 0) {\n            const index = window.name.lastIndexOf(\"__\") + 2;\n            popupIndex = parseInt(window.name.substring(index));   \n        } else {\n            popupIndex = 0;\n        }\n    }\n\n    function addPopupIndex(name) {\n        return name + \"__\" + (popupIndex + 1);\n    }\n\n    function removePopupIndex(name) {\n        return name.replace(new RegExp(\"__\" + (popupIndex + 1) + \"$\"), '');\n    }\n\n    function showAdminPopup(triggeringLink, name_regexp, add_popup) {\n        const name = addPopupIndex(triggeringLink.id.replace(name_regexp, ''));\n        const href = new URL(triggeringLink.href);\n        if (add_popup) {\n            href.searchParams.set('_popup', 1);\n        }\n        const win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');\n        relatedWindows.push(win);\n        win.focus();\n        return false;\n    }\n\n    function showRelatedObjectLookupPopup(triggeringLink) {\n        return showAdminPopup(triggeringLink, /^lookup_/, true);\n    }\n\n    function dismissRelatedLookupPopup(win, chosenId) {\n        const name = removePopupIndex(win.name);\n        const elem = document.getElementById(name);\n        if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) {\n            elem.value += ',' + chosenId;\n        } else {\n            document.getElementById(name).value = chosenId;\n        }\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    function showRelatedObjectPopup(triggeringLink) {\n        return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false);\n    }\n\n    function updateRelatedObjectLinks(triggeringLink) {\n        const $this = $(triggeringLink);\n        const siblings = $this.nextAll('.view-related, .change-related, .delete-related');\n        if (!siblings.length) {\n            return;\n        }\n        const value = $this.val();\n        if (value) {\n            siblings.each(function() {\n                const elm = $(this);\n                elm.attr('href', elm.attr('data-href-template').replace('__fk__', value));\n                elm.removeAttr('aria-disabled');\n            });\n        } else {\n            siblings.removeAttr('href');\n            siblings.attr('aria-disabled', true);\n        }\n    }\n\n    function updateRelatedSelectsOptions(currentSelect, win, objId, newRepr, newId) {\n        // After create/edit a model from the options next to the current\n        // select (+ or :pencil:) update ForeignKey PK of the rest of selects\n        // in the page.\n\n        const path = win.location.pathname;\n        // Extract the model from the popup url '.../<model>/add/' or\n        // '.../<model>/<id>/change/' depending the action (add or change).\n        const modelName = path.split('/')[path.split('/').length - (objId ? 4 : 3)];\n        // Exclude autocomplete selects.\n        const selectsRelated = document.querySelectorAll(`[data-model-ref=\"${modelName}\"] select:not(.admin-autocomplete)`);\n\n        selectsRelated.forEach(function(select) {\n            if (currentSelect === select) {\n                return;\n            }\n\n            let option = select.querySelector(`option[value=\"${objId}\"]`);\n\n            if (!option) {\n                option = new Option(newRepr, newId);\n                select.options.add(option);\n                return;\n            }\n\n            option.textContent = newRepr;\n            option.value = newId;\n        });\n    }\n\n    function dismissAddRelatedObjectPopup(win, newId, newRepr) {\n        const name = removePopupIndex(win.name);\n        const elem = document.getElementById(name);\n        if (elem) {\n            const elemName = elem.nodeName.toUpperCase();\n            if (elemName === 'SELECT') {\n                elem.options[elem.options.length] = new Option(newRepr, newId, true, true);\n                updateRelatedSelectsOptions(elem, win, null, newRepr, newId);\n            } else if (elemName === 'INPUT') {\n                if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) {\n                    elem.value += ',' + newId;\n                } else {\n                    elem.value = newId;\n                }\n            }\n            // Trigger a change event to update related links if required.\n            $(elem).trigger('change');\n        } else {\n            const toId = name + \"_to\";\n            const o = new Option(newRepr, newId);\n            SelectBox.add_to_cache(toId, o);\n            SelectBox.redisplay(toId);\n        }\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) {\n        const id = removePopupIndex(win.name.replace(/^edit_/, ''));\n        const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);\n        const selects = $(selectsSelector);\n        selects.find('option').each(function() {\n            if (this.value === objId) {\n                this.textContent = newRepr;\n                this.value = newId;\n            }\n        }).trigger('change');\n        updateRelatedSelectsOptions(selects[0], win, objId, newRepr, newId);\n        selects.next().find('.select2-selection__rendered').each(function() {\n            // The element can have a clear button as a child.\n            // Use the lastChild to modify only the displayed value.\n            this.lastChild.textContent = newRepr;\n            this.title = newRepr;\n        });\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    function dismissDeleteRelatedObjectPopup(win, objId) {\n        const id = removePopupIndex(win.name.replace(/^delete_/, ''));\n        const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);\n        const selects = $(selectsSelector);\n        selects.find('option').each(function() {\n            if (this.value === objId) {\n                $(this).remove();\n            }\n        }).trigger('change');\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup;\n    window.dismissRelatedLookupPopup = dismissRelatedLookupPopup;\n    window.showRelatedObjectPopup = showRelatedObjectPopup;\n    window.updateRelatedObjectLinks = updateRelatedObjectLinks;\n    window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup;\n    window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup;\n    window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup;\n    window.dismissChildPopups = dismissChildPopups;\n\n    // Kept for backward compatibility\n    window.showAddAnotherPopup = showRelatedObjectPopup;\n    window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup;\n\n    window.addEventListener('unload', function(evt) {\n        window.dismissChildPopups();\n    });\n\n    $(document).ready(function() {\n        setPopupIndex();\n        $(\"a[data-popup-opener]\").on('click', function(event) {\n            event.preventDefault();\n            opener.dismissRelatedLookupPopup(window, $(this).data(\"popup-opener\"));\n        });\n        $('body').on('click', '.related-widget-wrapper-link[data-popup=\"yes\"]', function(e) {\n            e.preventDefault();\n            if (this.href) {\n                const event = $.Event('django:show-related', {href: this.href});\n                $(this).trigger(event);\n                if (!event.isDefaultPrevented()) {\n                    showRelatedObjectPopup(this);\n                }\n            }\n        });\n        $('body').on('change', '.related-widget-wrapper select', function(e) {\n            const event = $.Event('django:update-related');\n            $(this).trigger(event);\n            if (!event.isDefaultPrevented()) {\n                updateRelatedObjectLinks(this);\n            }\n        });\n        $('.related-widget-wrapper select').trigger('change');\n        $('body').on('click', '.related-lookup', function(e) {\n            e.preventDefault();\n            const event = $.Event('django:lookup-related');\n            $(this).trigger(event);\n            if (!event.isDefaultPrevented()) {\n                showRelatedObjectLookupPopup(this);\n            }\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/admin/RelatedObjectLookups.js",
    "content": "/*global SelectBox, interpolate*/\n// Handles related-objects functionality: lookup link for raw_id_fields\n// and Add Another links.\n'use strict';\n{\n    const $ = django.jQuery;\n    let popupIndex = 0;\n    const relatedWindows = [];\n\n    function dismissChildPopups() {\n        relatedWindows.forEach(function(win) {\n            if(!win.closed) {\n                win.dismissChildPopups();\n                win.close();    \n            }\n        });\n    }\n\n    function setPopupIndex() {\n        if(document.getElementsByName(\"_popup\").length > 0) {\n            const index = window.name.lastIndexOf(\"__\") + 2;\n            popupIndex = parseInt(window.name.substring(index));   \n        } else {\n            popupIndex = 0;\n        }\n    }\n\n    function addPopupIndex(name) {\n        return name + \"__\" + (popupIndex + 1);\n    }\n\n    function removePopupIndex(name) {\n        return name.replace(new RegExp(\"__\" + (popupIndex + 1) + \"$\"), '');\n    }\n\n    function showAdminPopup(triggeringLink, name_regexp, add_popup) {\n        const name = addPopupIndex(triggeringLink.id.replace(name_regexp, ''));\n        const href = new URL(triggeringLink.href);\n        if (add_popup) {\n            href.searchParams.set('_popup', 1);\n        }\n        const win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');\n        relatedWindows.push(win);\n        win.focus();\n        return false;\n    }\n\n    function showRelatedObjectLookupPopup(triggeringLink) {\n        return showAdminPopup(triggeringLink, /^lookup_/, true);\n    }\n\n    function dismissRelatedLookupPopup(win, chosenId) {\n        const name = removePopupIndex(win.name);\n        const elem = document.getElementById(name);\n        if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) {\n            elem.value += ',' + chosenId;\n        } else {\n            document.getElementById(name).value = chosenId;\n        }\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    function showRelatedObjectPopup(triggeringLink) {\n        return showAdminPopup(triggeringLink, /^(change|add|delete)_/, false);\n    }\n\n    function updateRelatedObjectLinks(triggeringLink) {\n        const $this = $(triggeringLink);\n        const siblings = $this.nextAll('.view-related, .change-related, .delete-related');\n        if (!siblings.length) {\n            return;\n        }\n        const value = $this.val();\n        if (value) {\n            siblings.each(function() {\n                const elm = $(this);\n                elm.attr('href', elm.attr('data-href-template').replace('__fk__', value));\n                elm.removeAttr('aria-disabled');\n            });\n        } else {\n            siblings.removeAttr('href');\n            siblings.attr('aria-disabled', true);\n        }\n    }\n\n    function updateRelatedSelectsOptions(currentSelect, win, objId, newRepr, newId) {\n        // After create/edit a model from the options next to the current\n        // select (+ or :pencil:) update ForeignKey PK of the rest of selects\n        // in the page.\n\n        const path = win.location.pathname;\n        // Extract the model from the popup url '.../<model>/add/' or\n        // '.../<model>/<id>/change/' depending the action (add or change).\n        const modelName = path.split('/')[path.split('/').length - (objId ? 4 : 3)];\n        // Exclude autocomplete selects.\n        const selectsRelated = document.querySelectorAll(`[data-model-ref=\"${modelName}\"] select:not(.admin-autocomplete)`);\n\n        selectsRelated.forEach(function(select) {\n            if (currentSelect === select) {\n                return;\n            }\n\n            let option = select.querySelector(`option[value=\"${objId}\"]`);\n\n            if (!option) {\n                option = new Option(newRepr, newId);\n                select.options.add(option);\n                return;\n            }\n\n            option.textContent = newRepr;\n            option.value = newId;\n        });\n    }\n\n    function dismissAddRelatedObjectPopup(win, newId, newRepr) {\n        const name = removePopupIndex(win.name);\n        const elem = document.getElementById(name);\n        if (elem) {\n            const elemName = elem.nodeName.toUpperCase();\n            if (elemName === 'SELECT') {\n                elem.options[elem.options.length] = new Option(newRepr, newId, true, true);\n                updateRelatedSelectsOptions(elem, win, null, newRepr, newId);\n            } else if (elemName === 'INPUT') {\n                if (elem.classList.contains('vManyToManyRawIdAdminField') && elem.value) {\n                    elem.value += ',' + newId;\n                } else {\n                    elem.value = newId;\n                }\n            }\n            // Trigger a change event to update related links if required.\n            $(elem).trigger('change');\n        } else {\n            const toId = name + \"_to\";\n            const o = new Option(newRepr, newId);\n            SelectBox.add_to_cache(toId, o);\n            SelectBox.redisplay(toId);\n        }\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    function dismissChangeRelatedObjectPopup(win, objId, newRepr, newId) {\n        const id = removePopupIndex(win.name.replace(/^edit_/, ''));\n        const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);\n        const selects = $(selectsSelector);\n        selects.find('option').each(function() {\n            if (this.value === objId) {\n                this.textContent = newRepr;\n                this.value = newId;\n            }\n        }).trigger('change');\n        updateRelatedSelectsOptions(selects[0], win, objId, newRepr, newId);\n        selects.next().find('.select2-selection__rendered').each(function() {\n            // The element can have a clear button as a child.\n            // Use the lastChild to modify only the displayed value.\n            this.lastChild.textContent = newRepr;\n            this.title = newRepr;\n        });\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    function dismissDeleteRelatedObjectPopup(win, objId) {\n        const id = removePopupIndex(win.name.replace(/^delete_/, ''));\n        const selectsSelector = interpolate('#%s, #%s_from, #%s_to', [id, id, id]);\n        const selects = $(selectsSelector);\n        selects.find('option').each(function() {\n            if (this.value === objId) {\n                $(this).remove();\n            }\n        }).trigger('change');\n        const index = relatedWindows.indexOf(win);\n        if (index > -1) {\n            relatedWindows.splice(index, 1);\n        }\n        win.close();\n    }\n\n    window.showRelatedObjectLookupPopup = showRelatedObjectLookupPopup;\n    window.dismissRelatedLookupPopup = dismissRelatedLookupPopup;\n    window.showRelatedObjectPopup = showRelatedObjectPopup;\n    window.updateRelatedObjectLinks = updateRelatedObjectLinks;\n    window.dismissAddRelatedObjectPopup = dismissAddRelatedObjectPopup;\n    window.dismissChangeRelatedObjectPopup = dismissChangeRelatedObjectPopup;\n    window.dismissDeleteRelatedObjectPopup = dismissDeleteRelatedObjectPopup;\n    window.dismissChildPopups = dismissChildPopups;\n\n    // Kept for backward compatibility\n    window.showAddAnotherPopup = showRelatedObjectPopup;\n    window.dismissAddAnotherPopup = dismissAddRelatedObjectPopup;\n\n    window.addEventListener('unload', function(evt) {\n        window.dismissChildPopups();\n    });\n\n    $(document).ready(function() {\n        setPopupIndex();\n        $(\"a[data-popup-opener]\").on('click', function(event) {\n            event.preventDefault();\n            opener.dismissRelatedLookupPopup(window, $(this).data(\"popup-opener\"));\n        });\n        $('body').on('click', '.related-widget-wrapper-link[data-popup=\"yes\"]', function(e) {\n            e.preventDefault();\n            if (this.href) {\n                const event = $.Event('django:show-related', {href: this.href});\n                $(this).trigger(event);\n                if (!event.isDefaultPrevented()) {\n                    showRelatedObjectPopup(this);\n                }\n            }\n        });\n        $('body').on('change', '.related-widget-wrapper select', function(e) {\n            const event = $.Event('django:update-related');\n            $(this).trigger(event);\n            if (!event.isDefaultPrevented()) {\n                updateRelatedObjectLinks(this);\n            }\n        });\n        $('.related-widget-wrapper select').trigger('change');\n        $('body').on('click', '.related-lookup', function(e) {\n            e.preventDefault();\n            const event = $.Event('django:lookup-related');\n            $(this).trigger(event);\n            if (!event.isDefaultPrevented()) {\n                showRelatedObjectLookupPopup(this);\n            }\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/autocomplete.01591ab27be7.js",
    "content": "'use strict';\n{\n    const $ = django.jQuery;\n\n    $.fn.djangoAdminSelect2 = function() {\n        $.each(this, function(i, element) {\n            $(element).select2({\n                ajax: {\n                    data: (params) => {\n                        return {\n                            term: params.term,\n                            page: params.page,\n                            app_label: element.dataset.appLabel,\n                            model_name: element.dataset.modelName,\n                            field_name: element.dataset.fieldName\n                        };\n                    }\n                }\n            });\n        });\n        return this;\n    };\n\n    $(function() {\n        // Initialize all autocomplete widgets except the one in the template\n        // form used when a new formset is added.\n        $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2();\n    });\n\n    document.addEventListener('formset:added', (event) => {\n        $(event.target).find('.admin-autocomplete').djangoAdminSelect2();\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/autocomplete.js",
    "content": "'use strict';\n{\n    const $ = django.jQuery;\n\n    $.fn.djangoAdminSelect2 = function() {\n        $.each(this, function(i, element) {\n            $(element).select2({\n                ajax: {\n                    data: (params) => {\n                        return {\n                            term: params.term,\n                            page: params.page,\n                            app_label: element.dataset.appLabel,\n                            model_name: element.dataset.modelName,\n                            field_name: element.dataset.fieldName\n                        };\n                    }\n                }\n            });\n        });\n        return this;\n    };\n\n    $(function() {\n        // Initialize all autocomplete widgets except the one in the template\n        // form used when a new formset is added.\n        $('.admin-autocomplete').not('[name*=__prefix__]').djangoAdminSelect2();\n    });\n\n    document.addEventListener('formset:added', (event) => {\n        $(event.target).find('.admin-autocomplete').djangoAdminSelect2();\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/calendar.d64496bbf46d.js",
    "content": "/*global gettext, pgettext, get_format, quickElement, removeChildren*/\n/*\ncalendar.js - Calendar functions by Adrian Holovaty\ndepends on core.js for utility functions like removeChildren or quickElement\n*/\n'use strict';\n{\n    // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions\n    const CalendarNamespace = {\n        monthsOfYear: [\n            gettext('January'),\n            gettext('February'),\n            gettext('March'),\n            gettext('April'),\n            gettext('May'),\n            gettext('June'),\n            gettext('July'),\n            gettext('August'),\n            gettext('September'),\n            gettext('October'),\n            gettext('November'),\n            gettext('December')\n        ],\n        monthsOfYearAbbrev: [\n            pgettext('abbrev. month January', 'Jan'),\n            pgettext('abbrev. month February', 'Feb'),\n            pgettext('abbrev. month March', 'Mar'),\n            pgettext('abbrev. month April', 'Apr'),\n            pgettext('abbrev. month May', 'May'),\n            pgettext('abbrev. month June', 'Jun'),\n            pgettext('abbrev. month July', 'Jul'),\n            pgettext('abbrev. month August', 'Aug'),\n            pgettext('abbrev. month September', 'Sep'),\n            pgettext('abbrev. month October', 'Oct'),\n            pgettext('abbrev. month November', 'Nov'),\n            pgettext('abbrev. month December', 'Dec')\n        ],\n        daysOfWeek: [\n            gettext('Sunday'),\n            gettext('Monday'),\n            gettext('Tuesday'),\n            gettext('Wednesday'),\n            gettext('Thursday'),\n            gettext('Friday'),\n            gettext('Saturday')\n        ],\n        daysOfWeekAbbrev: [\n            pgettext('abbrev. day Sunday', 'Sun'),\n            pgettext('abbrev. day Monday', 'Mon'),\n            pgettext('abbrev. day Tuesday', 'Tue'),\n            pgettext('abbrev. day Wednesday', 'Wed'),\n            pgettext('abbrev. day Thursday', 'Thur'),\n            pgettext('abbrev. day Friday', 'Fri'),\n            pgettext('abbrev. day Saturday', 'Sat')\n        ],\n        daysOfWeekInitial: [\n            pgettext('one letter Sunday', 'S'),\n            pgettext('one letter Monday', 'M'),\n            pgettext('one letter Tuesday', 'T'),\n            pgettext('one letter Wednesday', 'W'),\n            pgettext('one letter Thursday', 'T'),\n            pgettext('one letter Friday', 'F'),\n            pgettext('one letter Saturday', 'S')\n        ],\n        firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),\n        isLeapYear: function(year) {\n            return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0));\n        },\n        getDaysInMonth: function(month, year) {\n            let days;\n            if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {\n                days = 31;\n            }\n            else if (month === 4 || month === 6 || month === 9 || month === 11) {\n                days = 30;\n            }\n            else if (month === 2 && CalendarNamespace.isLeapYear(year)) {\n                days = 29;\n            }\n            else {\n                days = 28;\n            }\n            return days;\n        },\n        draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999\n            const today = new Date();\n            const todayDay = today.getDate();\n            const todayMonth = today.getMonth() + 1;\n            const todayYear = today.getFullYear();\n            let todayClass = '';\n\n            // Use UTC functions here because the date field does not contain time\n            // and using the UTC function variants prevent the local time offset\n            // from altering the date, specifically the day field.  For example:\n            //\n            // ```\n            // var x = new Date('2013-10-02');\n            // var day = x.getDate();\n            // ```\n            //\n            // The day variable above will be 1 instead of 2 in, say, US Pacific time\n            // zone.\n            let isSelectedMonth = false;\n            if (typeof selected !== 'undefined') {\n                isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month);\n            }\n\n            month = parseInt(month);\n            year = parseInt(year);\n            const calDiv = document.getElementById(div_id);\n            removeChildren(calDiv);\n            const calTable = document.createElement('table');\n            quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year);\n            const tableBody = quickElement('tbody', calTable);\n\n            // Draw days-of-week header\n            let tableRow = quickElement('tr', tableBody);\n            for (let i = 0; i < 7; i++) {\n                quickElement('th', tableRow, CalendarNamespace.daysOfWeekInitial[(i + CalendarNamespace.firstDayOfWeek) % 7]);\n            }\n\n            const startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay();\n            const days = CalendarNamespace.getDaysInMonth(month, year);\n\n            let nonDayCell;\n\n            // Draw blanks before first of month\n            tableRow = quickElement('tr', tableBody);\n            for (let i = 0; i < startingPos; i++) {\n                nonDayCell = quickElement('td', tableRow, ' ');\n                nonDayCell.className = \"nonday\";\n            }\n\n            function calendarMonth(y, m) {\n                function onClick(e) {\n                    e.preventDefault();\n                    callback(y, m, this.textContent);\n                }\n                return onClick;\n            }\n\n            // Draw days of month\n            let currentDay = 1;\n            for (let i = startingPos; currentDay <= days; i++) {\n                if (i % 7 === 0 && currentDay !== 1) {\n                    tableRow = quickElement('tr', tableBody);\n                }\n                if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) {\n                    todayClass = 'today';\n                } else {\n                    todayClass = '';\n                }\n\n                // use UTC function; see above for explanation.\n                if (isSelectedMonth && currentDay === selected.getUTCDate()) {\n                    if (todayClass !== '') {\n                        todayClass += \" \";\n                    }\n                    todayClass += \"selected\";\n                }\n\n                const cell = quickElement('td', tableRow, '', 'class', todayClass);\n                const link = quickElement('a', cell, currentDay, 'href', '#');\n                link.addEventListener('click', calendarMonth(year, month));\n                currentDay++;\n            }\n\n            // Draw blanks after end of month (optional, but makes for valid code)\n            while (tableRow.childNodes.length < 7) {\n                nonDayCell = quickElement('td', tableRow, ' ');\n                nonDayCell.className = \"nonday\";\n            }\n\n            calDiv.appendChild(calTable);\n        }\n    };\n\n    // Calendar -- A calendar instance\n    function Calendar(div_id, callback, selected) {\n        // div_id (string) is the ID of the element in which the calendar will\n        //     be displayed\n        // callback (string) is the name of a JavaScript function that will be\n        //     called with the parameters (year, month, day) when a day in the\n        //     calendar is clicked\n        this.div_id = div_id;\n        this.callback = callback;\n        this.today = new Date();\n        this.currentMonth = this.today.getMonth() + 1;\n        this.currentYear = this.today.getFullYear();\n        if (typeof selected !== 'undefined') {\n            this.selected = selected;\n        }\n    }\n    Calendar.prototype = {\n        drawCurrent: function() {\n            CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected);\n        },\n        drawDate: function(month, year, selected) {\n            this.currentMonth = month;\n            this.currentYear = year;\n\n            if(selected) {\n                this.selected = selected;\n            }\n\n            this.drawCurrent();\n        },\n        drawPreviousMonth: function() {\n            if (this.currentMonth === 1) {\n                this.currentMonth = 12;\n                this.currentYear--;\n            }\n            else {\n                this.currentMonth--;\n            }\n            this.drawCurrent();\n        },\n        drawNextMonth: function() {\n            if (this.currentMonth === 12) {\n                this.currentMonth = 1;\n                this.currentYear++;\n            }\n            else {\n                this.currentMonth++;\n            }\n            this.drawCurrent();\n        },\n        drawPreviousYear: function() {\n            this.currentYear--;\n            this.drawCurrent();\n        },\n        drawNextYear: function() {\n            this.currentYear++;\n            this.drawCurrent();\n        }\n    };\n    window.Calendar = Calendar;\n    window.CalendarNamespace = CalendarNamespace;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/calendar.js",
    "content": "/*global gettext, pgettext, get_format, quickElement, removeChildren*/\n/*\ncalendar.js - Calendar functions by Adrian Holovaty\ndepends on core.js for utility functions like removeChildren or quickElement\n*/\n'use strict';\n{\n    // CalendarNamespace -- Provides a collection of HTML calendar-related helper functions\n    const CalendarNamespace = {\n        monthsOfYear: [\n            gettext('January'),\n            gettext('February'),\n            gettext('March'),\n            gettext('April'),\n            gettext('May'),\n            gettext('June'),\n            gettext('July'),\n            gettext('August'),\n            gettext('September'),\n            gettext('October'),\n            gettext('November'),\n            gettext('December')\n        ],\n        monthsOfYearAbbrev: [\n            pgettext('abbrev. month January', 'Jan'),\n            pgettext('abbrev. month February', 'Feb'),\n            pgettext('abbrev. month March', 'Mar'),\n            pgettext('abbrev. month April', 'Apr'),\n            pgettext('abbrev. month May', 'May'),\n            pgettext('abbrev. month June', 'Jun'),\n            pgettext('abbrev. month July', 'Jul'),\n            pgettext('abbrev. month August', 'Aug'),\n            pgettext('abbrev. month September', 'Sep'),\n            pgettext('abbrev. month October', 'Oct'),\n            pgettext('abbrev. month November', 'Nov'),\n            pgettext('abbrev. month December', 'Dec')\n        ],\n        daysOfWeek: [\n            gettext('Sunday'),\n            gettext('Monday'),\n            gettext('Tuesday'),\n            gettext('Wednesday'),\n            gettext('Thursday'),\n            gettext('Friday'),\n            gettext('Saturday')\n        ],\n        daysOfWeekAbbrev: [\n            pgettext('abbrev. day Sunday', 'Sun'),\n            pgettext('abbrev. day Monday', 'Mon'),\n            pgettext('abbrev. day Tuesday', 'Tue'),\n            pgettext('abbrev. day Wednesday', 'Wed'),\n            pgettext('abbrev. day Thursday', 'Thur'),\n            pgettext('abbrev. day Friday', 'Fri'),\n            pgettext('abbrev. day Saturday', 'Sat')\n        ],\n        daysOfWeekInitial: [\n            pgettext('one letter Sunday', 'S'),\n            pgettext('one letter Monday', 'M'),\n            pgettext('one letter Tuesday', 'T'),\n            pgettext('one letter Wednesday', 'W'),\n            pgettext('one letter Thursday', 'T'),\n            pgettext('one letter Friday', 'F'),\n            pgettext('one letter Saturday', 'S')\n        ],\n        firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),\n        isLeapYear: function(year) {\n            return (((year % 4) === 0) && ((year % 100) !== 0 ) || ((year % 400) === 0));\n        },\n        getDaysInMonth: function(month, year) {\n            let days;\n            if (month === 1 || month === 3 || month === 5 || month === 7 || month === 8 || month === 10 || month === 12) {\n                days = 31;\n            }\n            else if (month === 4 || month === 6 || month === 9 || month === 11) {\n                days = 30;\n            }\n            else if (month === 2 && CalendarNamespace.isLeapYear(year)) {\n                days = 29;\n            }\n            else {\n                days = 28;\n            }\n            return days;\n        },\n        draw: function(month, year, div_id, callback, selected) { // month = 1-12, year = 1-9999\n            const today = new Date();\n            const todayDay = today.getDate();\n            const todayMonth = today.getMonth() + 1;\n            const todayYear = today.getFullYear();\n            let todayClass = '';\n\n            // Use UTC functions here because the date field does not contain time\n            // and using the UTC function variants prevent the local time offset\n            // from altering the date, specifically the day field.  For example:\n            //\n            // ```\n            // var x = new Date('2013-10-02');\n            // var day = x.getDate();\n            // ```\n            //\n            // The day variable above will be 1 instead of 2 in, say, US Pacific time\n            // zone.\n            let isSelectedMonth = false;\n            if (typeof selected !== 'undefined') {\n                isSelectedMonth = (selected.getUTCFullYear() === year && (selected.getUTCMonth() + 1) === month);\n            }\n\n            month = parseInt(month);\n            year = parseInt(year);\n            const calDiv = document.getElementById(div_id);\n            removeChildren(calDiv);\n            const calTable = document.createElement('table');\n            quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month - 1] + ' ' + year);\n            const tableBody = quickElement('tbody', calTable);\n\n            // Draw days-of-week header\n            let tableRow = quickElement('tr', tableBody);\n            for (let i = 0; i < 7; i++) {\n                quickElement('th', tableRow, CalendarNamespace.daysOfWeekInitial[(i + CalendarNamespace.firstDayOfWeek) % 7]);\n            }\n\n            const startingPos = new Date(year, month - 1, 1 - CalendarNamespace.firstDayOfWeek).getDay();\n            const days = CalendarNamespace.getDaysInMonth(month, year);\n\n            let nonDayCell;\n\n            // Draw blanks before first of month\n            tableRow = quickElement('tr', tableBody);\n            for (let i = 0; i < startingPos; i++) {\n                nonDayCell = quickElement('td', tableRow, ' ');\n                nonDayCell.className = \"nonday\";\n            }\n\n            function calendarMonth(y, m) {\n                function onClick(e) {\n                    e.preventDefault();\n                    callback(y, m, this.textContent);\n                }\n                return onClick;\n            }\n\n            // Draw days of month\n            let currentDay = 1;\n            for (let i = startingPos; currentDay <= days; i++) {\n                if (i % 7 === 0 && currentDay !== 1) {\n                    tableRow = quickElement('tr', tableBody);\n                }\n                if ((currentDay === todayDay) && (month === todayMonth) && (year === todayYear)) {\n                    todayClass = 'today';\n                } else {\n                    todayClass = '';\n                }\n\n                // use UTC function; see above for explanation.\n                if (isSelectedMonth && currentDay === selected.getUTCDate()) {\n                    if (todayClass !== '') {\n                        todayClass += \" \";\n                    }\n                    todayClass += \"selected\";\n                }\n\n                const cell = quickElement('td', tableRow, '', 'class', todayClass);\n                const link = quickElement('a', cell, currentDay, 'href', '#');\n                link.addEventListener('click', calendarMonth(year, month));\n                currentDay++;\n            }\n\n            // Draw blanks after end of month (optional, but makes for valid code)\n            while (tableRow.childNodes.length < 7) {\n                nonDayCell = quickElement('td', tableRow, ' ');\n                nonDayCell.className = \"nonday\";\n            }\n\n            calDiv.appendChild(calTable);\n        }\n    };\n\n    // Calendar -- A calendar instance\n    function Calendar(div_id, callback, selected) {\n        // div_id (string) is the ID of the element in which the calendar will\n        //     be displayed\n        // callback (string) is the name of a JavaScript function that will be\n        //     called with the parameters (year, month, day) when a day in the\n        //     calendar is clicked\n        this.div_id = div_id;\n        this.callback = callback;\n        this.today = new Date();\n        this.currentMonth = this.today.getMonth() + 1;\n        this.currentYear = this.today.getFullYear();\n        if (typeof selected !== 'undefined') {\n            this.selected = selected;\n        }\n    }\n    Calendar.prototype = {\n        drawCurrent: function() {\n            CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback, this.selected);\n        },\n        drawDate: function(month, year, selected) {\n            this.currentMonth = month;\n            this.currentYear = year;\n\n            if(selected) {\n                this.selected = selected;\n            }\n\n            this.drawCurrent();\n        },\n        drawPreviousMonth: function() {\n            if (this.currentMonth === 1) {\n                this.currentMonth = 12;\n                this.currentYear--;\n            }\n            else {\n                this.currentMonth--;\n            }\n            this.drawCurrent();\n        },\n        drawNextMonth: function() {\n            if (this.currentMonth === 12) {\n                this.currentMonth = 1;\n                this.currentYear++;\n            }\n            else {\n                this.currentMonth++;\n            }\n            this.drawCurrent();\n        },\n        drawPreviousYear: function() {\n            this.currentYear--;\n            this.drawCurrent();\n        },\n        drawNextYear: function() {\n            this.currentYear++;\n            this.drawCurrent();\n        }\n    };\n    window.Calendar = Calendar;\n    window.CalendarNamespace = CalendarNamespace;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/cancel.ecc4c5ca7b32.js",
    "content": "'use strict';\n{\n    // Call function fn when the DOM is loaded and ready. If it is already\n    // loaded, call the function now.\n    // http://youmightnotneedjquery.com/#ready\n    function ready(fn) {\n        if (document.readyState !== 'loading') {\n            fn();\n        } else {\n            document.addEventListener('DOMContentLoaded', fn);\n        }\n    }\n\n    ready(function() {\n        function handleClick(event) {\n            event.preventDefault();\n            const params = new URLSearchParams(window.location.search);\n            if (params.has('_popup')) {\n                window.close(); // Close the popup.\n            } else {\n                window.history.back(); // Otherwise, go back.\n            }\n        }\n\n        document.querySelectorAll('.cancel-link').forEach(function(el) {\n            el.addEventListener('click', handleClick);\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/cancel.js",
    "content": "'use strict';\n{\n    // Call function fn when the DOM is loaded and ready. If it is already\n    // loaded, call the function now.\n    // http://youmightnotneedjquery.com/#ready\n    function ready(fn) {\n        if (document.readyState !== 'loading') {\n            fn();\n        } else {\n            document.addEventListener('DOMContentLoaded', fn);\n        }\n    }\n\n    ready(function() {\n        function handleClick(event) {\n            event.preventDefault();\n            const params = new URLSearchParams(window.location.search);\n            if (params.has('_popup')) {\n                window.close(); // Close the popup.\n            } else {\n                window.history.back(); // Otherwise, go back.\n            }\n        }\n\n        document.querySelectorAll('.cancel-link').forEach(function(el) {\n            el.addEventListener('click', handleClick);\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/change_form.9d8ca4f96b75.js",
    "content": "'use strict';\n{\n    const inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];\n    const modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName;\n    if (modelName) {\n        const form = document.getElementById(modelName + '_form');\n        for (const element of form.elements) {\n            // HTMLElement.offsetParent returns null when the element is not\n            // rendered.\n            if (inputTags.includes(element.tagName) && !element.disabled && element.offsetParent) {\n                element.focus();\n                break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/change_form.js",
    "content": "'use strict';\n{\n    const inputTags = ['BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];\n    const modelName = document.getElementById('django-admin-form-add-constants').dataset.modelName;\n    if (modelName) {\n        const form = document.getElementById(modelName + '_form');\n        for (const element of form.elements) {\n            // HTMLElement.offsetParent returns null when the element is not\n            // rendered.\n            if (inputTags.includes(element.tagName) && !element.disabled && element.offsetParent) {\n                element.focus();\n                break;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/collapse.f84e7410290f.js",
    "content": "/*global gettext*/\n'use strict';\n{\n    window.addEventListener('load', function() {\n        // Add anchor tag for Show/Hide link\n        const fieldsets = document.querySelectorAll('fieldset.collapse');\n        for (const [i, elem] of fieldsets.entries()) {\n            // Don't hide if fields in this fieldset have errors\n            if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) {\n                elem.classList.add('collapsed');\n                const h2 = elem.querySelector('h2');\n                const link = document.createElement('a');\n                link.id = 'fieldsetcollapser' + i;\n                link.className = 'collapse-toggle';\n                link.href = '#';\n                link.textContent = gettext('Show');\n                h2.appendChild(document.createTextNode(' ('));\n                h2.appendChild(link);\n                h2.appendChild(document.createTextNode(')'));\n            }\n        }\n        // Add toggle to hide/show anchor tag\n        const toggleFunc = function(ev) {\n            if (ev.target.matches('.collapse-toggle')) {\n                ev.preventDefault();\n                ev.stopPropagation();\n                const fieldset = ev.target.closest('fieldset');\n                if (fieldset.classList.contains('collapsed')) {\n                    // Show\n                    ev.target.textContent = gettext('Hide');\n                    fieldset.classList.remove('collapsed');\n                } else {\n                    // Hide\n                    ev.target.textContent = gettext('Show');\n                    fieldset.classList.add('collapsed');\n                }\n            }\n        };\n        document.querySelectorAll('fieldset.module').forEach(function(el) {\n            el.addEventListener('click', toggleFunc);\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/collapse.js",
    "content": "/*global gettext*/\n'use strict';\n{\n    window.addEventListener('load', function() {\n        // Add anchor tag for Show/Hide link\n        const fieldsets = document.querySelectorAll('fieldset.collapse');\n        for (const [i, elem] of fieldsets.entries()) {\n            // Don't hide if fields in this fieldset have errors\n            if (elem.querySelectorAll('div.errors, ul.errorlist').length === 0) {\n                elem.classList.add('collapsed');\n                const h2 = elem.querySelector('h2');\n                const link = document.createElement('a');\n                link.id = 'fieldsetcollapser' + i;\n                link.className = 'collapse-toggle';\n                link.href = '#';\n                link.textContent = gettext('Show');\n                h2.appendChild(document.createTextNode(' ('));\n                h2.appendChild(link);\n                h2.appendChild(document.createTextNode(')'));\n            }\n        }\n        // Add toggle to hide/show anchor tag\n        const toggleFunc = function(ev) {\n            if (ev.target.matches('.collapse-toggle')) {\n                ev.preventDefault();\n                ev.stopPropagation();\n                const fieldset = ev.target.closest('fieldset');\n                if (fieldset.classList.contains('collapsed')) {\n                    // Show\n                    ev.target.textContent = gettext('Hide');\n                    fieldset.classList.remove('collapsed');\n                } else {\n                    // Hide\n                    ev.target.textContent = gettext('Show');\n                    fieldset.classList.add('collapsed');\n                }\n            }\n        };\n        document.querySelectorAll('fieldset.module').forEach(function(el) {\n            el.addEventListener('click', toggleFunc);\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/core.7e257fdf56dc.js",
    "content": "// Core JavaScript helper functions\n'use strict';\n\n// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);\nfunction quickElement() {\n    const obj = document.createElement(arguments[0]);\n    if (arguments[2]) {\n        const textNode = document.createTextNode(arguments[2]);\n        obj.appendChild(textNode);\n    }\n    const len = arguments.length;\n    for (let i = 3; i < len; i += 2) {\n        obj.setAttribute(arguments[i], arguments[i + 1]);\n    }\n    arguments[1].appendChild(obj);\n    return obj;\n}\n\n// \"a\" is reference to an object\nfunction removeChildren(a) {\n    while (a.hasChildNodes()) {\n        a.removeChild(a.lastChild);\n    }\n}\n\n// ----------------------------------------------------------------------------\n// Find-position functions by PPK\n// See https://www.quirksmode.org/js/findpos.html\n// ----------------------------------------------------------------------------\nfunction findPosX(obj) {\n    let curleft = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curleft += obj.offsetLeft - obj.scrollLeft;\n            obj = obj.offsetParent;\n        }\n    } else if (obj.x) {\n        curleft += obj.x;\n    }\n    return curleft;\n}\n\nfunction findPosY(obj) {\n    let curtop = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curtop += obj.offsetTop - obj.scrollTop;\n            obj = obj.offsetParent;\n        }\n    } else if (obj.y) {\n        curtop += obj.y;\n    }\n    return curtop;\n}\n\n//-----------------------------------------------------------------------------\n// Date object extensions\n// ----------------------------------------------------------------------------\n{\n    Date.prototype.getTwelveHours = function() {\n        return this.getHours() % 12 || 12;\n    };\n\n    Date.prototype.getTwoDigitMonth = function() {\n        return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1);\n    };\n\n    Date.prototype.getTwoDigitDate = function() {\n        return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();\n    };\n\n    Date.prototype.getTwoDigitTwelveHour = function() {\n        return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();\n    };\n\n    Date.prototype.getTwoDigitHour = function() {\n        return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();\n    };\n\n    Date.prototype.getTwoDigitMinute = function() {\n        return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();\n    };\n\n    Date.prototype.getTwoDigitSecond = function() {\n        return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();\n    };\n\n    Date.prototype.getAbbrevDayName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? '0' + this.getDay()\n            : window.CalendarNamespace.daysOfWeekAbbrev[this.getDay()];\n    };\n\n    Date.prototype.getFullDayName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? '0' + this.getDay()\n            : window.CalendarNamespace.daysOfWeek[this.getDay()];\n    };\n\n    Date.prototype.getAbbrevMonthName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? this.getTwoDigitMonth()\n            : window.CalendarNamespace.monthsOfYearAbbrev[this.getMonth()];\n    };\n\n    Date.prototype.getFullMonthName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? this.getTwoDigitMonth()\n            : window.CalendarNamespace.monthsOfYear[this.getMonth()];\n    };\n\n    Date.prototype.strftime = function(format) {\n        const fields = {\n            a: this.getAbbrevDayName(),\n            A: this.getFullDayName(),\n            b: this.getAbbrevMonthName(),\n            B: this.getFullMonthName(),\n            c: this.toString(),\n            d: this.getTwoDigitDate(),\n            H: this.getTwoDigitHour(),\n            I: this.getTwoDigitTwelveHour(),\n            m: this.getTwoDigitMonth(),\n            M: this.getTwoDigitMinute(),\n            p: (this.getHours() >= 12) ? 'PM' : 'AM',\n            S: this.getTwoDigitSecond(),\n            w: '0' + this.getDay(),\n            x: this.toLocaleDateString(),\n            X: this.toLocaleTimeString(),\n            y: ('' + this.getFullYear()).substr(2, 4),\n            Y: '' + this.getFullYear(),\n            '%': '%'\n        };\n        let result = '', i = 0;\n        while (i < format.length) {\n            if (format.charAt(i) === '%') {\n                result += fields[format.charAt(i + 1)];\n                ++i;\n            }\n            else {\n                result += format.charAt(i);\n            }\n            ++i;\n        }\n        return result;\n    };\n\n    // ----------------------------------------------------------------------------\n    // String object extensions\n    // ----------------------------------------------------------------------------\n    String.prototype.strptime = function(format) {\n        const split_format = format.split(/[.\\-/]/);\n        const date = this.split(/[.\\-/]/);\n        let i = 0;\n        let day, month, year;\n        while (i < split_format.length) {\n            switch (split_format[i]) {\n            case \"%d\":\n                day = date[i];\n                break;\n            case \"%m\":\n                month = date[i] - 1;\n                break;\n            case \"%Y\":\n                year = date[i];\n                break;\n            case \"%y\":\n                // A %y value in the range of [00, 68] is in the current\n                // century, while [69, 99] is in the previous century,\n                // according to the Open Group Specification.\n                if (parseInt(date[i], 10) >= 69) {\n                    year = date[i];\n                } else {\n                    year = (new Date(Date.UTC(date[i], 0))).getUTCFullYear() + 100;\n                }\n                break;\n            }\n            ++i;\n        }\n        // Create Date object from UTC since the parsed value is supposed to be\n        // in UTC, not local time. Also, the calendar uses UTC functions for\n        // date extraction.\n        return new Date(Date.UTC(year, month, day));\n    };\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/core.js",
    "content": "// Core JavaScript helper functions\n'use strict';\n\n// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]);\nfunction quickElement() {\n    const obj = document.createElement(arguments[0]);\n    if (arguments[2]) {\n        const textNode = document.createTextNode(arguments[2]);\n        obj.appendChild(textNode);\n    }\n    const len = arguments.length;\n    for (let i = 3; i < len; i += 2) {\n        obj.setAttribute(arguments[i], arguments[i + 1]);\n    }\n    arguments[1].appendChild(obj);\n    return obj;\n}\n\n// \"a\" is reference to an object\nfunction removeChildren(a) {\n    while (a.hasChildNodes()) {\n        a.removeChild(a.lastChild);\n    }\n}\n\n// ----------------------------------------------------------------------------\n// Find-position functions by PPK\n// See https://www.quirksmode.org/js/findpos.html\n// ----------------------------------------------------------------------------\nfunction findPosX(obj) {\n    let curleft = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curleft += obj.offsetLeft - obj.scrollLeft;\n            obj = obj.offsetParent;\n        }\n    } else if (obj.x) {\n        curleft += obj.x;\n    }\n    return curleft;\n}\n\nfunction findPosY(obj) {\n    let curtop = 0;\n    if (obj.offsetParent) {\n        while (obj.offsetParent) {\n            curtop += obj.offsetTop - obj.scrollTop;\n            obj = obj.offsetParent;\n        }\n    } else if (obj.y) {\n        curtop += obj.y;\n    }\n    return curtop;\n}\n\n//-----------------------------------------------------------------------------\n// Date object extensions\n// ----------------------------------------------------------------------------\n{\n    Date.prototype.getTwelveHours = function() {\n        return this.getHours() % 12 || 12;\n    };\n\n    Date.prototype.getTwoDigitMonth = function() {\n        return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1);\n    };\n\n    Date.prototype.getTwoDigitDate = function() {\n        return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();\n    };\n\n    Date.prototype.getTwoDigitTwelveHour = function() {\n        return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();\n    };\n\n    Date.prototype.getTwoDigitHour = function() {\n        return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();\n    };\n\n    Date.prototype.getTwoDigitMinute = function() {\n        return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();\n    };\n\n    Date.prototype.getTwoDigitSecond = function() {\n        return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();\n    };\n\n    Date.prototype.getAbbrevDayName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? '0' + this.getDay()\n            : window.CalendarNamespace.daysOfWeekAbbrev[this.getDay()];\n    };\n\n    Date.prototype.getFullDayName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? '0' + this.getDay()\n            : window.CalendarNamespace.daysOfWeek[this.getDay()];\n    };\n\n    Date.prototype.getAbbrevMonthName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? this.getTwoDigitMonth()\n            : window.CalendarNamespace.monthsOfYearAbbrev[this.getMonth()];\n    };\n\n    Date.prototype.getFullMonthName = function() {\n        return typeof window.CalendarNamespace === \"undefined\"\n            ? this.getTwoDigitMonth()\n            : window.CalendarNamespace.monthsOfYear[this.getMonth()];\n    };\n\n    Date.prototype.strftime = function(format) {\n        const fields = {\n            a: this.getAbbrevDayName(),\n            A: this.getFullDayName(),\n            b: this.getAbbrevMonthName(),\n            B: this.getFullMonthName(),\n            c: this.toString(),\n            d: this.getTwoDigitDate(),\n            H: this.getTwoDigitHour(),\n            I: this.getTwoDigitTwelveHour(),\n            m: this.getTwoDigitMonth(),\n            M: this.getTwoDigitMinute(),\n            p: (this.getHours() >= 12) ? 'PM' : 'AM',\n            S: this.getTwoDigitSecond(),\n            w: '0' + this.getDay(),\n            x: this.toLocaleDateString(),\n            X: this.toLocaleTimeString(),\n            y: ('' + this.getFullYear()).substr(2, 4),\n            Y: '' + this.getFullYear(),\n            '%': '%'\n        };\n        let result = '', i = 0;\n        while (i < format.length) {\n            if (format.charAt(i) === '%') {\n                result += fields[format.charAt(i + 1)];\n                ++i;\n            }\n            else {\n                result += format.charAt(i);\n            }\n            ++i;\n        }\n        return result;\n    };\n\n    // ----------------------------------------------------------------------------\n    // String object extensions\n    // ----------------------------------------------------------------------------\n    String.prototype.strptime = function(format) {\n        const split_format = format.split(/[.\\-/]/);\n        const date = this.split(/[.\\-/]/);\n        let i = 0;\n        let day, month, year;\n        while (i < split_format.length) {\n            switch (split_format[i]) {\n            case \"%d\":\n                day = date[i];\n                break;\n            case \"%m\":\n                month = date[i] - 1;\n                break;\n            case \"%Y\":\n                year = date[i];\n                break;\n            case \"%y\":\n                // A %y value in the range of [00, 68] is in the current\n                // century, while [69, 99] is in the previous century,\n                // according to the Open Group Specification.\n                if (parseInt(date[i], 10) >= 69) {\n                    year = date[i];\n                } else {\n                    year = (new Date(Date.UTC(date[i], 0))).getUTCFullYear() + 100;\n                }\n                break;\n            }\n            ++i;\n        }\n        // Create Date object from UTC since the parsed value is supposed to be\n        // in UTC, not local time. Also, the calendar uses UTC functions for\n        // date extraction.\n        return new Date(Date.UTC(year, month, day));\n    };\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/filters.0e360b7a9f80.js",
    "content": "/**\n * Persist changelist filters state (collapsed/expanded).\n */\n'use strict';\n{\n    // Init filters.\n    let filters = JSON.parse(sessionStorage.getItem('django.admin.filtersState'));\n\n    if (!filters) {\n        filters = {};\n    }\n\n    Object.entries(filters).forEach(([key, value]) => {\n        const detailElement = document.querySelector(`[data-filter-title='${CSS.escape(key)}']`);\n\n        // Check if the filter is present, it could be from other view.\n        if (detailElement) {\n            value ? detailElement.setAttribute('open', '') : detailElement.removeAttribute('open');\n        }\n    });\n\n    // Save filter state when clicks.\n    const details = document.querySelectorAll('details');\n    details.forEach(detail => {\n        detail.addEventListener('toggle', event => {\n            filters[`${event.target.dataset.filterTitle}`] = detail.open;\n            sessionStorage.setItem('django.admin.filtersState', JSON.stringify(filters));\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/filters.js",
    "content": "/**\n * Persist changelist filters state (collapsed/expanded).\n */\n'use strict';\n{\n    // Init filters.\n    let filters = JSON.parse(sessionStorage.getItem('django.admin.filtersState'));\n\n    if (!filters) {\n        filters = {};\n    }\n\n    Object.entries(filters).forEach(([key, value]) => {\n        const detailElement = document.querySelector(`[data-filter-title='${CSS.escape(key)}']`);\n\n        // Check if the filter is present, it could be from other view.\n        if (detailElement) {\n            value ? detailElement.setAttribute('open', '') : detailElement.removeAttribute('open');\n        }\n    });\n\n    // Save filter state when clicks.\n    const details = document.querySelectorAll('details');\n    details.forEach(detail => {\n        detail.addEventListener('toggle', event => {\n            filters[`${event.target.dataset.filterTitle}`] = detail.open;\n            sessionStorage.setItem('django.admin.filtersState', JSON.stringify(filters));\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/inlines.22d4d93c00b4.js",
    "content": "/*global DateTimeShortcuts, SelectFilter*/\n/**\n * Django admin inlines\n *\n * Based on jQuery Formset 1.1\n * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)\n * @requires jQuery 1.2.6 or later\n *\n * Copyright (c) 2009, Stanislaus Madueke\n * All rights reserved.\n *\n * Spiced up with Code from Zain Memon's GSoC project 2009\n * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip.\n *\n * Licensed under the New BSD License\n * See: https://opensource.org/licenses/bsd-license.php\n */\n'use strict';\n{\n    const $ = django.jQuery;\n    $.fn.formset = function(opts) {\n        const options = $.extend({}, $.fn.formset.defaults, opts);\n        const $this = $(this);\n        const $parent = $this.parent();\n        const updateElementIndex = function(el, prefix, ndx) {\n            const id_regex = new RegExp(\"(\" + prefix + \"-(\\\\d+|__prefix__))\");\n            const replacement = prefix + \"-\" + ndx;\n            if ($(el).prop(\"for\")) {\n                $(el).prop(\"for\", $(el).prop(\"for\").replace(id_regex, replacement));\n            }\n            if (el.id) {\n                el.id = el.id.replace(id_regex, replacement);\n            }\n            if (el.name) {\n                el.name = el.name.replace(id_regex, replacement);\n            }\n        };\n        const totalForms = $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").prop(\"autocomplete\", \"off\");\n        let nextIndex = parseInt(totalForms.val(), 10);\n        const maxForms = $(\"#id_\" + options.prefix + \"-MAX_NUM_FORMS\").prop(\"autocomplete\", \"off\");\n        const minForms = $(\"#id_\" + options.prefix + \"-MIN_NUM_FORMS\").prop(\"autocomplete\", \"off\");\n        let addButton;\n\n        /**\n         * The \"Add another MyModel\" button below the inline forms.\n         */\n        const addInlineAddButton = function() {\n            if (addButton === null) {\n                if ($this.prop(\"tagName\") === \"TR\") {\n                    // If forms are laid out as table rows, insert the\n                    // \"add\" button in a new table row:\n                    const numCols = $this.eq(-1).children().length;\n                    $parent.append('<tr class=\"' + options.addCssClass + '\"><td colspan=\"' + numCols + '\"><a href=\"#\">' + options.addText + \"</a></tr>\");\n                    addButton = $parent.find(\"tr:last a\");\n                } else {\n                    // Otherwise, insert it immediately after the last form:\n                    $this.filter(\":last\").after('<div class=\"' + options.addCssClass + '\"><a href=\"#\">' + options.addText + \"</a></div>\");\n                    addButton = $this.filter(\":last\").next().find(\"a\");\n                }\n            }\n            addButton.on('click', addInlineClickHandler);\n        };\n\n        const addInlineClickHandler = function(e) {\n            e.preventDefault();\n            const template = $(\"#\" + options.prefix + \"-empty\");\n            const row = template.clone(true);\n            row.removeClass(options.emptyCssClass)\n                .addClass(options.formCssClass)\n                .attr(\"id\", options.prefix + \"-\" + nextIndex);\n            addInlineDeleteButton(row);\n            row.find(\"*\").each(function() {\n                updateElementIndex(this, options.prefix, totalForms.val());\n            });\n            // Insert the new form when it has been fully edited.\n            row.insertBefore($(template));\n            // Update number of total forms.\n            $(totalForms).val(parseInt(totalForms.val(), 10) + 1);\n            nextIndex += 1;\n            // Hide the add button if there's a limit and it's been reached.\n            if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) {\n                addButton.parent().hide();\n            }\n            // Show the remove buttons if there are more than min_num.\n            toggleDeleteButtonVisibility(row.closest('.inline-group'));\n\n            // Pass the new form to the post-add callback, if provided.\n            if (options.added) {\n                options.added(row);\n            }\n            row.get(0).dispatchEvent(new CustomEvent(\"formset:added\", {\n                bubbles: true,\n                detail: {\n                    formsetName: options.prefix\n                }\n            }));\n        };\n\n        /**\n         * The \"X\" button that is part of every unsaved inline.\n         * (When saved, it is replaced with a \"Delete\" checkbox.)\n         */\n        const addInlineDeleteButton = function(row) {\n            if (row.is(\"tr\")) {\n                // If the forms are laid out in table rows, insert\n                // the remove button into the last table cell:\n                row.children(\":last\").append('<div><a class=\"' + options.deleteCssClass + '\" href=\"#\">' + options.deleteText + \"</a></div>\");\n            } else if (row.is(\"ul\") || row.is(\"ol\")) {\n                // If they're laid out as an ordered/unordered list,\n                // insert an <li> after the last list item:\n                row.append('<li><a class=\"' + options.deleteCssClass + '\" href=\"#\">' + options.deleteText + \"</a></li>\");\n            } else {\n                // Otherwise, just insert the remove button as the\n                // last child element of the form's container:\n                row.children(\":first\").append('<span><a class=\"' + options.deleteCssClass + '\" href=\"#\">' + options.deleteText + \"</a></span>\");\n            }\n            // Add delete handler for each row.\n            row.find(\"a.\" + options.deleteCssClass).on('click', inlineDeleteHandler.bind(this));\n        };\n\n        const inlineDeleteHandler = function(e1) {\n            e1.preventDefault();\n            const deleteButton = $(e1.target);\n            const row = deleteButton.closest('.' + options.formCssClass);\n            const inlineGroup = row.closest('.inline-group');\n            // Remove the parent form containing this button,\n            // and also remove the relevant row with non-field errors:\n            const prevRow = row.prev();\n            if (prevRow.length && prevRow.hasClass('row-form-errors')) {\n                prevRow.remove();\n            }\n            row.remove();\n            nextIndex -= 1;\n            // Pass the deleted form to the post-delete callback, if provided.\n            if (options.removed) {\n                options.removed(row);\n            }\n            document.dispatchEvent(new CustomEvent(\"formset:removed\", {\n                detail: {\n                    formsetName: options.prefix\n                }\n            }));\n            // Update the TOTAL_FORMS form count.\n            const forms = $(\".\" + options.formCssClass);\n            $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").val(forms.length);\n            // Show add button again once below maximum number.\n            if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) {\n                addButton.parent().show();\n            }\n            // Hide the remove buttons if at min_num.\n            toggleDeleteButtonVisibility(inlineGroup);\n            // Also, update names and ids for all remaining form controls so\n            // they remain in sequence:\n            let i, formCount;\n            const updateElementCallback = function() {\n                updateElementIndex(this, options.prefix, i);\n            };\n            for (i = 0, formCount = forms.length; i < formCount; i++) {\n                updateElementIndex($(forms).get(i), options.prefix, i);\n                $(forms.get(i)).find(\"*\").each(updateElementCallback);\n            }\n        };\n\n        const toggleDeleteButtonVisibility = function(inlineGroup) {\n            if ((minForms.val() !== '') && (minForms.val() - totalForms.val()) >= 0) {\n                inlineGroup.find('.inline-deletelink').hide();\n            } else {\n                inlineGroup.find('.inline-deletelink').show();\n            }\n        };\n\n        $this.each(function(i) {\n            $(this).not(\".\" + options.emptyCssClass).addClass(options.formCssClass);\n        });\n\n        // Create the delete buttons for all unsaved inlines:\n        $this.filter('.' + options.formCssClass + ':not(.has_original):not(.' + options.emptyCssClass + ')').each(function() {\n            addInlineDeleteButton($(this));\n        });\n        toggleDeleteButtonVisibility($this);\n\n        // Create the add button, initially hidden.\n        addButton = options.addButton;\n        addInlineAddButton();\n\n        // Show the add button if allowed to add more items.\n        // Note that max_num = None translates to a blank string.\n        const showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0;\n        if ($this.length && showAddButton) {\n            addButton.parent().show();\n        } else {\n            addButton.parent().hide();\n        }\n\n        return this;\n    };\n\n    /* Setup plugin defaults */\n    $.fn.formset.defaults = {\n        prefix: \"form\", // The form prefix for your django formset\n        addText: \"add another\", // Text for the add link\n        deleteText: \"remove\", // Text for the delete link\n        addCssClass: \"add-row\", // CSS class applied to the add link\n        deleteCssClass: \"delete-row\", // CSS class applied to the delete link\n        emptyCssClass: \"empty-row\", // CSS class applied to the empty row\n        formCssClass: \"dynamic-form\", // CSS class applied to each form in a formset\n        added: null, // Function called each time a new form is added\n        removed: null, // Function called each time a form is deleted\n        addButton: null // Existing add button to use\n    };\n\n\n    // Tabular inlines ---------------------------------------------------------\n    $.fn.tabularFormset = function(selector, options) {\n        const $rows = $(this);\n\n        const reinitDateTimeShortCuts = function() {\n            // Reinitialize the calendar and clock widgets by force\n            if (typeof DateTimeShortcuts !== \"undefined\") {\n                $(\".datetimeshortcuts\").remove();\n                DateTimeShortcuts.init();\n            }\n        };\n\n        const updateSelectFilter = function() {\n            // If any SelectFilter widgets are a part of the new form,\n            // instantiate a new SelectFilter instance for it.\n            if (typeof SelectFilter !== 'undefined') {\n                $('.selectfilter').each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, false);\n                });\n                $('.selectfilterstacked').each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, true);\n                });\n            }\n        };\n\n        const initPrepopulatedFields = function(row) {\n            row.find('.prepopulated_field').each(function() {\n                const field = $(this),\n                    input = field.find('input, select, textarea'),\n                    dependency_list = input.data('dependency_list') || [],\n                    dependencies = [];\n                $.each(dependency_list, function(i, field_name) {\n                    dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id'));\n                });\n                if (dependencies.length) {\n                    input.prepopulate(dependencies, input.attr('maxlength'));\n                }\n            });\n        };\n\n        $rows.formset({\n            prefix: options.prefix,\n            addText: options.addText,\n            formCssClass: \"dynamic-\" + options.prefix,\n            deleteCssClass: \"inline-deletelink\",\n            deleteText: options.deleteText,\n            emptyCssClass: \"empty-form\",\n            added: function(row) {\n                initPrepopulatedFields(row);\n                reinitDateTimeShortCuts();\n                updateSelectFilter();\n            },\n            addButton: options.addButton\n        });\n\n        return $rows;\n    };\n\n    // Stacked inlines ---------------------------------------------------------\n    $.fn.stackedFormset = function(selector, options) {\n        const $rows = $(this);\n        const updateInlineLabel = function(row) {\n            $(selector).find(\".inline_label\").each(function(i) {\n                const count = i + 1;\n                $(this).html($(this).html().replace(/(#\\d+)/g, \"#\" + count));\n            });\n        };\n\n        const reinitDateTimeShortCuts = function() {\n            // Reinitialize the calendar and clock widgets by force, yuck.\n            if (typeof DateTimeShortcuts !== \"undefined\") {\n                $(\".datetimeshortcuts\").remove();\n                DateTimeShortcuts.init();\n            }\n        };\n\n        const updateSelectFilter = function() {\n            // If any SelectFilter widgets were added, instantiate a new instance.\n            if (typeof SelectFilter !== \"undefined\") {\n                $(\".selectfilter\").each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, false);\n                });\n                $(\".selectfilterstacked\").each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, true);\n                });\n            }\n        };\n\n        const initPrepopulatedFields = function(row) {\n            row.find('.prepopulated_field').each(function() {\n                const field = $(this),\n                    input = field.find('input, select, textarea'),\n                    dependency_list = input.data('dependency_list') || [],\n                    dependencies = [];\n                $.each(dependency_list, function(i, field_name) {\n                    // Dependency in a fieldset.\n                    let field_element = row.find('.form-row .field-' + field_name);\n                    // Dependency without a fieldset.\n                    if (!field_element.length) {\n                        field_element = row.find('.form-row.field-' + field_name);\n                    }\n                    dependencies.push('#' + field_element.find('input, select, textarea').attr('id'));\n                });\n                if (dependencies.length) {\n                    input.prepopulate(dependencies, input.attr('maxlength'));\n                }\n            });\n        };\n\n        $rows.formset({\n            prefix: options.prefix,\n            addText: options.addText,\n            formCssClass: \"dynamic-\" + options.prefix,\n            deleteCssClass: \"inline-deletelink\",\n            deleteText: options.deleteText,\n            emptyCssClass: \"empty-form\",\n            removed: updateInlineLabel,\n            added: function(row) {\n                initPrepopulatedFields(row);\n                reinitDateTimeShortCuts();\n                updateSelectFilter();\n                updateInlineLabel(row);\n            },\n            addButton: options.addButton\n        });\n\n        return $rows;\n    };\n\n    $(document).ready(function() {\n        $(\".js-inline-admin-formset\").each(function() {\n            const data = $(this).data(),\n                inlineOptions = data.inlineFormset;\n            let selector;\n            switch(data.inlineType) {\n            case \"stacked\":\n                selector = inlineOptions.name + \"-group .inline-related\";\n                $(selector).stackedFormset(selector, inlineOptions.options);\n                break;\n            case \"tabular\":\n                selector = inlineOptions.name + \"-group .tabular.inline-related tbody:first > tr.form-row\";\n                $(selector).tabularFormset(selector, inlineOptions.options);\n                break;\n            }\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/inlines.js",
    "content": "/*global DateTimeShortcuts, SelectFilter*/\n/**\n * Django admin inlines\n *\n * Based on jQuery Formset 1.1\n * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)\n * @requires jQuery 1.2.6 or later\n *\n * Copyright (c) 2009, Stanislaus Madueke\n * All rights reserved.\n *\n * Spiced up with Code from Zain Memon's GSoC project 2009\n * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip.\n *\n * Licensed under the New BSD License\n * See: https://opensource.org/licenses/bsd-license.php\n */\n'use strict';\n{\n    const $ = django.jQuery;\n    $.fn.formset = function(opts) {\n        const options = $.extend({}, $.fn.formset.defaults, opts);\n        const $this = $(this);\n        const $parent = $this.parent();\n        const updateElementIndex = function(el, prefix, ndx) {\n            const id_regex = new RegExp(\"(\" + prefix + \"-(\\\\d+|__prefix__))\");\n            const replacement = prefix + \"-\" + ndx;\n            if ($(el).prop(\"for\")) {\n                $(el).prop(\"for\", $(el).prop(\"for\").replace(id_regex, replacement));\n            }\n            if (el.id) {\n                el.id = el.id.replace(id_regex, replacement);\n            }\n            if (el.name) {\n                el.name = el.name.replace(id_regex, replacement);\n            }\n        };\n        const totalForms = $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").prop(\"autocomplete\", \"off\");\n        let nextIndex = parseInt(totalForms.val(), 10);\n        const maxForms = $(\"#id_\" + options.prefix + \"-MAX_NUM_FORMS\").prop(\"autocomplete\", \"off\");\n        const minForms = $(\"#id_\" + options.prefix + \"-MIN_NUM_FORMS\").prop(\"autocomplete\", \"off\");\n        let addButton;\n\n        /**\n         * The \"Add another MyModel\" button below the inline forms.\n         */\n        const addInlineAddButton = function() {\n            if (addButton === null) {\n                if ($this.prop(\"tagName\") === \"TR\") {\n                    // If forms are laid out as table rows, insert the\n                    // \"add\" button in a new table row:\n                    const numCols = $this.eq(-1).children().length;\n                    $parent.append('<tr class=\"' + options.addCssClass + '\"><td colspan=\"' + numCols + '\"><a href=\"#\">' + options.addText + \"</a></tr>\");\n                    addButton = $parent.find(\"tr:last a\");\n                } else {\n                    // Otherwise, insert it immediately after the last form:\n                    $this.filter(\":last\").after('<div class=\"' + options.addCssClass + '\"><a href=\"#\">' + options.addText + \"</a></div>\");\n                    addButton = $this.filter(\":last\").next().find(\"a\");\n                }\n            }\n            addButton.on('click', addInlineClickHandler);\n        };\n\n        const addInlineClickHandler = function(e) {\n            e.preventDefault();\n            const template = $(\"#\" + options.prefix + \"-empty\");\n            const row = template.clone(true);\n            row.removeClass(options.emptyCssClass)\n                .addClass(options.formCssClass)\n                .attr(\"id\", options.prefix + \"-\" + nextIndex);\n            addInlineDeleteButton(row);\n            row.find(\"*\").each(function() {\n                updateElementIndex(this, options.prefix, totalForms.val());\n            });\n            // Insert the new form when it has been fully edited.\n            row.insertBefore($(template));\n            // Update number of total forms.\n            $(totalForms).val(parseInt(totalForms.val(), 10) + 1);\n            nextIndex += 1;\n            // Hide the add button if there's a limit and it's been reached.\n            if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) {\n                addButton.parent().hide();\n            }\n            // Show the remove buttons if there are more than min_num.\n            toggleDeleteButtonVisibility(row.closest('.inline-group'));\n\n            // Pass the new form to the post-add callback, if provided.\n            if (options.added) {\n                options.added(row);\n            }\n            row.get(0).dispatchEvent(new CustomEvent(\"formset:added\", {\n                bubbles: true,\n                detail: {\n                    formsetName: options.prefix\n                }\n            }));\n        };\n\n        /**\n         * The \"X\" button that is part of every unsaved inline.\n         * (When saved, it is replaced with a \"Delete\" checkbox.)\n         */\n        const addInlineDeleteButton = function(row) {\n            if (row.is(\"tr\")) {\n                // If the forms are laid out in table rows, insert\n                // the remove button into the last table cell:\n                row.children(\":last\").append('<div><a class=\"' + options.deleteCssClass + '\" href=\"#\">' + options.deleteText + \"</a></div>\");\n            } else if (row.is(\"ul\") || row.is(\"ol\")) {\n                // If they're laid out as an ordered/unordered list,\n                // insert an <li> after the last list item:\n                row.append('<li><a class=\"' + options.deleteCssClass + '\" href=\"#\">' + options.deleteText + \"</a></li>\");\n            } else {\n                // Otherwise, just insert the remove button as the\n                // last child element of the form's container:\n                row.children(\":first\").append('<span><a class=\"' + options.deleteCssClass + '\" href=\"#\">' + options.deleteText + \"</a></span>\");\n            }\n            // Add delete handler for each row.\n            row.find(\"a.\" + options.deleteCssClass).on('click', inlineDeleteHandler.bind(this));\n        };\n\n        const inlineDeleteHandler = function(e1) {\n            e1.preventDefault();\n            const deleteButton = $(e1.target);\n            const row = deleteButton.closest('.' + options.formCssClass);\n            const inlineGroup = row.closest('.inline-group');\n            // Remove the parent form containing this button,\n            // and also remove the relevant row with non-field errors:\n            const prevRow = row.prev();\n            if (prevRow.length && prevRow.hasClass('row-form-errors')) {\n                prevRow.remove();\n            }\n            row.remove();\n            nextIndex -= 1;\n            // Pass the deleted form to the post-delete callback, if provided.\n            if (options.removed) {\n                options.removed(row);\n            }\n            document.dispatchEvent(new CustomEvent(\"formset:removed\", {\n                detail: {\n                    formsetName: options.prefix\n                }\n            }));\n            // Update the TOTAL_FORMS form count.\n            const forms = $(\".\" + options.formCssClass);\n            $(\"#id_\" + options.prefix + \"-TOTAL_FORMS\").val(forms.length);\n            // Show add button again once below maximum number.\n            if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) {\n                addButton.parent().show();\n            }\n            // Hide the remove buttons if at min_num.\n            toggleDeleteButtonVisibility(inlineGroup);\n            // Also, update names and ids for all remaining form controls so\n            // they remain in sequence:\n            let i, formCount;\n            const updateElementCallback = function() {\n                updateElementIndex(this, options.prefix, i);\n            };\n            for (i = 0, formCount = forms.length; i < formCount; i++) {\n                updateElementIndex($(forms).get(i), options.prefix, i);\n                $(forms.get(i)).find(\"*\").each(updateElementCallback);\n            }\n        };\n\n        const toggleDeleteButtonVisibility = function(inlineGroup) {\n            if ((minForms.val() !== '') && (minForms.val() - totalForms.val()) >= 0) {\n                inlineGroup.find('.inline-deletelink').hide();\n            } else {\n                inlineGroup.find('.inline-deletelink').show();\n            }\n        };\n\n        $this.each(function(i) {\n            $(this).not(\".\" + options.emptyCssClass).addClass(options.formCssClass);\n        });\n\n        // Create the delete buttons for all unsaved inlines:\n        $this.filter('.' + options.formCssClass + ':not(.has_original):not(.' + options.emptyCssClass + ')').each(function() {\n            addInlineDeleteButton($(this));\n        });\n        toggleDeleteButtonVisibility($this);\n\n        // Create the add button, initially hidden.\n        addButton = options.addButton;\n        addInlineAddButton();\n\n        // Show the add button if allowed to add more items.\n        // Note that max_num = None translates to a blank string.\n        const showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0;\n        if ($this.length && showAddButton) {\n            addButton.parent().show();\n        } else {\n            addButton.parent().hide();\n        }\n\n        return this;\n    };\n\n    /* Setup plugin defaults */\n    $.fn.formset.defaults = {\n        prefix: \"form\", // The form prefix for your django formset\n        addText: \"add another\", // Text for the add link\n        deleteText: \"remove\", // Text for the delete link\n        addCssClass: \"add-row\", // CSS class applied to the add link\n        deleteCssClass: \"delete-row\", // CSS class applied to the delete link\n        emptyCssClass: \"empty-row\", // CSS class applied to the empty row\n        formCssClass: \"dynamic-form\", // CSS class applied to each form in a formset\n        added: null, // Function called each time a new form is added\n        removed: null, // Function called each time a form is deleted\n        addButton: null // Existing add button to use\n    };\n\n\n    // Tabular inlines ---------------------------------------------------------\n    $.fn.tabularFormset = function(selector, options) {\n        const $rows = $(this);\n\n        const reinitDateTimeShortCuts = function() {\n            // Reinitialize the calendar and clock widgets by force\n            if (typeof DateTimeShortcuts !== \"undefined\") {\n                $(\".datetimeshortcuts\").remove();\n                DateTimeShortcuts.init();\n            }\n        };\n\n        const updateSelectFilter = function() {\n            // If any SelectFilter widgets are a part of the new form,\n            // instantiate a new SelectFilter instance for it.\n            if (typeof SelectFilter !== 'undefined') {\n                $('.selectfilter').each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, false);\n                });\n                $('.selectfilterstacked').each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, true);\n                });\n            }\n        };\n\n        const initPrepopulatedFields = function(row) {\n            row.find('.prepopulated_field').each(function() {\n                const field = $(this),\n                    input = field.find('input, select, textarea'),\n                    dependency_list = input.data('dependency_list') || [],\n                    dependencies = [];\n                $.each(dependency_list, function(i, field_name) {\n                    dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id'));\n                });\n                if (dependencies.length) {\n                    input.prepopulate(dependencies, input.attr('maxlength'));\n                }\n            });\n        };\n\n        $rows.formset({\n            prefix: options.prefix,\n            addText: options.addText,\n            formCssClass: \"dynamic-\" + options.prefix,\n            deleteCssClass: \"inline-deletelink\",\n            deleteText: options.deleteText,\n            emptyCssClass: \"empty-form\",\n            added: function(row) {\n                initPrepopulatedFields(row);\n                reinitDateTimeShortCuts();\n                updateSelectFilter();\n            },\n            addButton: options.addButton\n        });\n\n        return $rows;\n    };\n\n    // Stacked inlines ---------------------------------------------------------\n    $.fn.stackedFormset = function(selector, options) {\n        const $rows = $(this);\n        const updateInlineLabel = function(row) {\n            $(selector).find(\".inline_label\").each(function(i) {\n                const count = i + 1;\n                $(this).html($(this).html().replace(/(#\\d+)/g, \"#\" + count));\n            });\n        };\n\n        const reinitDateTimeShortCuts = function() {\n            // Reinitialize the calendar and clock widgets by force, yuck.\n            if (typeof DateTimeShortcuts !== \"undefined\") {\n                $(\".datetimeshortcuts\").remove();\n                DateTimeShortcuts.init();\n            }\n        };\n\n        const updateSelectFilter = function() {\n            // If any SelectFilter widgets were added, instantiate a new instance.\n            if (typeof SelectFilter !== \"undefined\") {\n                $(\".selectfilter\").each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, false);\n                });\n                $(\".selectfilterstacked\").each(function(index, value) {\n                    SelectFilter.init(value.id, this.dataset.fieldName, true);\n                });\n            }\n        };\n\n        const initPrepopulatedFields = function(row) {\n            row.find('.prepopulated_field').each(function() {\n                const field = $(this),\n                    input = field.find('input, select, textarea'),\n                    dependency_list = input.data('dependency_list') || [],\n                    dependencies = [];\n                $.each(dependency_list, function(i, field_name) {\n                    // Dependency in a fieldset.\n                    let field_element = row.find('.form-row .field-' + field_name);\n                    // Dependency without a fieldset.\n                    if (!field_element.length) {\n                        field_element = row.find('.form-row.field-' + field_name);\n                    }\n                    dependencies.push('#' + field_element.find('input, select, textarea').attr('id'));\n                });\n                if (dependencies.length) {\n                    input.prepopulate(dependencies, input.attr('maxlength'));\n                }\n            });\n        };\n\n        $rows.formset({\n            prefix: options.prefix,\n            addText: options.addText,\n            formCssClass: \"dynamic-\" + options.prefix,\n            deleteCssClass: \"inline-deletelink\",\n            deleteText: options.deleteText,\n            emptyCssClass: \"empty-form\",\n            removed: updateInlineLabel,\n            added: function(row) {\n                initPrepopulatedFields(row);\n                reinitDateTimeShortCuts();\n                updateSelectFilter();\n                updateInlineLabel(row);\n            },\n            addButton: options.addButton\n        });\n\n        return $rows;\n    };\n\n    $(document).ready(function() {\n        $(\".js-inline-admin-formset\").each(function() {\n            const data = $(this).data(),\n                inlineOptions = data.inlineFormset;\n            let selector;\n            switch(data.inlineType) {\n            case \"stacked\":\n                selector = inlineOptions.name + \"-group .inline-related\";\n                $(selector).stackedFormset(selector, inlineOptions.options);\n                break;\n            case \"tabular\":\n                selector = inlineOptions.name + \"-group .tabular.inline-related tbody:first > tr.form-row\";\n                $(selector).tabularFormset(selector, inlineOptions.options);\n                break;\n            }\n        });\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/jquery.init.b7781a0897fc.js",
    "content": "/*global jQuery:false*/\n'use strict';\n/* Puts the included jQuery into our own namespace using noConflict and passing\n * it 'true'. This ensures that the included jQuery doesn't pollute the global\n * namespace (i.e. this preserves pre-existing values for both window.$ and\n * window.jQuery).\n */\nwindow.django = {jQuery: jQuery.noConflict(true)};\n"
  },
  {
    "path": "src/staticfiles/admin/js/jquery.init.js",
    "content": "/*global jQuery:false*/\n'use strict';\n/* Puts the included jQuery into our own namespace using noConflict and passing\n * it 'true'. This ensures that the included jQuery doesn't pollute the global\n * namespace (i.e. this preserves pre-existing values for both window.$ and\n * window.jQuery).\n */\nwindow.django = {jQuery: jQuery.noConflict(true)};\n"
  },
  {
    "path": "src/staticfiles/admin/js/nav_sidebar.3b9190d420b1.js",
    "content": "'use strict';\n{\n    const toggleNavSidebar = document.getElementById('toggle-nav-sidebar');\n    if (toggleNavSidebar !== null) {\n        const navSidebar = document.getElementById('nav-sidebar');\n        const main = document.getElementById('main');\n        let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen');\n        if (navSidebarIsOpen === null) {\n            navSidebarIsOpen = 'true';\n        }\n        main.classList.toggle('shifted', navSidebarIsOpen === 'true');\n        navSidebar.setAttribute('aria-expanded', navSidebarIsOpen);\n\n        toggleNavSidebar.addEventListener('click', function() {\n            if (navSidebarIsOpen === 'true') {\n                navSidebarIsOpen = 'false';\n            } else {\n                navSidebarIsOpen = 'true';\n            }\n            localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen);\n            main.classList.toggle('shifted');\n            navSidebar.setAttribute('aria-expanded', navSidebarIsOpen);\n        });\n    }\n\n    function initSidebarQuickFilter() {\n        const options = [];\n        const navSidebar = document.getElementById('nav-sidebar');\n        if (!navSidebar) {\n            return;\n        }\n        navSidebar.querySelectorAll('th[scope=row] a').forEach((container) => {\n            options.push({title: container.innerHTML, node: container});\n        });\n\n        function checkValue(event) {\n            let filterValue = event.target.value;\n            if (filterValue) {\n                filterValue = filterValue.toLowerCase();\n            }\n            if (event.key === 'Escape') {\n                filterValue = '';\n                event.target.value = ''; // clear input\n            }\n            let matches = false;\n            for (const o of options) {\n                let displayValue = '';\n                if (filterValue) {\n                    if (o.title.toLowerCase().indexOf(filterValue) === -1) {\n                        displayValue = 'none';\n                    } else {\n                        matches = true;\n                    }\n                }\n                // show/hide parent <TR>\n                o.node.parentNode.parentNode.style.display = displayValue;\n            }\n            if (!filterValue || matches) {\n                event.target.classList.remove('no-results');\n            } else {\n                event.target.classList.add('no-results');\n            }\n            sessionStorage.setItem('django.admin.navSidebarFilterValue', filterValue);\n        }\n\n        const nav = document.getElementById('nav-filter');\n        nav.addEventListener('change', checkValue, false);\n        nav.addEventListener('input', checkValue, false);\n        nav.addEventListener('keyup', checkValue, false);\n\n        const storedValue = sessionStorage.getItem('django.admin.navSidebarFilterValue');\n        if (storedValue) {\n            nav.value = storedValue;\n            checkValue({target: nav, key: ''});\n        }\n    }\n    window.initSidebarQuickFilter = initSidebarQuickFilter;\n    initSidebarQuickFilter();\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/nav_sidebar.js",
    "content": "'use strict';\n{\n    const toggleNavSidebar = document.getElementById('toggle-nav-sidebar');\n    if (toggleNavSidebar !== null) {\n        const navSidebar = document.getElementById('nav-sidebar');\n        const main = document.getElementById('main');\n        let navSidebarIsOpen = localStorage.getItem('django.admin.navSidebarIsOpen');\n        if (navSidebarIsOpen === null) {\n            navSidebarIsOpen = 'true';\n        }\n        main.classList.toggle('shifted', navSidebarIsOpen === 'true');\n        navSidebar.setAttribute('aria-expanded', navSidebarIsOpen);\n\n        toggleNavSidebar.addEventListener('click', function() {\n            if (navSidebarIsOpen === 'true') {\n                navSidebarIsOpen = 'false';\n            } else {\n                navSidebarIsOpen = 'true';\n            }\n            localStorage.setItem('django.admin.navSidebarIsOpen', navSidebarIsOpen);\n            main.classList.toggle('shifted');\n            navSidebar.setAttribute('aria-expanded', navSidebarIsOpen);\n        });\n    }\n\n    function initSidebarQuickFilter() {\n        const options = [];\n        const navSidebar = document.getElementById('nav-sidebar');\n        if (!navSidebar) {\n            return;\n        }\n        navSidebar.querySelectorAll('th[scope=row] a').forEach((container) => {\n            options.push({title: container.innerHTML, node: container});\n        });\n\n        function checkValue(event) {\n            let filterValue = event.target.value;\n            if (filterValue) {\n                filterValue = filterValue.toLowerCase();\n            }\n            if (event.key === 'Escape') {\n                filterValue = '';\n                event.target.value = ''; // clear input\n            }\n            let matches = false;\n            for (const o of options) {\n                let displayValue = '';\n                if (filterValue) {\n                    if (o.title.toLowerCase().indexOf(filterValue) === -1) {\n                        displayValue = 'none';\n                    } else {\n                        matches = true;\n                    }\n                }\n                // show/hide parent <TR>\n                o.node.parentNode.parentNode.style.display = displayValue;\n            }\n            if (!filterValue || matches) {\n                event.target.classList.remove('no-results');\n            } else {\n                event.target.classList.add('no-results');\n            }\n            sessionStorage.setItem('django.admin.navSidebarFilterValue', filterValue);\n        }\n\n        const nav = document.getElementById('nav-filter');\n        nav.addEventListener('change', checkValue, false);\n        nav.addEventListener('input', checkValue, false);\n        nav.addEventListener('keyup', checkValue, false);\n\n        const storedValue = sessionStorage.getItem('django.admin.navSidebarFilterValue');\n        if (storedValue) {\n            nav.value = storedValue;\n            checkValue({target: nav, key: ''});\n        }\n    }\n    window.initSidebarQuickFilter = initSidebarQuickFilter;\n    initSidebarQuickFilter();\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/popup_response.c6cc78ea5551.js",
    "content": "/*global opener */\n'use strict';\n{\n    const initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);\n    switch(initData.action) {\n    case 'change':\n        opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value);\n        break;\n    case 'delete':\n        opener.dismissDeleteRelatedObjectPopup(window, initData.value);\n        break;\n    default:\n        opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj);\n        break;\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/popup_response.js",
    "content": "/*global opener */\n'use strict';\n{\n    const initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);\n    switch(initData.action) {\n    case 'change':\n        opener.dismissChangeRelatedObjectPopup(window, initData.value, initData.obj, initData.new_value);\n        break;\n    case 'delete':\n        opener.dismissDeleteRelatedObjectPopup(window, initData.value);\n        break;\n    default:\n        opener.dismissAddRelatedObjectPopup(window, initData.value, initData.obj);\n        break;\n    }\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/prepopulate.bd2361dfd64d.js",
    "content": "/*global URLify*/\n'use strict';\n{\n    const $ = django.jQuery;\n    $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) {\n        /*\n            Depends on urlify.js\n            Populates a selected field with the values of the dependent fields,\n            URLifies and shortens the string.\n            dependencies - array of dependent fields ids\n            maxLength - maximum length of the URLify'd string\n            allowUnicode - Unicode support of the URLify'd string\n        */\n        return this.each(function() {\n            const prepopulatedField = $(this);\n\n            const populate = function() {\n                // Bail if the field's value has been changed by the user\n                if (prepopulatedField.data('_changed')) {\n                    return;\n                }\n\n                const values = [];\n                $.each(dependencies, function(i, field) {\n                    field = $(field);\n                    if (field.val().length > 0) {\n                        values.push(field.val());\n                    }\n                });\n                prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode));\n            };\n\n            prepopulatedField.data('_changed', false);\n            prepopulatedField.on('change', function() {\n                prepopulatedField.data('_changed', true);\n            });\n\n            if (!prepopulatedField.val()) {\n                $(dependencies.join(',')).on('keyup change focus', populate);\n            }\n        });\n    };\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/prepopulate.js",
    "content": "/*global URLify*/\n'use strict';\n{\n    const $ = django.jQuery;\n    $.fn.prepopulate = function(dependencies, maxLength, allowUnicode) {\n        /*\n            Depends on urlify.js\n            Populates a selected field with the values of the dependent fields,\n            URLifies and shortens the string.\n            dependencies - array of dependent fields ids\n            maxLength - maximum length of the URLify'd string\n            allowUnicode - Unicode support of the URLify'd string\n        */\n        return this.each(function() {\n            const prepopulatedField = $(this);\n\n            const populate = function() {\n                // Bail if the field's value has been changed by the user\n                if (prepopulatedField.data('_changed')) {\n                    return;\n                }\n\n                const values = [];\n                $.each(dependencies, function(i, field) {\n                    field = $(field);\n                    if (field.val().length > 0) {\n                        values.push(field.val());\n                    }\n                });\n                prepopulatedField.val(URLify(values.join(' '), maxLength, allowUnicode));\n            };\n\n            prepopulatedField.data('_changed', false);\n            prepopulatedField.on('change', function() {\n                prepopulatedField.data('_changed', true);\n            });\n\n            if (!prepopulatedField.val()) {\n                $(dependencies.join(',')).on('keyup change focus', populate);\n            }\n        });\n    };\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/prepopulate_init.6cac7f3105b8.js",
    "content": "'use strict';\n{\n    const $ = django.jQuery;\n    const fields = $('#django-admin-prepopulated-fields-constants').data('prepopulatedFields');\n    $.each(fields, function(index, field) {\n        $(\n            '.empty-form .form-row .field-' + field.name +\n            ', .empty-form.form-row .field-' + field.name +\n            ', .empty-form .form-row.field-' + field.name\n        ).addClass('prepopulated_field');\n        $(field.id).data('dependency_list', field.dependency_list).prepopulate(\n            field.dependency_ids, field.maxLength, field.allowUnicode\n        );\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/prepopulate_init.js",
    "content": "'use strict';\n{\n    const $ = django.jQuery;\n    const fields = $('#django-admin-prepopulated-fields-constants').data('prepopulatedFields');\n    $.each(fields, function(index, field) {\n        $(\n            '.empty-form .form-row .field-' + field.name +\n            ', .empty-form.form-row .field-' + field.name +\n            ', .empty-form .form-row.field-' + field.name\n        ).addClass('prepopulated_field');\n        $(field.id).data('dependency_list', field.dependency_list).prepopulate(\n            field.dependency_ids, field.maxLength, field.allowUnicode\n        );\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/theme.ab270f56bb9c.js",
    "content": "'use strict';\n{\n    window.addEventListener('load', function(e) {\n\n        function setTheme(mode) {\n            if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n                console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n                mode = \"auto\";\n            }\n            document.documentElement.dataset.theme = mode;\n            localStorage.setItem(\"theme\", mode);\n        }\n\n        function cycleTheme() {\n            const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n            const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n            if (prefersDark) {\n                // Auto (dark) -> Light -> Dark\n                if (currentTheme === \"auto\") {\n                    setTheme(\"light\");\n                } else if (currentTheme === \"light\") {\n                    setTheme(\"dark\");\n                } else {\n                    setTheme(\"auto\");\n                }\n            } else {\n                // Auto (light) -> Dark -> Light\n                if (currentTheme === \"auto\") {\n                    setTheme(\"dark\");\n                } else if (currentTheme === \"dark\") {\n                    setTheme(\"light\");\n                } else {\n                    setTheme(\"auto\");\n                }\n            }\n        }\n\n        function initTheme() {\n            // set theme defined in localStorage if there is one, or fallback to auto mode\n            const currentTheme = localStorage.getItem(\"theme\");\n            currentTheme ? setTheme(currentTheme) : setTheme(\"auto\");\n        }\n\n        function setupTheme() {\n            // Attach event handlers for toggling themes\n            const buttons = document.getElementsByClassName(\"theme-toggle\");\n            Array.from(buttons).forEach((btn) => {\n                btn.addEventListener(\"click\", cycleTheme);\n            });\n            initTheme();\n        }\n\n        setupTheme();\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/theme.js",
    "content": "'use strict';\n{\n    window.addEventListener('load', function(e) {\n\n        function setTheme(mode) {\n            if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n                console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n                mode = \"auto\";\n            }\n            document.documentElement.dataset.theme = mode;\n            localStorage.setItem(\"theme\", mode);\n        }\n\n        function cycleTheme() {\n            const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n            const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n            if (prefersDark) {\n                // Auto (dark) -> Light -> Dark\n                if (currentTheme === \"auto\") {\n                    setTheme(\"light\");\n                } else if (currentTheme === \"light\") {\n                    setTheme(\"dark\");\n                } else {\n                    setTheme(\"auto\");\n                }\n            } else {\n                // Auto (light) -> Dark -> Light\n                if (currentTheme === \"auto\") {\n                    setTheme(\"dark\");\n                } else if (currentTheme === \"dark\") {\n                    setTheme(\"light\");\n                } else {\n                    setTheme(\"auto\");\n                }\n            }\n        }\n\n        function initTheme() {\n            // set theme defined in localStorage if there is one, or fallback to auto mode\n            const currentTheme = localStorage.getItem(\"theme\");\n            currentTheme ? setTheme(currentTheme) : setTheme(\"auto\");\n        }\n\n        function setupTheme() {\n            // Attach event handlers for toggling themes\n            const buttons = document.getElementsByClassName(\"theme-toggle\");\n            Array.from(buttons).forEach((btn) => {\n                btn.addEventListener(\"click\", cycleTheme);\n            });\n            initTheme();\n        }\n\n        setupTheme();\n    });\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/urlify.ae970a820212.js",
    "content": "/*global XRegExp*/\n'use strict';\n{\n    const LATIN_MAP = {\n        'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE',\n        'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I',\n        'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O',\n        'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U',\n        'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à': 'a',\n        'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c',\n        'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i',\n        'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o',\n        'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u',\n        'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'\n    };\n    const LATIN_SYMBOLS_MAP = {\n        '©': '(c)'\n    };\n    const GREEK_MAP = {\n        'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h',\n        'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3',\n        'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f',\n        'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o',\n        'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y',\n        'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z',\n        'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N',\n        'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y',\n        'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I',\n        'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y'\n    };\n    const TURKISH_MAP = {\n        'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u',\n        'Ü': 'U', 'ö': 'o', 'Ö': 'O', 'ğ': 'g', 'Ğ': 'G'\n    };\n    const ROMANIAN_MAP = {\n        'ă': 'a', 'î': 'i', 'ș': 's', 'ț': 't', 'â': 'a',\n        'Ă': 'A', 'Î': 'I', 'Ș': 'S', 'Ț': 'T', 'Â': 'A'\n    };\n    const RUSSIAN_MAP = {\n        'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo',\n        'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm',\n        'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u',\n        'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '',\n        'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya',\n        'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo',\n        'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M',\n        'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U',\n        'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '',\n        'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya'\n    };\n    const UKRAINIAN_MAP = {\n        'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i',\n        'ї': 'yi', 'ґ': 'g'\n    };\n    const CZECH_MAP = {\n        'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't',\n        'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R',\n        'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z'\n    };\n    const SLOVAK_MAP = {\n        'á': 'a', 'ä': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'í': 'i', 'ľ': 'l',\n        'ĺ': 'l', 'ň': 'n', 'ó': 'o', 'ô': 'o', 'ŕ': 'r', 'š': 's', 'ť': 't',\n        'ú': 'u', 'ý': 'y', 'ž': 'z',\n        'Á': 'a', 'Ä': 'A', 'Č': 'C', 'Ď': 'D', 'É': 'E', 'Í': 'I', 'Ľ': 'L',\n        'Ĺ': 'L', 'Ň': 'N', 'Ó': 'O', 'Ô': 'O', 'Ŕ': 'R', 'Š': 'S', 'Ť': 'T',\n        'Ú': 'U', 'Ý': 'Y', 'Ž': 'Z'\n    };\n    const POLISH_MAP = {\n        'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's',\n        'ź': 'z', 'ż': 'z',\n        'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S',\n        'Ź': 'Z', 'Ż': 'Z'\n    };\n    const LATVIAN_MAP = {\n        'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l',\n        'ņ': 'n', 'š': 's', 'ū': 'u', 'ž': 'z',\n        'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L',\n        'Ņ': 'N', 'Š': 'S', 'Ū': 'U', 'Ž': 'Z'\n    };\n    const ARABIC_MAP = {\n        'أ': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'g', 'ح': 'h', 'خ': 'kh', 'د': 'd',\n        'ذ': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': 't',\n        'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'ف': 'f', 'ق': 'k', 'ك': 'k', 'ل': 'l', 'م': 'm',\n        'ن': 'n', 'ه': 'h', 'و': 'o', 'ي': 'y'\n    };\n    const LITHUANIAN_MAP = {\n        'ą': 'a', 'č': 'c', 'ę': 'e', 'ė': 'e', 'į': 'i', 'š': 's', 'ų': 'u',\n        'ū': 'u', 'ž': 'z',\n        'Ą': 'A', 'Č': 'C', 'Ę': 'E', 'Ė': 'E', 'Į': 'I', 'Š': 'S', 'Ų': 'U',\n        'Ū': 'U', 'Ž': 'Z'\n    };\n    const SERBIAN_MAP = {\n        'ђ': 'dj', 'ј': 'j', 'љ': 'lj', 'њ': 'nj', 'ћ': 'c', 'џ': 'dz',\n        'đ': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C',\n        'Џ': 'Dz', 'Đ': 'Dj'\n    };\n    const AZERBAIJANI_MAP = {\n        'ç': 'c', 'ə': 'e', 'ğ': 'g', 'ı': 'i', 'ö': 'o', 'ş': 's', 'ü': 'u',\n        'Ç': 'C', 'Ə': 'E', 'Ğ': 'G', 'İ': 'I', 'Ö': 'O', 'Ş': 'S', 'Ü': 'U'\n    };\n    const GEORGIAN_MAP = {\n        'ა': 'a', 'ბ': 'b', 'გ': 'g', 'დ': 'd', 'ე': 'e', 'ვ': 'v', 'ზ': 'z',\n        'თ': 't', 'ი': 'i', 'კ': 'k', 'ლ': 'l', 'მ': 'm', 'ნ': 'n', 'ო': 'o',\n        'პ': 'p', 'ჟ': 'j', 'რ': 'r', 'ს': 's', 'ტ': 't', 'უ': 'u', 'ფ': 'f',\n        'ქ': 'q', 'ღ': 'g', 'ყ': 'y', 'შ': 'sh', 'ჩ': 'ch', 'ც': 'c', 'ძ': 'dz',\n        'წ': 'w', 'ჭ': 'ch', 'ხ': 'x', 'ჯ': 'j', 'ჰ': 'h'\n    };\n\n    const ALL_DOWNCODE_MAPS = [\n        LATIN_MAP,\n        LATIN_SYMBOLS_MAP,\n        GREEK_MAP,\n        TURKISH_MAP,\n        ROMANIAN_MAP,\n        RUSSIAN_MAP,\n        UKRAINIAN_MAP,\n        CZECH_MAP,\n        SLOVAK_MAP,\n        POLISH_MAP,\n        LATVIAN_MAP,\n        ARABIC_MAP,\n        LITHUANIAN_MAP,\n        SERBIAN_MAP,\n        AZERBAIJANI_MAP,\n        GEORGIAN_MAP\n    ];\n\n    const Downcoder = {\n        'Initialize': function() {\n            if (Downcoder.map) { // already made\n                return;\n            }\n            Downcoder.map = {};\n            for (const lookup of ALL_DOWNCODE_MAPS) {\n                Object.assign(Downcoder.map, lookup);\n            }\n            Downcoder.regex = new RegExp(Object.keys(Downcoder.map).join('|'), 'g');\n        }\n    };\n\n    function downcode(slug) {\n        Downcoder.Initialize();\n        return slug.replace(Downcoder.regex, function(m) {\n            return Downcoder.map[m];\n        });\n    }\n\n\n    function URLify(s, num_chars, allowUnicode) {\n        // changes, e.g., \"Petty theft\" to \"petty-theft\"\n        if (!allowUnicode) {\n            s = downcode(s);\n        }\n        s = s.toLowerCase(); // convert to lowercase\n        // if downcode doesn't hit, the char will be stripped here\n        if (allowUnicode) {\n            // Keep Unicode letters including both lowercase and uppercase\n            // characters, whitespace, and dash; remove other characters.\n            s = XRegExp.replace(s, XRegExp('[^-_\\\\p{L}\\\\p{N}\\\\s]', 'g'), '');\n        } else {\n            s = s.replace(/[^-\\w\\s]/g, ''); // remove unneeded chars\n        }\n        s = s.replace(/^\\s+|\\s+$/g, ''); // trim leading/trailing spaces\n        s = s.replace(/[-\\s]+/g, '-'); // convert spaces to hyphens\n        s = s.substring(0, num_chars); // trim to first num_chars chars\n        return s.replace(/-+$/g, ''); // trim any trailing hyphens\n    }\n    window.URLify = URLify;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/urlify.js",
    "content": "/*global XRegExp*/\n'use strict';\n{\n    const LATIN_MAP = {\n        'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE',\n        'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I',\n        'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O',\n        'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U',\n        'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à': 'a',\n        'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c',\n        'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i',\n        'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o',\n        'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u',\n        'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'\n    };\n    const LATIN_SYMBOLS_MAP = {\n        '©': '(c)'\n    };\n    const GREEK_MAP = {\n        'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h',\n        'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3',\n        'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f',\n        'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o',\n        'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y',\n        'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z',\n        'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N',\n        'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y',\n        'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I',\n        'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y'\n    };\n    const TURKISH_MAP = {\n        'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u',\n        'Ü': 'U', 'ö': 'o', 'Ö': 'O', 'ğ': 'g', 'Ğ': 'G'\n    };\n    const ROMANIAN_MAP = {\n        'ă': 'a', 'î': 'i', 'ș': 's', 'ț': 't', 'â': 'a',\n        'Ă': 'A', 'Î': 'I', 'Ș': 'S', 'Ț': 'T', 'Â': 'A'\n    };\n    const RUSSIAN_MAP = {\n        'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo',\n        'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm',\n        'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u',\n        'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '',\n        'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya',\n        'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo',\n        'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M',\n        'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U',\n        'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '',\n        'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya'\n    };\n    const UKRAINIAN_MAP = {\n        'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i',\n        'ї': 'yi', 'ґ': 'g'\n    };\n    const CZECH_MAP = {\n        'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't',\n        'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R',\n        'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z'\n    };\n    const SLOVAK_MAP = {\n        'á': 'a', 'ä': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'í': 'i', 'ľ': 'l',\n        'ĺ': 'l', 'ň': 'n', 'ó': 'o', 'ô': 'o', 'ŕ': 'r', 'š': 's', 'ť': 't',\n        'ú': 'u', 'ý': 'y', 'ž': 'z',\n        'Á': 'a', 'Ä': 'A', 'Č': 'C', 'Ď': 'D', 'É': 'E', 'Í': 'I', 'Ľ': 'L',\n        'Ĺ': 'L', 'Ň': 'N', 'Ó': 'O', 'Ô': 'O', 'Ŕ': 'R', 'Š': 'S', 'Ť': 'T',\n        'Ú': 'U', 'Ý': 'Y', 'Ž': 'Z'\n    };\n    const POLISH_MAP = {\n        'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's',\n        'ź': 'z', 'ż': 'z',\n        'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S',\n        'Ź': 'Z', 'Ż': 'Z'\n    };\n    const LATVIAN_MAP = {\n        'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l',\n        'ņ': 'n', 'š': 's', 'ū': 'u', 'ž': 'z',\n        'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L',\n        'Ņ': 'N', 'Š': 'S', 'Ū': 'U', 'Ž': 'Z'\n    };\n    const ARABIC_MAP = {\n        'أ': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'g', 'ح': 'h', 'خ': 'kh', 'د': 'd',\n        'ذ': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': 't',\n        'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'ف': 'f', 'ق': 'k', 'ك': 'k', 'ل': 'l', 'م': 'm',\n        'ن': 'n', 'ه': 'h', 'و': 'o', 'ي': 'y'\n    };\n    const LITHUANIAN_MAP = {\n        'ą': 'a', 'č': 'c', 'ę': 'e', 'ė': 'e', 'į': 'i', 'š': 's', 'ų': 'u',\n        'ū': 'u', 'ž': 'z',\n        'Ą': 'A', 'Č': 'C', 'Ę': 'E', 'Ė': 'E', 'Į': 'I', 'Š': 'S', 'Ų': 'U',\n        'Ū': 'U', 'Ž': 'Z'\n    };\n    const SERBIAN_MAP = {\n        'ђ': 'dj', 'ј': 'j', 'љ': 'lj', 'њ': 'nj', 'ћ': 'c', 'џ': 'dz',\n        'đ': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C',\n        'Џ': 'Dz', 'Đ': 'Dj'\n    };\n    const AZERBAIJANI_MAP = {\n        'ç': 'c', 'ə': 'e', 'ğ': 'g', 'ı': 'i', 'ö': 'o', 'ş': 's', 'ü': 'u',\n        'Ç': 'C', 'Ə': 'E', 'Ğ': 'G', 'İ': 'I', 'Ö': 'O', 'Ş': 'S', 'Ü': 'U'\n    };\n    const GEORGIAN_MAP = {\n        'ა': 'a', 'ბ': 'b', 'გ': 'g', 'დ': 'd', 'ე': 'e', 'ვ': 'v', 'ზ': 'z',\n        'თ': 't', 'ი': 'i', 'კ': 'k', 'ლ': 'l', 'მ': 'm', 'ნ': 'n', 'ო': 'o',\n        'პ': 'p', 'ჟ': 'j', 'რ': 'r', 'ს': 's', 'ტ': 't', 'უ': 'u', 'ფ': 'f',\n        'ქ': 'q', 'ღ': 'g', 'ყ': 'y', 'შ': 'sh', 'ჩ': 'ch', 'ც': 'c', 'ძ': 'dz',\n        'წ': 'w', 'ჭ': 'ch', 'ხ': 'x', 'ჯ': 'j', 'ჰ': 'h'\n    };\n\n    const ALL_DOWNCODE_MAPS = [\n        LATIN_MAP,\n        LATIN_SYMBOLS_MAP,\n        GREEK_MAP,\n        TURKISH_MAP,\n        ROMANIAN_MAP,\n        RUSSIAN_MAP,\n        UKRAINIAN_MAP,\n        CZECH_MAP,\n        SLOVAK_MAP,\n        POLISH_MAP,\n        LATVIAN_MAP,\n        ARABIC_MAP,\n        LITHUANIAN_MAP,\n        SERBIAN_MAP,\n        AZERBAIJANI_MAP,\n        GEORGIAN_MAP\n    ];\n\n    const Downcoder = {\n        'Initialize': function() {\n            if (Downcoder.map) { // already made\n                return;\n            }\n            Downcoder.map = {};\n            for (const lookup of ALL_DOWNCODE_MAPS) {\n                Object.assign(Downcoder.map, lookup);\n            }\n            Downcoder.regex = new RegExp(Object.keys(Downcoder.map).join('|'), 'g');\n        }\n    };\n\n    function downcode(slug) {\n        Downcoder.Initialize();\n        return slug.replace(Downcoder.regex, function(m) {\n            return Downcoder.map[m];\n        });\n    }\n\n\n    function URLify(s, num_chars, allowUnicode) {\n        // changes, e.g., \"Petty theft\" to \"petty-theft\"\n        if (!allowUnicode) {\n            s = downcode(s);\n        }\n        s = s.toLowerCase(); // convert to lowercase\n        // if downcode doesn't hit, the char will be stripped here\n        if (allowUnicode) {\n            // Keep Unicode letters including both lowercase and uppercase\n            // characters, whitespace, and dash; remove other characters.\n            s = XRegExp.replace(s, XRegExp('[^-_\\\\p{L}\\\\p{N}\\\\s]', 'g'), '');\n        } else {\n            s = s.replace(/[^-\\w\\s]/g, ''); // remove unneeded chars\n        }\n        s = s.replace(/^\\s+|\\s+$/g, ''); // trim leading/trailing spaces\n        s = s.replace(/[-\\s]+/g, '-'); // convert spaces to hyphens\n        s = s.substring(0, num_chars); // trim to first num_chars chars\n        return s.replace(/-+$/g, ''); // trim any trailing hyphens\n    }\n    window.URLify = URLify;\n}\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/jquery/LICENSE.de877aa6d744.txt",
    "content": "Copyright OpenJS Foundation and other contributors, https://openjsf.org/\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/jquery/LICENSE.txt",
    "content": "Copyright OpenJS Foundation and other contributors, https://openjsf.org/\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/jquery/jquery.12e87d2f3a4c.js",
    "content": "/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/jquery/jquery.js",
    "content": "/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/jquery/jquery.min.2c872dbe60f4.js",
    "content": "/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */\n!function(e,t){\"use strict\";\"object\"==typeof module&&\"object\"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error(\"jQuery requires a window with a document\");return t(e)}:t(e)}(\"undefined\"!=typeof window?window:this,function(ie,e){\"use strict\";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return\"function\"==typeof e&&\"number\"!=typeof e.nodeType&&\"function\"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement(\"script\");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+\"\":\"object\"==typeof e||\"function\"==typeof e?n[i.call(e)]||\"object\":typeof e}var t=\"3.7.1\",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&\"length\"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&(\"array\"===n||0===t||\"number\"==typeof t&&0<t&&t-1 in e)}function fe(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}ce.fn=ce.prototype={jquery:t,constructor:ce,length:0,toArray:function(){return ae.call(this)},get:function(e){return null==e?ae.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=ce.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return ce.each(this,e)},map:function(n){return this.pushStack(ce.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(ae.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(ce.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(ce.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:oe.sort,splice:oe.splice},ce.extend=ce.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for(\"boolean\"==typeof a&&(l=a,a=arguments[s]||{},s++),\"object\"==typeof a||v(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],\"__proto__\"!==t&&a!==r&&(l&&r&&(ce.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||ce.isPlainObject(n)?n:{},i=!1,a[t]=ce.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},ce.extend({expando:\"jQuery\"+(t+Math.random()).replace(/\\D/g,\"\"),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||\"[object Object]\"!==i.call(e))&&(!(t=r(e))||\"function\"==typeof(n=ue.call(t,\"constructor\")&&t.constructor)&&o.call(n)===a)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){m(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(c(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},text:function(e){var t,n=\"\",r=0,i=e.nodeType;if(!i)while(t=e[r++])n+=ce.text(t);return 1===i||11===i?e.textContent:9===i?e.documentElement.textContent:3===i||4===i?e.nodeValue:n},makeArray:function(e,t){var n=t||[];return null!=e&&(c(Object(e))?ce.merge(n,\"string\"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:se.call(t,e,n)},isXMLDoc:function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!l.test(t||n&&n.nodeName||\"HTML\")},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(c(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:le}),\"function\"==typeof Symbol&&(ce.fn[Symbol.iterator]=oe[Symbol.iterator]),ce.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"),function(e,t){n[\"[object \"+t+\"]\"]=t.toLowerCase()});var pe=oe.pop,de=oe.sort,he=oe.splice,ge=\"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",ve=new RegExp(\"^\"+ge+\"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\"+ge+\"+$\",\"g\");ce.contains=function(e,t){var n=t&&t.parentNode;return e===n||!(!n||1!==n.nodeType||!(e.contains?e.contains(n):e.compareDocumentPosition&&16&e.compareDocumentPosition(n)))};var f=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;function p(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e}ce.escapeSelector=function(e){return(e+\"\").replace(f,p)};var ye=C,me=s;!function(){var e,b,w,o,a,T,r,C,d,i,k=me,S=ce.expando,E=0,n=0,s=W(),c=W(),u=W(),h=W(),l=function(e,t){return e===t&&(a=!0),0},f=\"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",t=\"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\"+ge+\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",p=\"\\\\[\"+ge+\"*(\"+t+\")(?:\"+ge+\"*([*^$|!~]?=)\"+ge+\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\"+t+\"))|)\"+ge+\"*\\\\]\",g=\":(\"+t+\")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\"+p+\")*)|.*)\\\\)|)\",v=new RegExp(ge+\"+\",\"g\"),y=new RegExp(\"^\"+ge+\"*,\"+ge+\"*\"),m=new RegExp(\"^\"+ge+\"*([>+~]|\"+ge+\")\"+ge+\"*\"),x=new RegExp(ge+\"|>\"),j=new RegExp(g),A=new RegExp(\"^\"+t+\"$\"),D={ID:new RegExp(\"^#(\"+t+\")\"),CLASS:new RegExp(\"^\\\\.(\"+t+\")\"),TAG:new RegExp(\"^(\"+t+\"|[*])\"),ATTR:new RegExp(\"^\"+p),PSEUDO:new RegExp(\"^\"+g),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+ge+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+ge+\"*(?:([+-]|)\"+ge+\"*(\\\\d+)|))\"+ge+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+f+\")$\",\"i\"),needsContext:new RegExp(\"^\"+ge+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+ge+\"*((?:-\\\\d)?\\\\d*)\"+ge+\"*\\\\)|)(?=[^-]|$)\",\"i\")},N=/^(?:input|select|textarea|button)$/i,q=/^h\\d$/i,L=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,H=/[+~]/,O=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+ge+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),P=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,\"fieldset\")},{dir:\"parentNode\",next:\"legend\"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+\" \"]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute(\"id\"))?s=ce.escapeSelector(s):e.setAttribute(\"id\",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?\"#\"+s:\":scope\")+\" \"+Q(l[o]);c=l.join(\",\")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute(\"id\")}}}return re(t.replace(ve,\"$1\"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,\"input\")&&e.type===t}}function _(t){return function(e){return(fe(e,\"input\")||fe(e,\"button\"))&&e.type===t}}function z(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener(\"unload\",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,\"*\")}),le.scope=$(function(){return T.querySelectorAll(\":scope\")}),le.cssHas=$(function(){try{return T.querySelector(\":has(*,:jqfake)\"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML=\"<a id='\"+S+\"' href='' disabled='disabled'></a><select id='\"+S+\"-\\r\\\\' disabled='disabled'><option selected=''></option></select>\",e.querySelectorAll(\"[selected]\").length||d.push(\"\\\\[\"+ge+\"*(?:value|\"+f+\")\"),e.querySelectorAll(\"[id~=\"+S+\"-]\").length||d.push(\"~=\"),e.querySelectorAll(\"a#\"+S+\"+*\").length||d.push(\".#.+[+~]\"),e.querySelectorAll(\":checked\").length||d.push(\":checked\"),(t=T.createElement(\"input\")).setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&d.push(\":enabled\",\":disabled\"),(t=T.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||d.push(\"\\\\[\"+ge+\"*name\"+ge+\"*=\"+ge+\"*(?:''|\\\"\\\")\")}),le.cssHas||d.push(\":has\"),d=d.length&&new RegExp(d.join(\"|\")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+\" \"]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0<I(t,T,null,[e]).length},I.contains=function(e,t){return(e.ownerDocument||e)!=T&&V(e),ce.contains(e,t)},I.attr=function(e,t){(e.ownerDocument||e)!=T&&V(e);var n=b.attrHandle[t.toLowerCase()],r=n&&ue.call(b.attrHandle,t.toLowerCase())?n(e,t,!C):void 0;return void 0!==r?r:e.getAttribute(t)},I.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},ce.uniqueSort=function(e){var t,n=[],r=0,i=0;if(a=!le.sortStable,o=!le.sortStable&&ae.call(e,0),de.call(e,l),a){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)he.call(e,n[r],1)}return o=null,e},ce.fn.uniqueSort=function(){return this.pushStack(ce.uniqueSort(ae.apply(this)))},(b=ce.expr={cacheLength:50,createPseudo:F,match:D,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||\"\").replace(O,P),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+\" \"];return t||(t=new RegExp(\"(^|\"+ge+\")\"+e+\"(\"+ge+\"|$)\"))&&s(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1<t.indexOf(i):\"$=\"===r?i&&t.slice(-i.length)===i:\"~=\"===r?-1<(\" \"+t.replace(v,\" \")+\" \").indexOf(i):\"|=\"===r&&(t===i||t.slice(0,i.length+1)===i+\"-\"))}},CHILD:function(d,e,t,h,g){var v=\"nth\"!==d.slice(0,3),y=\"last\"!==d.slice(-4),m=\"of-type\"===e;return 1===h&&0===g?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u=v!==y?\"nextSibling\":\"previousSibling\",l=e.parentNode,c=m&&e.nodeName.toLowerCase(),f=!n&&!m,p=!1;if(l){if(v){while(u){o=e;while(o=o[u])if(m?fe(o,c):1===o.nodeType)return!1;s=u=\"only\"===d&&!s&&\"nextSibling\"}return!0}if(s=[y?l.firstChild:l.lastChild],y&&f){p=(a=(r=(i=l[S]||(l[S]={}))[d]||[])[0]===E&&r[1])&&r[2],o=a&&l.childNodes[a];while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if(1===o.nodeType&&++p&&o===e){i[d]=[E,a,p];break}}else if(f&&(p=a=(r=(i=e[S]||(e[S]={}))[d]||[])[0]===E&&r[1]),!1===p)while(o=++a&&o&&o[u]||(p=a=0)||s.pop())if((m?fe(o,c):1===o.nodeType)&&++p&&(f&&((i=o[S]||(o[S]={}))[d]=[E,p]),o===e))break;return(p-=g)===h||p%h==0&&0<=p/h}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||I.error(\"unsupported pseudo: \"+e);return a[S]?a(o):1<a.length?(t=[e,e,\"\",o],b.setFilters.hasOwnProperty(e.toLowerCase())?F(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=se.call(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:F(function(e){var r=[],i=[],s=ne(e.replace(ve,\"$1\"));return s[S]?F(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:F(function(t){return function(e){return 0<I(t,e).length}}),contains:F(function(t){return t=t.replace(O,P),function(e){return-1<(e.textContent||ce.text(e)).indexOf(t)}}),lang:F(function(n){return A.test(n||\"\")||I.error(\"unsupported lang: \"+n),n=n.replace(O,P).toLowerCase(),function(e){var t;do{if(t=C?e.lang:e.getAttribute(\"xml:lang\")||e.getAttribute(\"lang\"))return(t=t.toLowerCase())===n||0===t.indexOf(n+\"-\")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=ie.location&&ie.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===r},focus:function(e){return e===function(){try{return T.activeElement}catch(e){}}()&&T.hasFocus()&&!!(e.type||e.href||~e.tabIndex)},enabled:z(!1),disabled:z(!0),checked:function(e){return fe(e,\"input\")&&!!e.checked||fe(e,\"option\")&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return q.test(e.nodeName)},input:function(e){return N.test(e.nodeName)},button:function(e){return fe(e,\"input\")&&\"button\"===e.type||fe(e,\"button\")},text:function(e){var t;return fe(e,\"input\")&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:X(function(){return[0]}),last:X(function(e,t){return[t-1]}),eq:X(function(e,t,n){return[n<0?n+t:n]}),even:X(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:X(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:X(function(e,t,n){var r;for(r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:X(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=B(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=_(e);function G(){}function Y(e,t){var n,r,i,o,a,s,u,l=c[e+\" \"];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=y.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=m.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(ve,\" \")}),a=a.slice(n.length)),b.filter)!(r=D[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?I.error(e):c(e,s).slice(0)}function Q(e){for(var t=0,n=e.length,r=\"\";t<n;t++)r+=e[t].value;return r}function J(a,e,t){var s=e.dir,u=e.next,l=u||s,c=t&&\"parentNode\"===l,f=n++;return e.first?function(e,t,n){while(e=e[s])if(1===e.nodeType||c)return a(e,t,n);return!1}:function(e,t,n){var r,i,o=[E,f];if(n){while(e=e[s])if((1===e.nodeType||c)&&a(e,t,n))return!0}else while(e=e[s])if(1===e.nodeType||c)if(i=e[S]||(e[S]={}),u&&fe(e,u))e=e[s]||e;else{if((r=i[l])&&r[0]===E&&r[1]===f)return o[2]=r[2];if((i[l]=o)[2]=a(e,t,n))return!0}return!1}}function K(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Z(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function ee(d,h,g,v,y,e){return v&&!v[S]&&(v=ee(v)),y&&!y[S]&&(y=ee(y,e)),F(function(e,t,n,r){var i,o,a,s,u=[],l=[],c=t.length,f=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)I(e,t[r],n);return n}(h||\"*\",n.nodeType?[n]:n,[]),p=!d||!e&&h?f:Z(f,u,d,n,r);if(g?g(p,s=y||(e?d:c||v)?[]:t,n,r):s=p,v){i=Z(s,l),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(s[l[o]]=!(p[l[o]]=a))}if(e){if(y||d){if(y){i=[],o=s.length;while(o--)(a=s[o])&&i.push(p[o]=a);y(null,s=[],i,r)}o=s.length;while(o--)(a=s[o])&&-1<(i=y?se.call(e,a):u[o])&&(e[i]=!(t[i]=a))}}else s=Z(s===t?s.splice(c,s.length):s),y?y(null,t,s,r):k.apply(t,s)})}function te(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[\" \"],s=o?1:0,u=J(function(e){return e===i},a,!0),l=J(function(e){return-1<se.call(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!=w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[J(K(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return ee(1<s&&K(c),1<s&&Q(e.slice(0,s-1).concat({value:\" \"===e[s-2].type?\"*\":\"\"})).replace(ve,\"$1\"),t,s<n&&te(e.slice(s,n)),n<r&&te(e=e.slice(n)),n<r&&Q(e))}c.push(t)}return K(c)}function ne(e,t){var n,v,y,m,x,r,i=[],o=[],a=u[e+\" \"];if(!a){t||(t=Y(e)),n=t.length;while(n--)(a=te(t[n]))[S]?i.push(a):o.push(a);(a=u(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l=\"0\",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG(\"*\",i),h=E+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==T||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==T||(V(o),n=!C);while(s=v[a++])if(s(o,t||T,n)){k.call(r,o);break}i&&(E=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=pe.call(r));f=Z(f)}k.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&ce.uniqueSort(r)}return i&&(E=h,w=p),c},m?F(r):r))).selector=e}return a}function re(e,t,n,r){var i,o,a,s,u,l=\"function\"==typeof e&&e,c=!r&&Y(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&\"ID\"===(a=o[0]).type&&9===t.nodeType&&C&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(O,P),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=D.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(O,P),H.test(o[0].type)&&U(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&Q(o)))return k.apply(n,r),n;break}}}return(l||ne(e,c))(r,t,!C,n,!t||H.test(e)&&U(t.parentNode)||t),n}G.prototype=b.filters=b.pseudos,b.setFilters=new G,le.sortStable=S.split(\"\").sort(l).join(\"\")===S,V(),le.sortDetached=$(function(e){return 1&e.compareDocumentPosition(T.createElement(\"fieldset\"))}),ce.find=I,ce.expr[\":\"]=ce.expr.pseudos,ce.unique=ce.uniqueSort,I.compile=ne,I.select=re,I.setDocument=V,I.tokenize=Y,I.escape=ce.escapeSelector,I.getText=ce.text,I.isXML=ce.isXMLDoc,I.selectors=ce.expr,I.support=ce.support,I.uniqueSort=ce.uniqueSort}();var d=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&ce(e).is(n))break;r.push(e)}return r},h=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},b=ce.expr.match.needsContext,w=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?ce.grep(e,function(e){return-1<se.call(n,e)!==r}):ce.filter(n,e,r)}ce.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?ce.find.matchesSelector(r,e)?[r]:[]:ce.find.matches(e,ce.grep(t,function(e){return 1===e.nodeType}))},ce.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(ce(e).filter(function(){for(t=0;t<r;t++)if(ce.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)ce.find(e,i[t],n);return 1<r?ce.uniqueSort(n):n},filter:function(e){return this.pushStack(T(this,e||[],!1))},not:function(e){return this.pushStack(T(this,e||[],!0))},is:function(e){return!!T(this,\"string\"==typeof e&&b.test(e)?ce(e):e||[],!1).length}});var k,S=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(ce.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a=\"string\"!=typeof e&&ce(e);if(!b.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&ce.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?ce.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?se.call(ce(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(ce.uniqueSort(ce.merge(this.get(),ce(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),ce.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return d(e,\"parentNode\")},parentsUntil:function(e,t,n){return d(e,\"parentNode\",n)},next:function(e){return A(e,\"nextSibling\")},prev:function(e){return A(e,\"previousSibling\")},nextAll:function(e){return d(e,\"nextSibling\")},prevAll:function(e){return d(e,\"previousSibling\")},nextUntil:function(e,t,n){return d(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return d(e,\"previousSibling\",n)},siblings:function(e){return h((e.parentNode||{}).firstChild,e)},children:function(e){return h(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(fe(e,\"template\")&&(e=e.content||e),ce.merge([],e.childNodes))}},function(r,i){ce.fn[r]=function(e,t){var n=ce.map(this,i,e);return\"Until\"!==r.slice(-5)&&(t=e),t&&\"string\"==typeof t&&(n=ce.filter(t,n)),1<this.length&&(j[r]||ce.uniqueSort(n),E.test(r)&&n.reverse()),this.pushStack(n)}});var D=/[^\\x20\\t\\r\\n\\f]+/g;function N(e){return e}function q(e){throw e}function L(e,t,n,r){var i;try{e&&v(i=e.promise)?i.call(e).done(t).fail(n):e&&v(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}ce.Callbacks=function(r){var e,n;r=\"string\"==typeof r?(e=r,n={},ce.each(e.match(D)||[],function(e,t){n[t]=!0}),n):ce.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:\"\")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){ce.each(e,function(e,t){v(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&\"string\"!==x(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return ce.each(arguments,function(e,t){var n;while(-1<(n=ce.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<ce.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t=\"\",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=\"\"),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},ce.extend({Deferred:function(e){var o=[[\"notify\",\"progress\",ce.Callbacks(\"memory\"),ce.Callbacks(\"memory\"),2],[\"resolve\",\"done\",ce.Callbacks(\"once memory\"),ce.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",ce.Callbacks(\"once memory\"),ce.Callbacks(\"once memory\"),1,\"rejected\"]],i=\"pending\",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},\"catch\":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return ce.Deferred(function(r){ce.each(o,function(e,t){var n=v(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&v(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+\"With\"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError(\"Thenable self-resolution\");t=e&&(\"object\"==typeof e||\"function\"==typeof e)&&e.then,v(t)?s?t.call(e,l(u,o,N,s),l(u,o,q,s)):(u++,t.call(e,l(u,o,N,s),l(u,o,q,s),l(u,o,N,o.notifyWith))):(a!==N&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){ce.Deferred.exceptionHook&&ce.Deferred.exceptionHook(e,t.error),u<=i+1&&(a!==q&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(ce.Deferred.getErrorHook?t.error=ce.Deferred.getErrorHook():ce.Deferred.getStackHook&&(t.error=ce.Deferred.getStackHook()),ie.setTimeout(t))}}return ce.Deferred(function(e){o[0][3].add(l(0,e,v(r)?r:N,e.notifyWith)),o[1][3].add(l(0,e,v(t)?t:N)),o[2][3].add(l(0,e,v(n)?n:q))}).promise()},promise:function(e){return null!=e?ce.extend(e,a):a}},s={};return ce.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+\"With\"](this===s?void 0:this,arguments),this},s[t[0]+\"With\"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=ae.call(arguments),o=ce.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?ae.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(L(e,o.done(a(t)).resolve,o.reject,!n),\"pending\"===o.state()||v(i[t]&&i[t].then)))return o.then();while(t--)L(i[t],a(t),o.reject);return o.promise()}});var H=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;ce.Deferred.exceptionHook=function(e,t){ie.console&&ie.console.warn&&e&&H.test(e.name)&&ie.console.warn(\"jQuery.Deferred exception: \"+e.message,e.stack,t)},ce.readyException=function(e){ie.setTimeout(function(){throw e})};var O=ce.Deferred();function P(){C.removeEventListener(\"DOMContentLoaded\",P),ie.removeEventListener(\"load\",P),ce.ready()}ce.fn.ready=function(e){return O.then(e)[\"catch\"](function(e){ce.readyException(e)}),this},ce.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--ce.readyWait:ce.isReady)||(ce.isReady=!0)!==e&&0<--ce.readyWait||O.resolveWith(C,[ce])}}),ce.ready.then=O.then,\"complete\"===C.readyState||\"loading\"!==C.readyState&&!C.documentElement.doScroll?ie.setTimeout(ce.ready):(C.addEventListener(\"DOMContentLoaded\",P),ie.addEventListener(\"load\",P));var M=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)M(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,v(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(ce(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},R=/^-ms-/,I=/-([a-z])/g;function W(e,t){return t.toUpperCase()}function F(e){return e.replace(R,\"ms-\").replace(I,W)}var $=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function B(){this.expando=ce.expando+B.uid++}B.uid=1,B.prototype={cache:function(e){var t=e[this.expando];return t||(t={},$(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if(\"string\"==typeof t)i[F(t)]=n;else for(r in t)i[F(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][F(t)]},access:function(e,t,n){return void 0===t||t&&\"string\"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(F):(t=F(t))in r?[t]:t.match(D)||[]).length;while(n--)delete r[t[n]]}(void 0===t||ce.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!ce.isEmptyObject(t)}};var _=new B,z=new B,X=/^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,U=/[A-Z]/g;function V(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r=\"data-\"+t.replace(U,\"-$&\").toLowerCase(),\"string\"==typeof(n=e.getAttribute(r))){try{n=\"true\"===(i=n)||\"false\"!==i&&(\"null\"===i?null:i===+i+\"\"?+i:X.test(i)?JSON.parse(i):i)}catch(e){}z.set(e,t,n)}else n=void 0;return n}ce.extend({hasData:function(e){return z.hasData(e)||_.hasData(e)},data:function(e,t,n){return z.access(e,t,n)},removeData:function(e,t){z.remove(e,t)},_data:function(e,t,n){return _.access(e,t,n)},_removeData:function(e,t){_.remove(e,t)}}),ce.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=z.get(o),1===o.nodeType&&!_.get(o,\"hasDataAttrs\"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf(\"data-\")&&(r=F(r.slice(5)),V(o,r,i[r]));_.set(o,\"hasDataAttrs\",!0)}return i}return\"object\"==typeof n?this.each(function(){z.set(this,n)}):M(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=z.get(o,n))?t:void 0!==(t=V(o,n))?t:void 0;this.each(function(){z.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){z.remove(this,e)})}}),ce.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=_.get(e,t),n&&(!r||Array.isArray(n)?r=_.access(e,t,ce.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=ce.queue(e,t),r=n.length,i=n.shift(),o=ce._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,function(){ce.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return _.get(e,n)||_.access(e,n,{empty:ce.Callbacks(\"once memory\").add(function(){_.remove(e,[t+\"queue\",n])})})}}),ce.fn.extend({queue:function(t,n){var e=2;return\"string\"!=typeof t&&(n=t,t=\"fx\",e--),arguments.length<e?ce.queue(this[0],t):void 0===n?this:this.each(function(){var e=ce.queue(this,t,n);ce._queueHooks(this,t),\"fx\"===t&&\"inprogress\"!==e[0]&&ce.dequeue(this,t)})},dequeue:function(e){return this.each(function(){ce.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||\"fx\",[])},promise:function(e,t){var n,r=1,i=ce.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};\"string\"!=typeof e&&(t=e,e=void 0),e=e||\"fx\";while(a--)(n=_.get(o[a],e+\"queueHooks\"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var G=/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,Y=new RegExp(\"^(?:([+-])=|)(\"+G+\")([a-z%]*)$\",\"i\"),Q=[\"Top\",\"Right\",\"Bottom\",\"Left\"],J=C.documentElement,K=function(e){return ce.contains(e.ownerDocument,e)},Z={composed:!0};J.getRootNode&&(K=function(e){return ce.contains(e.ownerDocument,e)||e.getRootNode(Z)===e.ownerDocument});var ee=function(e,t){return\"none\"===(e=t||e).style.display||\"\"===e.style.display&&K(e)&&\"none\"===ce.css(e,\"display\")};function te(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return ce.css(e,t,\"\")},u=s(),l=n&&n[3]||(ce.cssNumber[t]?\"\":\"px\"),c=e.nodeType&&(ce.cssNumber[t]||\"px\"!==l&&+u)&&Y.exec(ce.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)ce.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,ce.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ne={};function re(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?(\"none\"===n&&(l[c]=_.get(r,\"display\")||null,l[c]||(r.style.display=\"\")),\"\"===r.style.display&&ee(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ne[s])||(o=a.body.appendChild(a.createElement(s)),u=ce.css(o,\"display\"),o.parentNode.removeChild(o),\"none\"===u&&(u=\"block\"),ne[s]=u)))):\"none\"!==n&&(l[c]=\"none\",_.set(r,\"display\",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}ce.fn.extend({show:function(){return re(this,!0)},hide:function(){return re(this)},toggle:function(e){return\"boolean\"==typeof e?e?this.show():this.hide():this.each(function(){ee(this)?ce(this).show():ce(this).hide()})}});var xe,be,we=/^(?:checkbox|radio)$/i,Te=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i,Ce=/^$|^module$|\\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement(\"div\")),(be=C.createElement(\"input\")).setAttribute(\"type\",\"radio\"),be.setAttribute(\"checked\",\"checked\"),be.setAttribute(\"name\",\"t\"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML=\"<textarea>x</textarea>\",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML=\"<option></option>\",le.option=!!xe.lastChild;var ke={thead:[1,\"<table>\",\"</table>\"],col:[2,\"<table><colgroup>\",\"</colgroup></table>\"],tr:[2,\"<table><tbody>\",\"</tbody></table>\"],td:[3,\"<table><tbody><tr>\",\"</tr></tbody></table>\"],_default:[0,\"\",\"\"]};function Se(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n<r;n++)_.set(e[n],\"globalEval\",!t||_.get(t[n],\"globalEval\"))}ke.tbody=ke.tfoot=ke.colgroup=ke.caption=ke.thead,ke.th=ke.td,le.option||(ke.optgroup=ke.option=[1,\"<select multiple='multiple'>\",\"</select>\"]);var je=/<|&#?\\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if(\"object\"===x(o))ce.merge(p,o.nodeType?[o]:o);else if(je.test(o)){a=a||f.appendChild(t.createElement(\"div\")),s=(Te.exec(o)||[\"\",\"\"])[1].toLowerCase(),u=ke[s]||ke._default,a.innerHTML=u[1]+ce.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;ce.merge(p,a.childNodes),(a=f.firstChild).textContent=\"\"}else p.push(t.createTextNode(o));f.textContent=\"\",d=0;while(o=p[d++])if(r&&-1<ce.inArray(o,r))i&&i.push(o);else if(l=K(o),a=Se(f.appendChild(o),\"script\"),l&&Ee(a),n){c=0;while(o=a[c++])Ce.test(o.type||\"\")&&n.push(o)}return f}var De=/^([^.]*)(?:\\.(.+)|)/;function Ne(){return!0}function qe(){return!1}function Le(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Le(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=qe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return ce().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=ce.guid++)),e.each(function(){ce.event.add(this,t,i,r,n)})}function He(e,r,t){t?(_.set(e,r,!1),ce.event.add(e,r,{namespace:!1,handler:function(e){var t,n=_.get(this,r);if(1&e.isTrigger&&this[r]){if(n)(ce.event.special[r]||{}).delegateType&&e.stopPropagation();else if(n=ae.call(arguments),_.set(this,r,n),this[r](),t=_.get(this,r),_.set(this,r,!1),n!==t)return e.stopImmediatePropagation(),e.preventDefault(),t}else n&&(_.set(this,r,ce.event.trigger(n[0],n.slice(1),this)),e.stopPropagation(),e.isImmediatePropagationStopped=Ne)}})):void 0===_.get(e,r)&&ce.event.add(e,r,Ne)}ce.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.get(t);if($(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&ce.find.matchesSelector(J,i),n.guid||(n.guid=ce.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return\"undefined\"!=typeof ce&&ce.event.triggered!==e.type?ce.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||\"\").match(D)||[\"\"]).length;while(l--)d=g=(s=De.exec(e[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=ce.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=ce.event.special[d]||{},c=ce.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&ce.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),ce.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=_.hasData(e)&&_.get(e);if(v&&(u=v.events)){l=(t=(t||\"\").match(D)||[\"\"]).length;while(l--)if(d=g=(s=De.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){f=ce.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||ce.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)ce.event.remove(e,d+t[l],n,r,!0);ce.isEmptyObject(u)&&_.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=ce.event.fix(e),l=(_.get(this,\"events\")||Object.create(null))[u.type]||[],c=ce.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=ce.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((ce.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!(\"click\"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+\" \"]&&(a[i]=r.needsContext?-1<ce(i,this).index(l):ce.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(ce.Event.prototype,t,{enumerable:!0,configurable:!0,get:v(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[ce.expando]?e:new ce.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,\"input\")&&He(t,\"click\",!0),!1},trigger:function(e){var t=this||e;return we.test(t.type)&&t.click&&fe(t,\"input\")&&He(t,\"click\"),!0},_default:function(e){var t=e.target;return we.test(t.type)&&t.click&&fe(t,\"input\")&&_.get(t,\"click\")||fe(t,\"a\")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},ce.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},ce.Event=function(e,t){if(!(this instanceof ce.Event))return new ce.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ne:qe,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&ce.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[ce.expando]=!0},ce.Event.prototype={constructor:ce.Event,isDefaultPrevented:qe,isPropagationStopped:qe,isImmediatePropagationStopped:qe,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ne,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ne,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ne,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},ce.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,\"char\":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},ce.event.addProp),ce.each({focus:\"focusin\",blur:\"focusout\"},function(r,i){function o(e){if(C.documentMode){var t=_.get(this,\"handle\"),n=ce.event.fix(e);n.type=\"focusin\"===e.type?\"focus\":\"blur\",n.isSimulated=!0,t(e),n.target===n.currentTarget&&t(n)}else ce.event.simulate(i,e.target,ce.event.fix(e))}ce.event.special[r]={setup:function(){var e;if(He(this,r,!0),!C.documentMode)return!1;(e=_.get(this,i))||this.addEventListener(i,o),_.set(this,i,(e||0)+1)},trigger:function(){return He(this,r),!0},teardown:function(){var e;if(!C.documentMode)return!1;(e=_.get(this,i)-1)?_.set(this,i,e):(this.removeEventListener(i,o),_.remove(this,i))},_default:function(e){return _.get(e.target,r)},delegateType:i},ce.event.special[i]={setup:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i);n||(C.documentMode?this.addEventListener(i,o):e.addEventListener(r,o,!0)),_.set(t,i,(n||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=C.documentMode?this:e,n=_.get(t,i)-1;n?_.set(t,i,n):(C.documentMode?this.removeEventListener(i,o):e.removeEventListener(r,o,!0),_.remove(t,i))}}}),ce.each({mouseenter:\"mouseover\",mouseleave:\"mouseout\",pointerenter:\"pointerover\",pointerleave:\"pointerout\"},function(e,i){ce.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||ce.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),ce.fn.extend({on:function(e,t,n,r){return Le(this,e,t,n,r)},one:function(e,t,n,r){return Le(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,ce(e.delegateTarget).off(r.namespace?r.origType+\".\"+r.namespace:r.origType,r.selector,r.handler),this;if(\"object\"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&\"function\"!=typeof t||(n=t,t=void 0),!1===n&&(n=qe),this.each(function(){ce.event.remove(this,e,n,t)})}});var Oe=/<script|<style|<link/i,Pe=/checked\\s*(?:[^=]|=\\s*.checked.)/i,Me=/^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;function Re(e,t){return fe(e,\"table\")&&fe(11!==t.nodeType?t:t.firstChild,\"tr\")&&ce(e).children(\"tbody\")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function We(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n<r;n++)ce.event.add(t,i,s[i][n]);z.hasData(e)&&(o=z.access(e),a=ce.extend({},o),z.set(t,a))}}function $e(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=v(d);if(h||1<f&&\"string\"==typeof d&&!le.checkClone&&Pe.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),$e(t,r,i,o)});if(f&&(t=(e=Ae(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=ce.map(Se(e,\"script\"),Ie)).length;c<f;c++)u=e,c!==p&&(u=ce.clone(u,!0,!0),s&&ce.merge(a,Se(u,\"script\"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,ce.map(a,We),c=0;c<s;c++)u=a[c],Ce.test(u.type||\"\")&&!_.access(u,\"globalEval\")&&ce.contains(l,u)&&(u.src&&\"module\"!==(u.type||\"\").toLowerCase()?ce._evalUrl&&!u.noModule&&ce._evalUrl(u.src,{nonce:u.nonce||u.getAttribute(\"nonce\")},l):m(u.textContent.replace(Me,\"\"),u,l))}return n}function Be(e,t,n){for(var r,i=t?ce.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||ce.cleanData(Se(r)),r.parentNode&&(n&&K(r)&&Ee(Se(r,\"script\")),r.parentNode.removeChild(r));return e}ce.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=K(e);if(!(le.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||ce.isXMLDoc(e)))for(a=Se(c),r=0,i=(o=Se(e)).length;r<i;r++)s=o[r],u=a[r],void 0,\"input\"===(l=u.nodeName.toLowerCase())&&we.test(s.type)?u.checked=s.checked:\"input\"!==l&&\"textarea\"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||Se(e),a=a||Se(c),r=0,i=o.length;r<i;r++)Fe(o[r],a[r]);else Fe(e,c);return 0<(a=Se(c,\"script\")).length&&Ee(a,!f&&Se(e,\"script\")),c},cleanData:function(e){for(var t,n,r,i=ce.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[_.expando]){if(t.events)for(r in t.events)i[r]?ce.event.remove(n,r):ce.removeEvent(n,r,t.handle);n[_.expando]=void 0}n[z.expando]&&(n[z.expando]=void 0)}}}),ce.fn.extend({detach:function(e){return Be(this,e,!0)},remove:function(e){return Be(this,e)},text:function(e){return M(this,function(e){return void 0===e?ce.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return $e(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Re(this,e).appendChild(e)})},prepend:function(){return $e(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Re(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return $e(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(ce.cleanData(Se(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return ce.clone(this,e,t)})},html:function(e){return M(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Oe.test(e)&&!ke[(Te.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=ce.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(ce.cleanData(Se(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return $e(this,arguments,function(e){var t=this.parentNode;ce.inArray(this,n)<0&&(ce.cleanData(Se(this)),t&&t.replaceChild(e,this))},n)}}),ce.each({appendTo:\"append\",prependTo:\"prepend\",insertBefore:\"before\",insertAfter:\"after\",replaceAll:\"replaceWith\"},function(e,a){ce.fn[e]=function(e){for(var t,n=[],r=ce(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),ce(r[o])[a](t),s.apply(n,t.get());return this.pushStack(n)}});var _e=new RegExp(\"^(\"+G+\")(?!px)[a-z%]+$\",\"i\"),ze=/^--/,Xe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=ie),t.getComputedStyle(e)},Ue=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ve=new RegExp(Q.join(\"|\"),\"i\");function Ge(e,t,n){var r,i,o,a,s=ze.test(t),u=e.style;return(n=n||Xe(e))&&(a=n.getPropertyValue(t)||n[t],s&&a&&(a=a.replace(ve,\"$1\")||void 0),\"\"!==a||K(e)||(a=ce.style(e,t)),!le.pixelBoxStyles()&&_e.test(a)&&Ve.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=n.width,u.width=r,u.minWidth=i,u.maxWidth=o)),void 0!==a?a+\"\":a}function Ye(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText=\"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0\",l.style.cssText=\"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%\",J.appendChild(u).appendChild(l);var e=ie.getComputedStyle(l);n=\"1%\"!==e.top,s=12===t(e.marginLeft),l.style.right=\"60%\",o=36===t(e.right),r=36===t(e.width),l.style.position=\"absolute\",i=12===t(l.offsetWidth/3),J.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=C.createElement(\"div\"),l=C.createElement(\"div\");l.style&&(l.style.backgroundClip=\"content-box\",l.cloneNode(!0).style.backgroundClip=\"\",le.clearCloneStyle=\"content-box\"===l.style.backgroundClip,ce.extend(le,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=C.createElement(\"table\"),t=C.createElement(\"tr\"),n=C.createElement(\"div\"),e.style.cssText=\"position:absolute;left:-11111px;border-collapse:separate\",t.style.cssText=\"box-sizing:content-box;border:1px solid\",t.style.height=\"1px\",n.style.height=\"9px\",n.style.display=\"block\",J.appendChild(e).appendChild(t).appendChild(n),r=ie.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,J.removeChild(e)),a}}))}();var Qe=[\"Webkit\",\"Moz\",\"ms\"],Je=C.createElement(\"div\").style,Ke={};function Ze(e){var t=ce.cssProps[e]||Ke[e];return t||(e in Je?e:Ke[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Qe.length;while(n--)if((e=Qe[n]+t)in Je)return e}(e)||e)}var et=/^(none|table(?!-c[ea]).+)/,tt={position:\"absolute\",visibility:\"hidden\",display:\"block\"},nt={letterSpacing:\"0\",fontWeight:\"400\"};function rt(e,t,n){var r=Y.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||\"px\"):t}function it(e,t,n,r,i,o){var a=\"width\"===t?1:0,s=0,u=0,l=0;if(n===(r?\"border\":\"content\"))return 0;for(;a<4;a+=2)\"margin\"===n&&(l+=ce.css(e,n+Q[a],!0,i)),r?(\"content\"===n&&(u-=ce.css(e,\"padding\"+Q[a],!0,i)),\"margin\"!==n&&(u-=ce.css(e,\"border\"+Q[a]+\"Width\",!0,i))):(u+=ce.css(e,\"padding\"+Q[a],!0,i),\"padding\"!==n?u+=ce.css(e,\"border\"+Q[a]+\"Width\",!0,i):s+=ce.css(e,\"border\"+Q[a]+\"Width\",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u+l}function ot(e,t,n){var r=Xe(e),i=(!le.boxSizingReliable()||n)&&\"border-box\"===ce.css(e,\"boxSizing\",!1,r),o=i,a=Ge(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(_e.test(a)){if(!n)return a;a=\"auto\"}return(!le.boxSizingReliable()&&i||!le.reliableTrDimensions()&&fe(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===ce.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===ce.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+it(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function at(e,t,n,r,i){return new at.prototype.init(e,t,n,r,i)}ce.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Ge(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,aspectRatio:!0,borderImageSlice:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,scale:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeMiterlimit:!0,strokeOpacity:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=F(t),u=ze.test(t),l=e.style;if(u||(t=Ze(s)),a=ce.cssHooks[t]||ce.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=Y.exec(n))&&i[1]&&(n=te(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(ce.cssNumber[s]?\"\":\"px\")),le.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=F(t);return ze.test(t)||(t=Ze(s)),(a=ce.cssHooks[t]||ce.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Ge(e,t,r)),\"normal\"===i&&t in nt&&(i=nt[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),ce.each([\"height\",\"width\"],function(e,u){ce.cssHooks[u]={get:function(e,t,n){if(t)return!et.test(ce.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?ot(e,u,n):Ue(e,tt,function(){return ot(e,u,n)})},set:function(e,t,n){var r,i=Xe(e),o=!le.scrollboxSize()&&\"absolute\"===i.position,a=(o||n)&&\"border-box\"===ce.css(e,\"boxSizing\",!1,i),s=n?it(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e[\"offset\"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-it(e,u,\"border\",!1,i)-.5)),s&&(r=Y.exec(t))&&\"px\"!==(r[3]||\"px\")&&(e.style[u]=t,t=ce.css(e,u)),rt(0,t,s)}}}),ce.cssHooks.marginLeft=Ye(le.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Ge(e,\"marginLeft\"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+\"px\"}),ce.each({margin:\"\",padding:\"\",border:\"Width\"},function(i,o){ce.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r=\"string\"==typeof e?e.split(\" \"):[e];t<4;t++)n[i+Q[t]+o]=r[t]||r[t-2]||r[0];return n}},\"margin\"!==i&&(ce.cssHooks[i+o].set=rt)}),ce.fn.extend({css:function(e,t){return M(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Xe(e),i=t.length;a<i;a++)o[t[a]]=ce.css(e,t[a],!1,r);return o}return void 0!==n?ce.style(e,t,n):ce.css(e,t)},e,t,1<arguments.length)}}),((ce.Tween=at).prototype={constructor:at,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||ce.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(ce.cssNumber[n]?\"\":\"px\")},cur:function(){var e=at.propHooks[this.prop];return e&&e.get?e.get(this):at.propHooks._default.get(this)},run:function(e){var t,n=at.propHooks[this.prop];return this.options.duration?this.pos=t=ce.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):at.propHooks._default.set(this),this}}).init.prototype=at.prototype,(at.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=ce.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){ce.fx.step[e.prop]?ce.fx.step[e.prop](e):1!==e.elem.nodeType||!ce.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:ce.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=at.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},ce.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},ce.fx=at.prototype.init,ce.fx.step={};var st,ut,lt,ct,ft=/^(?:toggle|show|hide)$/,pt=/queueHooks$/;function dt(){ut&&(!1===C.hidden&&ie.requestAnimationFrame?ie.requestAnimationFrame(dt):ie.setTimeout(dt,ce.fx.interval),ce.fx.tick())}function ht(){return ie.setTimeout(function(){st=void 0}),st=Date.now()}function gt(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=Q[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function vt(e,t,n){for(var r,i=(yt.tweeners[t]||[]).concat(yt.tweeners[\"*\"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function yt(o,e,t){var n,a,r=0,i=yt.prefilters.length,s=ce.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=st||ht(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:ce.extend({},e),opts:ce.extend(!0,{specialEasing:{},easing:ce.easing._default},t),originalProperties:e,originalOptions:t,startTime:st||ht(),duration:t.duration,tweens:[],createTween:function(e,t){var n=ce.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=F(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=ce.cssHooks[r])&&\"expand\"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=yt.prefilters[r].call(l,o,c,l.opts))return v(n.stop)&&(ce._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return ce.map(c,vt,l),v(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),ce.fx.timer(ce.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}ce.Animation=ce.extend(yt,{tweeners:{\"*\":[function(e,t){var n=this.createTween(e,t);return te(n.elem,e,Y.exec(t),n),n}]},tweener:function(e,t){v(e)?(t=e,e=[\"*\"]):e=e.match(D);for(var n,r=0,i=e.length;r<i;r++)n=e[r],yt.tweeners[n]=yt.tweeners[n]||[],yt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f=\"width\"in t||\"height\"in t,p=this,d={},h=e.style,g=e.nodeType&&ee(e),v=_.get(e,\"fxshow\");for(r in n.queue||(null==(a=ce._queueHooks(e,\"fx\")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,ce.queue(e,\"fx\").length||a.empty.fire()})})),t)if(i=t[r],ft.test(i)){if(delete t[r],o=o||\"toggle\"===i,i===(g?\"hide\":\"show\")){if(\"show\"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||ce.style(e,r)}if((u=!ce.isEmptyObject(t))||!ce.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=_.get(e,\"display\")),\"none\"===(c=ce.css(e,\"display\"))&&(l?c=l:(re([e],!0),l=e.style.display||l,c=ce.css(e,\"display\"),re([e]))),(\"inline\"===c||\"inline-block\"===c&&null!=l)&&\"none\"===ce.css(e,\"float\")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l=\"none\"===c?\"\":c)),h.display=\"inline-block\")),n.overflow&&(h.overflow=\"hidden\",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?\"hidden\"in v&&(g=v.hidden):v=_.access(e,\"fxshow\",{display:l}),o&&(v.hidden=!g),g&&re([e],!0),p.done(function(){for(r in g||re([e]),_.remove(e,\"fxshow\"),d)ce.style(e,r,d[r])})),u=vt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?yt.prefilters.unshift(e):yt.prefilters.push(e)}}),ce.speed=function(e,t,n){var r=e&&\"object\"==typeof e?ce.extend({},e):{complete:n||!n&&t||v(e)&&e,duration:e,easing:n&&t||t&&!v(t)&&t};return ce.fx.off?r.duration=0:\"number\"!=typeof r.duration&&(r.duration in ce.fx.speeds?r.duration=ce.fx.speeds[r.duration]:r.duration=ce.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue=\"fx\"),r.old=r.complete,r.complete=function(){v(r.old)&&r.old.call(this),r.queue&&ce.dequeue(this,r.queue)},r},ce.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ee).css(\"opacity\",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=ce.isEmptyObject(t),o=ce.speed(e,n,r),a=function(){var e=yt(this,ce.extend({},t),o);(i||_.get(this,\"finish\"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return\"string\"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||\"fx\",[]),this.each(function(){var e=!0,t=null!=i&&i+\"queueHooks\",n=ce.timers,r=_.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&pt.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||ce.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||\"fx\"),this.each(function(){var e,t=_.get(this),n=t[a+\"queue\"],r=t[a+\"queueHooks\"],i=ce.timers,o=n?n.length:0;for(t.finish=!0,ce.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),ce.each([\"toggle\",\"show\",\"hide\"],function(e,r){var i=ce.fn[r];ce.fn[r]=function(e,t,n){return null==e||\"boolean\"==typeof e?i.apply(this,arguments):this.animate(gt(r,!0),e,t,n)}}),ce.each({slideDown:gt(\"show\"),slideUp:gt(\"hide\"),slideToggle:gt(\"toggle\"),fadeIn:{opacity:\"show\"},fadeOut:{opacity:\"hide\"},fadeToggle:{opacity:\"toggle\"}},function(e,r){ce.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),ce.timers=[],ce.fx.tick=function(){var e,t=0,n=ce.timers;for(st=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||ce.fx.stop(),st=void 0},ce.fx.timer=function(e){ce.timers.push(e),ce.fx.start()},ce.fx.interval=13,ce.fx.start=function(){ut||(ut=!0,dt())},ce.fx.stop=function(){ut=null},ce.fx.speeds={slow:600,fast:200,_default:400},ce.fn.delay=function(r,e){return r=ce.fx&&ce.fx.speeds[r]||r,e=e||\"fx\",this.queue(e,function(e,t){var n=ie.setTimeout(e,r);t.stop=function(){ie.clearTimeout(n)}})},lt=C.createElement(\"input\"),ct=C.createElement(\"select\").appendChild(C.createElement(\"option\")),lt.type=\"checkbox\",le.checkOn=\"\"!==lt.value,le.optSelected=ct.selected,(lt=C.createElement(\"input\")).value=\"t\",lt.type=\"radio\",le.radioValue=\"t\"===lt.value;var mt,xt=ce.expr.attrHandle;ce.fn.extend({attr:function(e,t){return M(this,ce.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){ce.removeAttr(this,e)})}}),ce.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return\"undefined\"==typeof e.getAttribute?ce.prop(e,t,n):(1===o&&ce.isXMLDoc(e)||(i=ce.attrHooks[t.toLowerCase()]||(ce.expr.match.bool.test(t)?mt:void 0)),void 0!==n?null===n?void ce.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=ce.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!le.radioValue&&\"radio\"===t&&fe(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(D);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),mt={set:function(e,t,n){return!1===t?ce.removeAttr(e,n):e.setAttribute(n,n),n}},ce.each(ce.expr.match.bool.source.match(/\\w+/g),function(e,t){var a=xt[t]||ce.find.attr;xt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=xt[o],xt[o]=r,r=null!=a(e,t,n)?o:null,xt[o]=i),r}});var bt=/^(?:input|select|textarea|button)$/i,wt=/^(?:a|area)$/i;function Tt(e){return(e.match(D)||[]).join(\" \")}function Ct(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function kt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(D)||[]}ce.fn.extend({prop:function(e,t){return M(this,ce.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[ce.propFix[e]||e]})}}),ce.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&ce.isXMLDoc(e)||(t=ce.propFix[t]||t,i=ce.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=ce.find.attr(e,\"tabindex\");return t?parseInt(t,10):bt.test(e.nodeName)||wt.test(e.nodeName)&&e.href?0:-1}}},propFix:{\"for\":\"htmlFor\",\"class\":\"className\"}}),le.optSelected||(ce.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),ce.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],function(){ce.propFix[this.toLowerCase()]=this}),ce.fn.extend({addClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).addClass(t.call(this,e,Ct(this)))}):(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&\" \"+Tt(r)+\" \"){for(o=0;o<e.length;o++)i=e[o],n.indexOf(\" \"+i+\" \")<0&&(n+=i+\" \");a=Tt(n),r!==a&&this.setAttribute(\"class\",a)}}):this},removeClass:function(t){var e,n,r,i,o,a;return v(t)?this.each(function(e){ce(this).removeClass(t.call(this,e,Ct(this)))}):arguments.length?(e=kt(t)).length?this.each(function(){if(r=Ct(this),n=1===this.nodeType&&\" \"+Tt(r)+\" \"){for(o=0;o<e.length;o++){i=e[o];while(-1<n.indexOf(\" \"+i+\" \"))n=n.replace(\" \"+i+\" \",\" \")}a=Tt(n),r!==a&&this.setAttribute(\"class\",a)}}):this:this.attr(\"class\",\"\")},toggleClass:function(t,n){var e,r,i,o,a=typeof t,s=\"string\"===a||Array.isArray(t);return v(t)?this.each(function(e){ce(this).toggleClass(t.call(this,e,Ct(this),n),n)}):\"boolean\"==typeof n&&s?n?this.addClass(t):this.removeClass(t):(e=kt(t),this.each(function(){if(s)for(o=ce(this),i=0;i<e.length;i++)r=e[i],o.hasClass(r)?o.removeClass(r):o.addClass(r);else void 0!==t&&\"boolean\"!==a||((r=Ct(this))&&_.set(this,\"__className__\",r),this.setAttribute&&this.setAttribute(\"class\",r||!1===t?\"\":_.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;t=\" \"+e+\" \";while(n=this[r++])if(1===n.nodeType&&-1<(\" \"+Tt(Ct(n))+\" \").indexOf(t))return!0;return!1}});var St=/\\r/g;ce.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=v(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,ce(this).val()):n)?t=\"\":\"number\"==typeof t?t+=\"\":Array.isArray(t)&&(t=ce.map(t,function(e){return null==e?\"\":e+\"\"})),(r=ce.valHooks[this.type]||ce.valHooks[this.nodeName.toLowerCase()])&&\"set\"in r&&void 0!==r.set(this,t,\"value\")||(this.value=t))})):t?(r=ce.valHooks[t.type]||ce.valHooks[t.nodeName.toLowerCase()])&&\"get\"in r&&void 0!==(e=r.get(t,\"value\"))?e:\"string\"==typeof(e=t.value)?e.replace(St,\"\"):null==e?\"\":e:void 0}}),ce.extend({valHooks:{option:{get:function(e){var t=ce.find.attr(e,\"value\");return null!=t?t:Tt(ce.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!fe(n.parentNode,\"optgroup\"))){if(t=ce(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=ce.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<ce.inArray(ce.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),ce.each([\"radio\",\"checkbox\"],function(){ce.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<ce.inArray(ce(e).val(),t)}},le.checkOn||(ce.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})});var Et=ie.location,jt={guid:Date.now()},At=/\\?/;ce.parseXML=function(e){var t,n;if(!e||\"string\"!=typeof e)return null;try{t=(new ie.DOMParser).parseFromString(e,\"text/xml\")}catch(e){}return n=t&&t.getElementsByTagName(\"parsererror\")[0],t&&!n||ce.error(\"Invalid XML: \"+(n?ce.map(n.childNodes,function(e){return e.textContent}).join(\"\\n\"):e)),t};var Dt=/^(?:focusinfocus|focusoutblur)$/,Nt=function(e){e.stopPropagation()};ce.extend(ce.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||C],d=ue.call(e,\"type\")?e.type:e,h=ue.call(e,\"namespace\")?e.namespace.split(\".\"):[];if(o=f=a=n=n||C,3!==n.nodeType&&8!==n.nodeType&&!Dt.test(d+ce.event.triggered)&&(-1<d.indexOf(\".\")&&(d=(h=d.split(\".\")).shift(),h.sort()),u=d.indexOf(\":\")<0&&\"on\"+d,(e=e[ce.expando]?e:new ce.Event(d,\"object\"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join(\".\"),e.rnamespace=e.namespace?new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:ce.makeArray(t,[e]),c=ce.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!y(n)){for(s=c.delegateType||d,Dt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||C)&&p.push(a.defaultView||a.parentWindow||ie)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(_.get(o,\"events\")||Object.create(null))[e.type]&&_.get(o,\"handle\"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&$(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!$(n)||u&&v(n[d])&&!y(n)&&((a=n[u])&&(n[u]=null),ce.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Nt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Nt),ce.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=ce.extend(new ce.Event,n,{type:e,isSimulated:!0});ce.event.trigger(r,null,t)}}),ce.fn.extend({trigger:function(e,t){return this.each(function(){ce.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return ce.event.trigger(e,t,n,!0)}});var qt=/\\[\\]$/,Lt=/\\r?\\n/g,Ht=/^(?:submit|button|image|reset|file)$/i,Ot=/^(?:input|select|textarea|keygen)/i;function Pt(n,e,r,i){var t;if(Array.isArray(e))ce.each(e,function(e,t){r||qt.test(n)?i(n,t):Pt(n+\"[\"+(\"object\"==typeof t&&null!=t?e:\"\")+\"]\",t,r,i)});else if(r||\"object\"!==x(e))i(n,e);else for(t in e)Pt(n+\"[\"+t+\"]\",e[t],r,i)}ce.param=function(e,t){var n,r=[],i=function(e,t){var n=v(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!ce.isPlainObject(e))ce.each(e,function(){i(this.name,this.value)});else for(n in e)Pt(n,e[n],t,i);return r.join(\"&\")},ce.fn.extend({serialize:function(){return ce.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=ce.prop(this,\"elements\");return e?ce.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!ce(this).is(\":disabled\")&&Ot.test(this.nodeName)&&!Ht.test(e)&&(this.checked||!we.test(e))}).map(function(e,t){var n=ce(this).val();return null==n?null:Array.isArray(n)?ce.map(n,function(e){return{name:t.name,value:e.replace(Lt,\"\\r\\n\")}}):{name:t.name,value:n.replace(Lt,\"\\r\\n\")}}).get()}});var Mt=/%20/g,Rt=/#.*$/,It=/([?&])_=[^&]*/,Wt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Ft=/^(?:GET|HEAD)$/,$t=/^\\/\\//,Bt={},_t={},zt=\"*/\".concat(\"*\"),Xt=C.createElement(\"a\");function Ut(o){return function(e,t){\"string\"!=typeof e&&(t=e,e=\"*\");var n,r=0,i=e.toLowerCase().match(D)||[];if(v(t))while(n=i[r++])\"+\"===n[0]?(n=n.slice(1)||\"*\",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Vt(t,i,o,a){var s={},u=t===_t;function l(e){var r;return s[e]=!0,ce.each(t[e]||[],function(e,t){var n=t(i,o,a);return\"string\"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s[\"*\"]&&l(\"*\")}function Gt(e,t){var n,r,i=ce.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&ce.extend(!0,e,r),e}Xt.href=Et.href,ce.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":zt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":ce.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,ce.ajaxSettings),t):Gt(ce.ajaxSettings,e)},ajaxPrefilter:Ut(Bt),ajaxTransport:Ut(_t),ajax:function(e,t){\"object\"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=ce.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?ce(y):ce.event,x=ce.Deferred(),b=ce.Callbacks(\"once memory\"),w=v.statusCode||{},a={},s={},u=\"canceled\",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Wt.exec(p))n[t[1].toLowerCase()+\" \"]=(n[t[1].toLowerCase()+\" \"]||[]).concat(t[2])}t=n[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+\"\").replace($t,Et.protocol+\"//\"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||\"*\").toLowerCase().match(D)||[\"\"],null==v.crossDomain){r=C.createElement(\"a\");try{r.href=v.url,r.href=r.href,v.crossDomain=Xt.protocol+\"//\"+Xt.host!=r.protocol+\"//\"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&\"string\"!=typeof v.data&&(v.data=ce.param(v.data,v.traditional)),Vt(Bt,v,t,T),h)return T;for(i in(g=ce.event&&v.global)&&0==ce.active++&&ce.event.trigger(\"ajaxStart\"),v.type=v.type.toUpperCase(),v.hasContent=!Ft.test(v.type),f=v.url.replace(Rt,\"\"),v.hasContent?v.data&&v.processData&&0===(v.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(v.data=v.data.replace(Mt,\"+\")):(o=v.url.slice(f.length),v.data&&(v.processData||\"string\"==typeof v.data)&&(f+=(At.test(f)?\"&\":\"?\")+v.data,delete v.data),!1===v.cache&&(f=f.replace(It,\"$1\"),o=(At.test(f)?\"&\":\"?\")+\"_=\"+jt.guid+++o),v.url=f+o),v.ifModified&&(ce.lastModified[f]&&T.setRequestHeader(\"If-Modified-Since\",ce.lastModified[f]),ce.etag[f]&&T.setRequestHeader(\"If-None-Match\",ce.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader(\"Content-Type\",v.contentType),T.setRequestHeader(\"Accept\",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+(\"*\"!==v.dataTypes[0]?\", \"+zt+\"; q=0.01\":\"\"):v.accepts[\"*\"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u=\"abort\",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Vt(_t,v,t,T)){if(T.readyState=1,g&&m.trigger(\"ajaxSend\",[T,v]),h)return T;v.async&&0<v.timeout&&(d=ie.setTimeout(function(){T.abort(\"timeout\")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,\"No Transport\");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&ie.clearTimeout(d),c=void 0,p=r||\"\",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while(\"*\"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<ce.inArray(\"script\",v.dataTypes)&&ce.inArray(\"json\",v.dataTypes)<0&&(v.converters[\"text script\"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e[\"throws\"])t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader(\"Last-Modified\"))&&(ce.lastModified[f]=u),(u=T.getResponseHeader(\"etag\"))&&(ce.etag[f]=u)),204===e||\"HEAD\"===v.type?l=\"nocontent\":304===e?l=\"notmodified\":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l=\"error\",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+\"\",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?\"ajaxSuccess\":\"ajaxError\",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger(\"ajaxComplete\",[T,v]),--ce.active||ce.event.trigger(\"ajaxStop\")))}return T},getJSON:function(e,t,n){return ce.get(e,t,n,\"json\")},getScript:function(e,t){return ce.get(e,void 0,t,\"script\")}}),ce.each([\"get\",\"post\"],function(e,i){ce[i]=function(e,t,n,r){return v(t)&&(r=r||n,n=t,t=void 0),ce.ajax(ce.extend({url:e,type:i,dataType:r,data:t,success:n},ce.isPlainObject(e)&&e))}}),ce.ajaxPrefilter(function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")}),ce._evalUrl=function(e,t,n){return ce.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){ce.globalEval(e,t,n)}})},ce.fn.extend({wrapAll:function(e){var t;return this[0]&&(v(e)&&(e=e.call(this[0])),t=ce(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return v(n)?this.each(function(e){ce(this).wrapInner(n.call(this,e))}):this.each(function(){var e=ce(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=v(t);return this.each(function(e){ce(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not(\"body\").each(function(){ce(this).replaceWith(this.childNodes)}),this}}),ce.expr.pseudos.hidden=function(e){return!ce.expr.pseudos.visible(e)},ce.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},ce.ajaxSettings.xhr=function(){try{return new ie.XMLHttpRequest}catch(e){}};var Yt={0:200,1223:204},Qt=ce.ajaxSettings.xhr();le.cors=!!Qt&&\"withCredentials\"in Qt,le.ajax=Qt=!!Qt,ce.ajaxTransport(function(i){var o,a;if(le.cors||Qt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e[\"X-Requested-With\"]||(e[\"X-Requested-With\"]=\"XMLHttpRequest\"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,\"abort\"===e?r.abort():\"error\"===e?\"number\"!=typeof r.status?t(0,\"error\"):t(r.status,r.statusText):t(Yt[r.status]||r.status,r.statusText,\"text\"!==(r.responseType||\"text\")||\"string\"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o(\"error\"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&ie.setTimeout(function(){o&&a()})},o=o(\"abort\");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),ce.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),ce.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return ce.globalEval(e),e}}}),ce.ajaxPrefilter(\"script\",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")}),ce.ajaxTransport(\"script\",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=ce(\"<script>\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\\?(?=&|$)|\\?\\?/;ce.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Kt.pop()||ce.expando+\"_\"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Zt.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,\"$1\"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||ce.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),\"script\"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument(\"\").body).innerHTML=\"<form></form><form></form>\",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1<s&&(r=Tt(e.slice(s)),e=e.slice(0,s)),v(t)?(n=t,t=void 0):t&&\"object\"==typeof t&&(i=\"POST\"),0<a.length&&ce.ajax({url:e,type:i||\"GET\",dataType:\"html\",data:t}).done(function(e){o=arguments,a.html(r?ce(\"<div>\").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,\"position\"),c=ce(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=ce.css(e,\"top\"),u=ce.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===ce.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===ce.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,\"borderTopWidth\",!0),i.left+=ce.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-ce.css(r,\"marginTop\",!0),left:t.left-i.left-ce.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===ce.css(e,\"position\"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each([\"top\",\"left\"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+\"px\":t})}),ce.each({Height:\"height\",Width:\"width\"},function(a,s){ce.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.on(\"mouseenter\",e).on(\"mouseleave\",t||e)}}),ce.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){ce.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var en=/^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;ce.proxy=function(e,t){var n,r,i;if(\"string\"==typeof t&&(n=e[t],t=e,e=n),v(e))return r=ae.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(ae.call(arguments)))}).guid=e.guid=e.guid||ce.guid++,i},ce.holdReady=function(e){e?ce.readyWait++:ce.ready(!0)},ce.isArray=Array.isArray,ce.parseJSON=JSON.parse,ce.nodeName=fe,ce.isFunction=v,ce.isWindow=y,ce.camelCase=F,ce.type=x,ce.now=Date.now,ce.isNumeric=function(e){var t=ce.type(e);return(\"number\"===t||\"string\"===t)&&!isNaN(e-parseFloat(e))},ce.trim=function(e){return null==e?\"\":(e+\"\").replace(en,\"$1\")},\"function\"==typeof define&&define.amd&&define(\"jquery\",[],function(){return ce});var tn=ie.jQuery,nn=ie.$;return ce.noConflict=function(e){return ie.$===ce&&(ie.$=nn),e&&ie.jQuery===ce&&(ie.jQuery=tn),ce},\"undefined\"==typeof e&&(ie.jQuery=ie.$=ce),ce});\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/LICENSE.f94142512c91.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/LICENSE.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2012-2017 Kevin Brown, Igor Vaynberg, and Select2 contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/af.4f6fcd73488c.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/af\",[],function(){return{errorLoading:function(){return\"Die resultate kon nie gelaai word nie.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Verwyders asseblief \"+n+\" character\";return 1!=n&&(r+=\"s\"),r},inputTooShort:function(e){return\"Voer asseblief \"+(e.minimum-e.input.length)+\" of meer karakters\"},loadingMore:function(){return\"Meer resultate word gelaai…\"},maximumSelected:function(e){var n=\"Kies asseblief net \"+e.maximum+\" item\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"Geen resultate gevind\"},searching:function(){return\"Besig…\"},removeAllItems:function(){return\"Verwyder alle items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/af.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/af\",[],function(){return{errorLoading:function(){return\"Die resultate kon nie gelaai word nie.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Verwyders asseblief \"+n+\" character\";return 1!=n&&(r+=\"s\"),r},inputTooShort:function(e){return\"Voer asseblief \"+(e.minimum-e.input.length)+\" of meer karakters\"},loadingMore:function(){return\"Meer resultate word gelaai…\"},maximumSelected:function(e){var n=\"Kies asseblief net \"+e.maximum+\" item\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"Geen resultate gevind\"},searching:function(){return\"Besig…\"},removeAllItems:function(){return\"Verwyder alle items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ar\",[],function(){return{errorLoading:function(){return\"لا يمكن تحميل النتائج\"},inputTooLong:function(n){return\"الرجاء حذف \"+(n.input.length-n.maximum)+\" عناصر\"},inputTooShort:function(n){return\"الرجاء إضافة \"+(n.minimum-n.input.length)+\" عناصر\"},loadingMore:function(){return\"جاري تحميل نتائج إضافية...\"},maximumSelected:function(n){return\"تستطيع إختيار \"+n.maximum+\" بنود فقط\"},noResults:function(){return\"لم يتم العثور على أي نتائج\"},searching:function(){return\"جاري البحث…\"},removeAllItems:function(){return\"قم بإزالة كل العناصر\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ar.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ar\",[],function(){return{errorLoading:function(){return\"لا يمكن تحميل النتائج\"},inputTooLong:function(n){return\"الرجاء حذف \"+(n.input.length-n.maximum)+\" عناصر\"},inputTooShort:function(n){return\"الرجاء إضافة \"+(n.minimum-n.input.length)+\" عناصر\"},loadingMore:function(){return\"جاري تحميل نتائج إضافية...\"},maximumSelected:function(n){return\"تستطيع إختيار \"+n.maximum+\" بنود فقط\"},noResults:function(){return\"لم يتم العثور على أي نتائج\"},searching:function(){return\"جاري البحث…\"},removeAllItems:function(){return\"قم بإزالة كل العناصر\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/az.270c257daf81.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/az\",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+\" simvol silin\"},inputTooShort:function(n){return n.minimum-n.input.length+\" simvol daxil edin\"},loadingMore:function(){return\"Daha çox nəticə yüklənir…\"},maximumSelected:function(n){return\"Sadəcə \"+n.maximum+\" element seçə bilərsiniz\"},noResults:function(){return\"Nəticə tapılmadı\"},searching:function(){return\"Axtarılır…\"},removeAllItems:function(){return\"Bütün elementləri sil\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/az.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/az\",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+\" simvol silin\"},inputTooShort:function(n){return n.minimum-n.input.length+\" simvol daxil edin\"},loadingMore:function(){return\"Daha çox nəticə yüklənir…\"},maximumSelected:function(n){return\"Sadəcə \"+n.maximum+\" element seçə bilərsiniz\"},noResults:function(){return\"Nəticə tapılmadı\"},searching:function(){return\"Axtarılır…\"},removeAllItems:function(){return\"Bütün elementləri sil\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/bg\",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"Моля въведете с \"+e+\" по-малко символ\";return e>1&&(u+=\"a\"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u=\"Моля въведете още \"+e+\" символ\";return e>1&&(u+=\"a\"),u},loadingMore:function(){return\"Зареждат се още…\"},maximumSelected:function(n){var e=\"Можете да направите до \"+n.maximum+\" \";return n.maximum>1?e+=\"избора\":e+=\"избор\",e},noResults:function(){return\"Няма намерени съвпадения\"},searching:function(){return\"Търсене…\"},removeAllItems:function(){return\"Премахнете всички елементи\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/bg.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/bg\",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"Моля въведете с \"+e+\" по-малко символ\";return e>1&&(u+=\"a\"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u=\"Моля въведете още \"+e+\" символ\";return e>1&&(u+=\"a\"),u},loadingMore:function(){return\"Зареждат се още…\"},maximumSelected:function(n){var e=\"Можете да направите до \"+n.maximum+\" \";return n.maximum>1?e+=\"избора\":e+=\"избор\",e},noResults:function(){return\"Няма намерени съвпадения\"},searching:function(){return\"Търсене…\"},removeAllItems:function(){return\"Премахнете всички елементи\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/bn\",[],function(){return{errorLoading:function(){return\"ফলাফলগুলি লোড করা যায়নি।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"অনুগ্রহ করে \"+e+\" টি অক্ষর মুছে দিন।\";return 1!=e&&(u=\"অনুগ্রহ করে \"+e+\" টি অক্ষর মুছে দিন।\"),u},inputTooShort:function(n){return n.minimum-n.input.length+\" টি অক্ষর অথবা অধিক অক্ষর লিখুন।\"},loadingMore:function(){return\"আরো ফলাফল লোড হচ্ছে ...\"},maximumSelected:function(n){var e=n.maximum+\" টি আইটেম নির্বাচন করতে পারবেন।\";return 1!=n.maximum&&(e=n.maximum+\" টি আইটেম নির্বাচন করতে পারবেন।\"),e},noResults:function(){return\"কোন ফলাফল পাওয়া যায়নি।\"},searching:function(){return\"অনুসন্ধান করা হচ্ছে ...\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/bn.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/bn\",[],function(){return{errorLoading:function(){return\"ফলাফলগুলি লোড করা যায়নি।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"অনুগ্রহ করে \"+e+\" টি অক্ষর মুছে দিন।\";return 1!=e&&(u=\"অনুগ্রহ করে \"+e+\" টি অক্ষর মুছে দিন।\"),u},inputTooShort:function(n){return n.minimum-n.input.length+\" টি অক্ষর অথবা অধিক অক্ষর লিখুন।\"},loadingMore:function(){return\"আরো ফলাফল লোড হচ্ছে ...\"},maximumSelected:function(n){var e=n.maximum+\" টি আইটেম নির্বাচন করতে পারবেন।\";return 1!=n.maximum&&(e=n.maximum+\" টি আইটেম নির্বাচন করতে পারবেন।\"),e},noResults:function(){return\"কোন ফলাফল পাওয়া যায়নি।\"},searching:function(){return\"অনুসন্ধান করা হচ্ছে ...\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/bs.91624382358e.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/bs\",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return\"Preuzimanje nije uspijelo.\"},inputTooLong:function(n){var r=n.input.length-n.maximum,t=\"Obrišite \"+r+\" simbol\";return t+=e(r,\"\",\"a\",\"a\")},inputTooShort:function(n){var r=n.minimum-n.input.length,t=\"Ukucajte bar još \"+r+\" simbol\";return t+=e(r,\"\",\"a\",\"a\")},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(n){var r=\"Možete izabrati samo \"+n.maximum+\" stavk\";return r+=e(n.maximum,\"u\",\"e\",\"i\")},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Uklonite sve stavke\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/bs.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/bs\",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return\"Preuzimanje nije uspijelo.\"},inputTooLong:function(n){var r=n.input.length-n.maximum,t=\"Obrišite \"+r+\" simbol\";return t+=e(r,\"\",\"a\",\"a\")},inputTooShort:function(n){var r=n.minimum-n.input.length,t=\"Ukucajte bar još \"+r+\" simbol\";return t+=e(r,\"\",\"a\",\"a\")},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(n){var r=\"Možete izabrati samo \"+n.maximum+\" stavk\";return r+=e(n.maximum,\"u\",\"e\",\"i\")},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Uklonite sve stavke\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ca.a166b745933a.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/ca\",[],function(){return{errorLoading:function(){return\"La càrrega ha fallat\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Si us plau, elimina \"+n+\" car\";return r+=1==n?\"àcter\":\"àcters\"},inputTooShort:function(e){var n=e.minimum-e.input.length,r=\"Si us plau, introdueix \"+n+\" car\";return r+=1==n?\"àcter\":\"àcters\"},loadingMore:function(){return\"Carregant més resultats…\"},maximumSelected:function(e){var n=\"Només es pot seleccionar \"+e.maximum+\" element\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No s'han trobat resultats\"},searching:function(){return\"Cercant…\"},removeAllItems:function(){return\"Treu tots els elements\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ca.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/ca\",[],function(){return{errorLoading:function(){return\"La càrrega ha fallat\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Si us plau, elimina \"+n+\" car\";return r+=1==n?\"àcter\":\"àcters\"},inputTooShort:function(e){var n=e.minimum-e.input.length,r=\"Si us plau, introdueix \"+n+\" car\";return r+=1==n?\"àcter\":\"àcters\"},loadingMore:function(){return\"Carregant més resultats…\"},maximumSelected:function(e){var n=\"Només es pot seleccionar \"+e.maximum+\" element\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No s'han trobat resultats\"},searching:function(){return\"Cercant…\"},removeAllItems:function(){return\"Treu tots els elements\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/cs\",[],function(){function e(e,n){switch(e){case 2:return n?\"dva\":\"dvě\";case 3:return\"tři\";case 4:return\"čtyři\"}return\"\"}return{errorLoading:function(){return\"Výsledky nemohly být načteny.\"},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?\"Prosím, zadejte o jeden znak méně.\":t<=4?\"Prosím, zadejte o \"+e(t,!0)+\" znaky méně.\":\"Prosím, zadejte o \"+t+\" znaků méně.\"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?\"Prosím, zadejte ještě jeden znak.\":t<=4?\"Prosím, zadejte ještě další \"+e(t,!0)+\" znaky.\":\"Prosím, zadejte ještě dalších \"+t+\" znaků.\"},loadingMore:function(){return\"Načítají se další výsledky…\"},maximumSelected:function(n){var t=n.maximum;return 1==t?\"Můžete zvolit jen jednu položku.\":t<=4?\"Můžete zvolit maximálně \"+e(t,!1)+\" položky.\":\"Můžete zvolit maximálně \"+t+\" položek.\"},noResults:function(){return\"Nenalezeny žádné položky.\"},searching:function(){return\"Vyhledávání…\"},removeAllItems:function(){return\"Odstraňte všechny položky\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/cs.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/cs\",[],function(){function e(e,n){switch(e){case 2:return n?\"dva\":\"dvě\";case 3:return\"tři\";case 4:return\"čtyři\"}return\"\"}return{errorLoading:function(){return\"Výsledky nemohly být načteny.\"},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?\"Prosím, zadejte o jeden znak méně.\":t<=4?\"Prosím, zadejte o \"+e(t,!0)+\" znaky méně.\":\"Prosím, zadejte o \"+t+\" znaků méně.\"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?\"Prosím, zadejte ještě jeden znak.\":t<=4?\"Prosím, zadejte ještě další \"+e(t,!0)+\" znaky.\":\"Prosím, zadejte ještě dalších \"+t+\" znaků.\"},loadingMore:function(){return\"Načítají se další výsledky…\"},maximumSelected:function(n){var t=n.maximum;return 1==t?\"Můžete zvolit jen jednu položku.\":t<=4?\"Můžete zvolit maximálně \"+e(t,!1)+\" položky.\":\"Můžete zvolit maximálně \"+t+\" položek.\"},noResults:function(){return\"Nenalezeny žádné položky.\"},searching:function(){return\"Vyhledávání…\"},removeAllItems:function(){return\"Odstraňte všechny položky\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/da.766346afe4dd.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/da\",[],function(){return{errorLoading:function(){return\"Resultaterne kunne ikke indlæses.\"},inputTooLong:function(e){return\"Angiv venligst \"+(e.input.length-e.maximum)+\" tegn mindre\"},inputTooShort:function(e){return\"Angiv venligst \"+(e.minimum-e.input.length)+\" tegn mere\"},loadingMore:function(){return\"Indlæser flere resultater…\"},maximumSelected:function(e){var n=\"Du kan kun vælge \"+e.maximum+\" emne\";return 1!=e.maximum&&(n+=\"r\"),n},noResults:function(){return\"Ingen resultater fundet\"},searching:function(){return\"Søger…\"},removeAllItems:function(){return\"Fjern alle elementer\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/da.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/da\",[],function(){return{errorLoading:function(){return\"Resultaterne kunne ikke indlæses.\"},inputTooLong:function(e){return\"Angiv venligst \"+(e.input.length-e.maximum)+\" tegn mindre\"},inputTooShort:function(e){return\"Angiv venligst \"+(e.minimum-e.input.length)+\" tegn mere\"},loadingMore:function(){return\"Indlæser flere resultater…\"},maximumSelected:function(e){var n=\"Du kan kun vælge \"+e.maximum+\" emne\";return 1!=e.maximum&&(n+=\"r\"),n},noResults:function(){return\"Ingen resultater fundet\"},searching:function(){return\"Søger…\"},removeAllItems:function(){return\"Fjern alle elementer\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/de.8a1c222b0204.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/de\",[],function(){return{errorLoading:function(){return\"Die Ergebnisse konnten nicht geladen werden.\"},inputTooLong:function(e){return\"Bitte \"+(e.input.length-e.maximum)+\" Zeichen weniger eingeben\"},inputTooShort:function(e){return\"Bitte \"+(e.minimum-e.input.length)+\" Zeichen mehr eingeben\"},loadingMore:function(){return\"Lade mehr Ergebnisse…\"},maximumSelected:function(e){var n=\"Sie können nur \"+e.maximum+\" Element\";return 1!=e.maximum&&(n+=\"e\"),n+=\" auswählen\"},noResults:function(){return\"Keine Übereinstimmungen gefunden\"},searching:function(){return\"Suche…\"},removeAllItems:function(){return\"Entferne alle Elemente\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/de.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/de\",[],function(){return{errorLoading:function(){return\"Die Ergebnisse konnten nicht geladen werden.\"},inputTooLong:function(e){return\"Bitte \"+(e.input.length-e.maximum)+\" Zeichen weniger eingeben\"},inputTooShort:function(e){return\"Bitte \"+(e.minimum-e.input.length)+\" Zeichen mehr eingeben\"},loadingMore:function(){return\"Lade mehr Ergebnisse…\"},maximumSelected:function(e){var n=\"Sie können nur \"+e.maximum+\" Element\";return 1!=e.maximum&&(n+=\"e\"),n+=\" auswählen\"},noResults:function(){return\"Keine Übereinstimmungen gefunden\"},searching:function(){return\"Suche…\"},removeAllItems:function(){return\"Entferne alle Elemente\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/dsb\",[],function(){var n=[\"znamuško\",\"znamušce\",\"znamuška\",\"znamuškow\"],e=[\"zapisk\",\"zapiska\",\"zapiski\",\"zapiskow\"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return\"Wuslědki njejsu se dali zacytaś.\"},inputTooLong:function(e){var a=e.input.length-e.maximum;return\"Pšosym lašuj \"+a+\" \"+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return\"Pšosym zapódaj nanejmjenjej \"+a+\" \"+u(a,n)},loadingMore:function(){return\"Dalšne wuslědki se zacytaju…\"},maximumSelected:function(n){return\"Móžoš jano \"+n.maximum+\" \"+u(n.maximum,e)+\"wubraś.\"},noResults:function(){return\"Žedne wuslědki namakane\"},searching:function(){return\"Pyta se…\"},removeAllItems:function(){return\"Remove all items\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/dsb.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/dsb\",[],function(){var n=[\"znamuško\",\"znamušce\",\"znamuška\",\"znamuškow\"],e=[\"zapisk\",\"zapiska\",\"zapiski\",\"zapiskow\"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return\"Wuslědki njejsu se dali zacytaś.\"},inputTooLong:function(e){var a=e.input.length-e.maximum;return\"Pšosym lašuj \"+a+\" \"+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return\"Pšosym zapódaj nanejmjenjej \"+a+\" \"+u(a,n)},loadingMore:function(){return\"Dalšne wuslědki se zacytaju…\"},maximumSelected:function(n){return\"Móžoš jano \"+n.maximum+\" \"+u(n.maximum,e)+\"wubraś.\"},noResults:function(){return\"Žedne wuslědki namakane\"},searching:function(){return\"Pyta se…\"},removeAllItems:function(){return\"Remove all items\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/el.27097f071856.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/el\",[],function(){return{errorLoading:function(){return\"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν.\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"Παρακαλώ διαγράψτε \"+e+\" χαρακτήρ\";return 1==e&&(u+=\"α\"),1!=e&&(u+=\"ες\"),u},inputTooShort:function(n){return\"Παρακαλώ συμπληρώστε \"+(n.minimum-n.input.length)+\" ή περισσότερους χαρακτήρες\"},loadingMore:function(){return\"Φόρτωση περισσότερων αποτελεσμάτων…\"},maximumSelected:function(n){var e=\"Μπορείτε να επιλέξετε μόνο \"+n.maximum+\" επιλογ\";return 1==n.maximum&&(e+=\"ή\"),1!=n.maximum&&(e+=\"ές\"),e},noResults:function(){return\"Δεν βρέθηκαν αποτελέσματα\"},searching:function(){return\"Αναζήτηση…\"},removeAllItems:function(){return\"Καταργήστε όλα τα στοιχεία\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/el.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/el\",[],function(){return{errorLoading:function(){return\"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν.\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"Παρακαλώ διαγράψτε \"+e+\" χαρακτήρ\";return 1==e&&(u+=\"α\"),1!=e&&(u+=\"ες\"),u},inputTooShort:function(n){return\"Παρακαλώ συμπληρώστε \"+(n.minimum-n.input.length)+\" ή περισσότερους χαρακτήρες\"},loadingMore:function(){return\"Φόρτωση περισσότερων αποτελεσμάτων…\"},maximumSelected:function(n){var e=\"Μπορείτε να επιλέξετε μόνο \"+n.maximum+\" επιλογ\";return 1==n.maximum&&(e+=\"ή\"),1!=n.maximum&&(e+=\"ές\"),e},noResults:function(){return\"Δεν βρέθηκαν αποτελέσματα\"},searching:function(){return\"Αναζήτηση…\"},removeAllItems:function(){return\"Καταργήστε όλα τα στοιχεία\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/en.cf932ba09a98.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/en\",[],function(){return{errorLoading:function(){return\"The results could not be loaded.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Please delete \"+n+\" character\";return 1!=n&&(r+=\"s\"),r},inputTooShort:function(e){return\"Please enter \"+(e.minimum-e.input.length)+\" or more characters\"},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(e){var n=\"You can only select \"+e.maximum+\" item\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No results found\"},searching:function(){return\"Searching…\"},removeAllItems:function(){return\"Remove all items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/en.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/en\",[],function(){return{errorLoading:function(){return\"The results could not be loaded.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Please delete \"+n+\" character\";return 1!=n&&(r+=\"s\"),r},inputTooShort:function(e){return\"Please enter \"+(e.minimum-e.input.length)+\" or more characters\"},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(e){var n=\"You can only select \"+e.maximum+\" item\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No results found\"},searching:function(){return\"Searching…\"},removeAllItems:function(){return\"Remove all items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/es.66dbc2652fb1.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/es\",[],function(){return{errorLoading:function(){return\"No se pudieron cargar los resultados\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Por favor, elimine \"+n+\" car\";return r+=1==n?\"ácter\":\"acteres\"},inputTooShort:function(e){var n=e.minimum-e.input.length,r=\"Por favor, introduzca \"+n+\" car\";return r+=1==n?\"ácter\":\"acteres\"},loadingMore:function(){return\"Cargando más resultados…\"},maximumSelected:function(e){var n=\"Sólo puede seleccionar \"+e.maximum+\" elemento\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No se encontraron resultados\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Eliminar todos los elementos\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/es.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/es\",[],function(){return{errorLoading:function(){return\"No se pudieron cargar los resultados\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Por favor, elimine \"+n+\" car\";return r+=1==n?\"ácter\":\"acteres\"},inputTooShort:function(e){var n=e.minimum-e.input.length,r=\"Por favor, introduzca \"+n+\" car\";return r+=1==n?\"ácter\":\"acteres\"},loadingMore:function(){return\"Cargando más resultados…\"},maximumSelected:function(e){var n=\"Sólo puede seleccionar \"+e.maximum+\" elemento\";return 1!=e.maximum&&(n+=\"s\"),n},noResults:function(){return\"No se encontraron resultados\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Eliminar todos los elementos\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/et.2b96fd98289d.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/et\",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Sisesta \"+n+\" täht\";return 1!=n&&(t+=\"e\"),t+=\" vähem\"},inputTooShort:function(e){var n=e.minimum-e.input.length,t=\"Sisesta \"+n+\" täht\";return 1!=n&&(t+=\"e\"),t+=\" rohkem\"},loadingMore:function(){return\"Laen tulemusi…\"},maximumSelected:function(e){var n=\"Saad vaid \"+e.maximum+\" tulemus\";return 1==e.maximum?n+=\"e\":n+=\"t\",n+=\" valida\"},noResults:function(){return\"Tulemused puuduvad\"},searching:function(){return\"Otsin…\"},removeAllItems:function(){return\"Eemalda kõik esemed\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/et.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/et\",[],function(){return{inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Sisesta \"+n+\" täht\";return 1!=n&&(t+=\"e\"),t+=\" vähem\"},inputTooShort:function(e){var n=e.minimum-e.input.length,t=\"Sisesta \"+n+\" täht\";return 1!=n&&(t+=\"e\"),t+=\" rohkem\"},loadingMore:function(){return\"Laen tulemusi…\"},maximumSelected:function(e){var n=\"Saad vaid \"+e.maximum+\" tulemus\";return 1==e.maximum?n+=\"e\":n+=\"t\",n+=\" valida\"},noResults:function(){return\"Tulemused puuduvad\"},searching:function(){return\"Otsin…\"},removeAllItems:function(){return\"Eemalda kõik esemed\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/eu\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Idatzi \";return n+=1==t?\"karaktere bat\":t+\" karaktere\",n+=\" gutxiago\"},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Idatzi \";return n+=1==t?\"karaktere bat\":t+\" karaktere\",n+=\" gehiago\"},loadingMore:function(){return\"Emaitza gehiago kargatzen…\"},maximumSelected:function(e){return 1===e.maximum?\"Elementu bakarra hauta dezakezu\":e.maximum+\" elementu hauta ditzakezu soilik\"},noResults:function(){return\"Ez da bat datorrenik aurkitu\"},searching:function(){return\"Bilatzen…\"},removeAllItems:function(){return\"Kendu elementu guztiak\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/eu.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/eu\",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Idatzi \";return n+=1==t?\"karaktere bat\":t+\" karaktere\",n+=\" gutxiago\"},inputTooShort:function(e){var t=e.minimum-e.input.length,n=\"Idatzi \";return n+=1==t?\"karaktere bat\":t+\" karaktere\",n+=\" gehiago\"},loadingMore:function(){return\"Emaitza gehiago kargatzen…\"},maximumSelected:function(e){return 1===e.maximum?\"Elementu bakarra hauta dezakezu\":e.maximum+\" elementu hauta ditzakezu soilik\"},noResults:function(){return\"Ez da bat datorrenik aurkitu\"},searching:function(){return\"Bilatzen…\"},removeAllItems:function(){return\"Kendu elementu guztiak\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/fa\",[],function(){return{errorLoading:function(){return\"امکان بارگذاری نتایج وجود ندارد.\"},inputTooLong:function(n){return\"لطفاً \"+(n.input.length-n.maximum)+\" کاراکتر را حذف نمایید\"},inputTooShort:function(n){return\"لطفاً تعداد \"+(n.minimum-n.input.length)+\" کاراکتر یا بیشتر وارد نمایید\"},loadingMore:function(){return\"در حال بارگذاری نتایج بیشتر...\"},maximumSelected:function(n){return\"شما تنها می‌توانید \"+n.maximum+\" آیتم را انتخاب نمایید\"},noResults:function(){return\"هیچ نتیجه‌ای یافت نشد\"},searching:function(){return\"در حال جستجو...\"},removeAllItems:function(){return\"همه موارد را حذف کنید\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/fa.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/fa\",[],function(){return{errorLoading:function(){return\"امکان بارگذاری نتایج وجود ندارد.\"},inputTooLong:function(n){return\"لطفاً \"+(n.input.length-n.maximum)+\" کاراکتر را حذف نمایید\"},inputTooShort:function(n){return\"لطفاً تعداد \"+(n.minimum-n.input.length)+\" کاراکتر یا بیشتر وارد نمایید\"},loadingMore:function(){return\"در حال بارگذاری نتایج بیشتر...\"},maximumSelected:function(n){return\"شما تنها می‌توانید \"+n.maximum+\" آیتم را انتخاب نمایید\"},noResults:function(){return\"هیچ نتیجه‌ای یافت نشد\"},searching:function(){return\"در حال جستجو...\"},removeAllItems:function(){return\"همه موارد را حذف کنید\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/fi\",[],function(){return{errorLoading:function(){return\"Tuloksia ei saatu ladattua.\"},inputTooLong:function(n){return\"Ole hyvä ja anna \"+(n.input.length-n.maximum)+\" merkkiä vähemmän\"},inputTooShort:function(n){return\"Ole hyvä ja anna \"+(n.minimum-n.input.length)+\" merkkiä lisää\"},loadingMore:function(){return\"Ladataan lisää tuloksia…\"},maximumSelected:function(n){return\"Voit valita ainoastaan \"+n.maximum+\" kpl\"},noResults:function(){return\"Ei tuloksia\"},searching:function(){return\"Haetaan…\"},removeAllItems:function(){return\"Poista kaikki kohteet\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/fi.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/fi\",[],function(){return{errorLoading:function(){return\"Tuloksia ei saatu ladattua.\"},inputTooLong:function(n){return\"Ole hyvä ja anna \"+(n.input.length-n.maximum)+\" merkkiä vähemmän\"},inputTooShort:function(n){return\"Ole hyvä ja anna \"+(n.minimum-n.input.length)+\" merkkiä lisää\"},loadingMore:function(){return\"Ladataan lisää tuloksia…\"},maximumSelected:function(n){return\"Voit valita ainoastaan \"+n.maximum+\" kpl\"},noResults:function(){return\"Ei tuloksia\"},searching:function(){return\"Haetaan…\"},removeAllItems:function(){return\"Poista kaikki kohteet\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/fr\",[],function(){return{errorLoading:function(){return\"Les résultats ne peuvent pas être chargés.\"},inputTooLong:function(e){var n=e.input.length-e.maximum;return\"Supprimez \"+n+\" caractère\"+(n>1?\"s\":\"\")},inputTooShort:function(e){var n=e.minimum-e.input.length;return\"Saisissez au moins \"+n+\" caractère\"+(n>1?\"s\":\"\")},loadingMore:function(){return\"Chargement de résultats supplémentaires…\"},maximumSelected:function(e){return\"Vous pouvez seulement sélectionner \"+e.maximum+\" élément\"+(e.maximum>1?\"s\":\"\")},noResults:function(){return\"Aucun résultat trouvé\"},searching:function(){return\"Recherche en cours…\"},removeAllItems:function(){return\"Supprimer tous les éléments\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/fr.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/fr\",[],function(){return{errorLoading:function(){return\"Les résultats ne peuvent pas être chargés.\"},inputTooLong:function(e){var n=e.input.length-e.maximum;return\"Supprimez \"+n+\" caractère\"+(n>1?\"s\":\"\")},inputTooShort:function(e){var n=e.minimum-e.input.length;return\"Saisissez au moins \"+n+\" caractère\"+(n>1?\"s\":\"\")},loadingMore:function(){return\"Chargement de résultats supplémentaires…\"},maximumSelected:function(e){return\"Vous pouvez seulement sélectionner \"+e.maximum+\" élément\"+(e.maximum>1?\"s\":\"\")},noResults:function(){return\"Aucun résultat trouvé\"},searching:function(){return\"Recherche en cours…\"},removeAllItems:function(){return\"Supprimer tous les éléments\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/gl\",[],function(){return{errorLoading:function(){return\"Non foi posíbel cargar os resultados.\"},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?\"Elimine un carácter\":\"Elimine \"+n+\" caracteres\"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?\"Engada un carácter\":\"Engada \"+n+\" caracteres\"},loadingMore:function(){return\"Cargando máis resultados…\"},maximumSelected:function(e){return 1===e.maximum?\"Só pode seleccionar un elemento\":\"Só pode seleccionar \"+e.maximum+\" elementos\"},noResults:function(){return\"Non se atoparon resultados\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Elimina todos os elementos\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/gl.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/gl\",[],function(){return{errorLoading:function(){return\"Non foi posíbel cargar os resultados.\"},inputTooLong:function(e){var n=e.input.length-e.maximum;return 1===n?\"Elimine un carácter\":\"Elimine \"+n+\" caracteres\"},inputTooShort:function(e){var n=e.minimum-e.input.length;return 1===n?\"Engada un carácter\":\"Engada \"+n+\" caracteres\"},loadingMore:function(){return\"Cargando máis resultados…\"},maximumSelected:function(e){return 1===e.maximum?\"Só pode seleccionar un elemento\":\"Só pode seleccionar \"+e.maximum+\" elementos\"},noResults:function(){return\"Non se atoparon resultados\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Elimina todos os elementos\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/he\",[],function(){return{errorLoading:function(){return\"שגיאה בטעינת התוצאות\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=\"נא למחוק \";return r+=1===e?\"תו אחד\":e+\" תווים\"},inputTooShort:function(n){var e=n.minimum-n.input.length,r=\"נא להכניס \";return r+=1===e?\"תו אחד\":e+\" תווים\",r+=\" או יותר\"},loadingMore:function(){return\"טוען תוצאות נוספות…\"},maximumSelected:function(n){var e=\"באפשרותך לבחור עד \";return 1===n.maximum?e+=\"פריט אחד\":e+=n.maximum+\" פריטים\",e},noResults:function(){return\"לא נמצאו תוצאות\"},searching:function(){return\"מחפש…\"},removeAllItems:function(){return\"הסר את כל הפריטים\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/he.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/he\",[],function(){return{errorLoading:function(){return\"שגיאה בטעינת התוצאות\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=\"נא למחוק \";return r+=1===e?\"תו אחד\":e+\" תווים\"},inputTooShort:function(n){var e=n.minimum-n.input.length,r=\"נא להכניס \";return r+=1===e?\"תו אחד\":e+\" תווים\",r+=\" או יותר\"},loadingMore:function(){return\"טוען תוצאות נוספות…\"},maximumSelected:function(n){var e=\"באפשרותך לבחור עד \";return 1===n.maximum?e+=\"פריט אחד\":e+=n.maximum+\" פריטים\",e},noResults:function(){return\"לא נמצאו תוצאות\"},searching:function(){return\"מחפש…\"},removeAllItems:function(){return\"הסר את כל הפריטים\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hi.70640d41628f.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hi\",[],function(){return{errorLoading:function(){return\"परिणामों को लोड नहीं किया जा सका।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+\" अक्षर को हटा दें\";return e>1&&(r=e+\" अक्षरों को हटा दें \"),r},inputTooShort:function(n){return\"कृपया \"+(n.minimum-n.input.length)+\" या अधिक अक्षर दर्ज करें\"},loadingMore:function(){return\"अधिक परिणाम लोड हो रहे है...\"},maximumSelected:function(n){return\"आप केवल \"+n.maximum+\" आइटम का चयन कर सकते हैं\"},noResults:function(){return\"कोई परिणाम नहीं मिला\"},searching:function(){return\"खोज रहा है...\"},removeAllItems:function(){return\"सभी वस्तुओं को हटा दें\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hi.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hi\",[],function(){return{errorLoading:function(){return\"परिणामों को लोड नहीं किया जा सका।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=e+\" अक्षर को हटा दें\";return e>1&&(r=e+\" अक्षरों को हटा दें \"),r},inputTooShort:function(n){return\"कृपया \"+(n.minimum-n.input.length)+\" या अधिक अक्षर दर्ज करें\"},loadingMore:function(){return\"अधिक परिणाम लोड हो रहे है...\"},maximumSelected:function(n){return\"आप केवल \"+n.maximum+\" आइटम का चयन कर सकते हैं\"},noResults:function(){return\"कोई परिणाम नहीं मिला\"},searching:function(){return\"खोज रहा है...\"},removeAllItems:function(){return\"सभी वस्तुओं को हटा दें\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hr.a2b092cc1147.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hr\",[],function(){function n(n){var e=\" \"+n+\" znak\";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+=\"a\"):e+=\"ova\",e}return{errorLoading:function(){return\"Preuzimanje nije uspjelo.\"},inputTooLong:function(e){return\"Unesite \"+n(e.input.length-e.maximum)},inputTooShort:function(e){return\"Unesite još \"+n(e.minimum-e.input.length)},loadingMore:function(){return\"Učitavanje rezultata…\"},maximumSelected:function(n){return\"Maksimalan broj odabranih stavki je \"+n.maximum},noResults:function(){return\"Nema rezultata\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Ukloni sve stavke\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hr.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hr\",[],function(){function n(n){var e=\" \"+n+\" znak\";return n%10<5&&n%10>0&&(n%100<5||n%100>19)?n%10>1&&(e+=\"a\"):e+=\"ova\",e}return{errorLoading:function(){return\"Preuzimanje nije uspjelo.\"},inputTooLong:function(e){return\"Unesite \"+n(e.input.length-e.maximum)},inputTooShort:function(e){return\"Unesite još \"+n(e.minimum-e.input.length)},loadingMore:function(){return\"Učitavanje rezultata…\"},maximumSelected:function(n){return\"Maksimalan broj odabranih stavki je \"+n.maximum},noResults:function(){return\"Nema rezultata\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Ukloni sve stavke\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hsb\",[],function(){var n=[\"znamješko\",\"znamješce\",\"znamješka\",\"znamješkow\"],e=[\"zapisk\",\"zapiskaj\",\"zapiski\",\"zapiskow\"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return\"Wuslědki njedachu so začitać.\"},inputTooLong:function(e){var a=e.input.length-e.maximum;return\"Prošu zhašej \"+a+\" \"+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return\"Prošu zapodaj znajmjeńša \"+a+\" \"+u(a,n)},loadingMore:function(){return\"Dalše wuslědki so začitaja…\"},maximumSelected:function(n){return\"Móžeš jenož \"+n.maximum+\" \"+u(n.maximum,e)+\"wubrać\"},noResults:function(){return\"Žane wuslědki namakane\"},searching:function(){return\"Pyta so…\"},removeAllItems:function(){return\"Remove all items\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hsb.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hsb\",[],function(){var n=[\"znamješko\",\"znamješce\",\"znamješka\",\"znamješkow\"],e=[\"zapisk\",\"zapiskaj\",\"zapiski\",\"zapiskow\"],u=function(n,e){return 1===n?e[0]:2===n?e[1]:n>2&&n<=4?e[2]:n>=5?e[3]:void 0};return{errorLoading:function(){return\"Wuslědki njedachu so začitać.\"},inputTooLong:function(e){var a=e.input.length-e.maximum;return\"Prošu zhašej \"+a+\" \"+u(a,n)},inputTooShort:function(e){var a=e.minimum-e.input.length;return\"Prošu zapodaj znajmjeńša \"+a+\" \"+u(a,n)},loadingMore:function(){return\"Dalše wuslědki so začitaja…\"},maximumSelected:function(n){return\"Móžeš jenož \"+n.maximum+\" \"+u(n.maximum,e)+\"wubrać\"},noResults:function(){return\"Žane wuslědki namakane\"},searching:function(){return\"Pyta so…\"},removeAllItems:function(){return\"Remove all items\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/hu\",[],function(){return{errorLoading:function(){return\"Az eredmények betöltése nem sikerült.\"},inputTooLong:function(e){return\"Túl hosszú. \"+(e.input.length-e.maximum)+\" karakterrel több, mint kellene.\"},inputTooShort:function(e){return\"Túl rövid. Még \"+(e.minimum-e.input.length)+\" karakter hiányzik.\"},loadingMore:function(){return\"Töltés…\"},maximumSelected:function(e){return\"Csak \"+e.maximum+\" elemet lehet kiválasztani.\"},noResults:function(){return\"Nincs találat.\"},searching:function(){return\"Keresés…\"},removeAllItems:function(){return\"Távolítson el minden elemet\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hu.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/hu\",[],function(){return{errorLoading:function(){return\"Az eredmények betöltése nem sikerült.\"},inputTooLong:function(e){return\"Túl hosszú. \"+(e.input.length-e.maximum)+\" karakterrel több, mint kellene.\"},inputTooShort:function(e){return\"Túl rövid. Még \"+(e.minimum-e.input.length)+\" karakter hiányzik.\"},loadingMore:function(){return\"Töltés…\"},maximumSelected:function(e){return\"Csak \"+e.maximum+\" elemet lehet kiválasztani.\"},noResults:function(){return\"Nincs találat.\"},searching:function(){return\"Keresés…\"},removeAllItems:function(){return\"Távolítson el minden elemet\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hy\",[],function(){return{errorLoading:function(){return\"Արդյունքները հնարավոր չէ բեռնել։\"},inputTooLong:function(n){return\"Խնդրում ենք հեռացնել \"+(n.input.length-n.maximum)+\" նշան\"},inputTooShort:function(n){return\"Խնդրում ենք մուտքագրել \"+(n.minimum-n.input.length)+\" կամ ավել նշաններ\"},loadingMore:function(){return\"Բեռնվում են նոր արդյունքներ․․․\"},maximumSelected:function(n){return\"Դուք կարող եք ընտրել առավելագույնը \"+n.maximum+\" կետ\"},noResults:function(){return\"Արդյունքներ չեն գտնվել\"},searching:function(){return\"Որոնում․․․\"},removeAllItems:function(){return\"Հեռացնել բոլոր տարրերը\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/hy.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/hy\",[],function(){return{errorLoading:function(){return\"Արդյունքները հնարավոր չէ բեռնել։\"},inputTooLong:function(n){return\"Խնդրում ենք հեռացնել \"+(n.input.length-n.maximum)+\" նշան\"},inputTooShort:function(n){return\"Խնդրում ենք մուտքագրել \"+(n.minimum-n.input.length)+\" կամ ավել նշաններ\"},loadingMore:function(){return\"Բեռնվում են նոր արդյունքներ․․․\"},maximumSelected:function(n){return\"Դուք կարող եք ընտրել առավելագույնը \"+n.maximum+\" կետ\"},noResults:function(){return\"Արդյունքներ չեն գտնվել\"},searching:function(){return\"Որոնում․․․\"},removeAllItems:function(){return\"Հեռացնել բոլոր տարրերը\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/id.04debded514d.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/id\",[],function(){return{errorLoading:function(){return\"Data tidak boleh diambil.\"},inputTooLong:function(n){return\"Hapuskan \"+(n.input.length-n.maximum)+\" huruf\"},inputTooShort:function(n){return\"Masukkan \"+(n.minimum-n.input.length)+\" huruf lagi\"},loadingMore:function(){return\"Mengambil data…\"},maximumSelected:function(n){return\"Anda hanya dapat memilih \"+n.maximum+\" pilihan\"},noResults:function(){return\"Tidak ada data yang sesuai\"},searching:function(){return\"Mencari…\"},removeAllItems:function(){return\"Hapus semua item\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/id.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/id\",[],function(){return{errorLoading:function(){return\"Data tidak boleh diambil.\"},inputTooLong:function(n){return\"Hapuskan \"+(n.input.length-n.maximum)+\" huruf\"},inputTooShort:function(n){return\"Masukkan \"+(n.minimum-n.input.length)+\" huruf lagi\"},loadingMore:function(){return\"Mengambil data…\"},maximumSelected:function(n){return\"Anda hanya dapat memilih \"+n.maximum+\" pilihan\"},noResults:function(){return\"Tidak ada data yang sesuai\"},searching:function(){return\"Mencari…\"},removeAllItems:function(){return\"Hapus semua item\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/is\",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e=\"Vinsamlegast styttið texta um \"+t+\" staf\";return t<=1?e:e+\"i\"},inputTooShort:function(n){var t=n.minimum-n.input.length,e=\"Vinsamlegast skrifið \"+t+\" staf\";return t>1&&(e+=\"i\"),e+=\" í viðbót\"},loadingMore:function(){return\"Sæki fleiri niðurstöður…\"},maximumSelected:function(n){return\"Þú getur aðeins valið \"+n.maximum+\" atriði\"},noResults:function(){return\"Ekkert fannst\"},searching:function(){return\"Leita…\"},removeAllItems:function(){return\"Fjarlægðu öll atriði\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/is.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/is\",[],function(){return{inputTooLong:function(n){var t=n.input.length-n.maximum,e=\"Vinsamlegast styttið texta um \"+t+\" staf\";return t<=1?e:e+\"i\"},inputTooShort:function(n){var t=n.minimum-n.input.length,e=\"Vinsamlegast skrifið \"+t+\" staf\";return t>1&&(e+=\"i\"),e+=\" í viðbót\"},loadingMore:function(){return\"Sæki fleiri niðurstöður…\"},maximumSelected:function(n){return\"Þú getur aðeins valið \"+n.maximum+\" atriði\"},noResults:function(){return\"Ekkert fannst\"},searching:function(){return\"Leita…\"},removeAllItems:function(){return\"Fjarlægðu öll atriði\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/it.be4fe8d365b5.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/it\",[],function(){return{errorLoading:function(){return\"I risultati non possono essere caricati.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Per favore cancella \"+n+\" caratter\";return t+=1!==n?\"i\":\"e\"},inputTooShort:function(e){return\"Per favore inserisci \"+(e.minimum-e.input.length)+\" o più caratteri\"},loadingMore:function(){return\"Caricando più risultati…\"},maximumSelected:function(e){var n=\"Puoi selezionare solo \"+e.maximum+\" element\";return 1!==e.maximum?n+=\"i\":n+=\"o\",n},noResults:function(){return\"Nessun risultato trovato\"},searching:function(){return\"Sto cercando…\"},removeAllItems:function(){return\"Rimuovi tutti gli oggetti\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/it.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/it\",[],function(){return{errorLoading:function(){return\"I risultati non possono essere caricati.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Per favore cancella \"+n+\" caratter\";return t+=1!==n?\"i\":\"e\"},inputTooShort:function(e){return\"Per favore inserisci \"+(e.minimum-e.input.length)+\" o più caratteri\"},loadingMore:function(){return\"Caricando più risultati…\"},maximumSelected:function(e){var n=\"Puoi selezionare solo \"+e.maximum+\" element\";return 1!==e.maximum?n+=\"i\":n+=\"o\",n},noResults:function(){return\"Nessun risultato trovato\"},searching:function(){return\"Sto cercando…\"},removeAllItems:function(){return\"Rimuovi tutti gli oggetti\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ja.170ae885d74f.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ja\",[],function(){return{errorLoading:function(){return\"結果が読み込まれませんでした\"},inputTooLong:function(n){return n.input.length-n.maximum+\" 文字を削除してください\"},inputTooShort:function(n){return\"少なくとも \"+(n.minimum-n.input.length)+\" 文字を入力してください\"},loadingMore:function(){return\"読み込み中…\"},maximumSelected:function(n){return n.maximum+\" 件しか選択できません\"},noResults:function(){return\"対象が見つかりません\"},searching:function(){return\"検索しています…\"},removeAllItems:function(){return\"すべてのアイテムを削除\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ja.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ja\",[],function(){return{errorLoading:function(){return\"結果が読み込まれませんでした\"},inputTooLong:function(n){return n.input.length-n.maximum+\" 文字を削除してください\"},inputTooShort:function(n){return\"少なくとも \"+(n.minimum-n.input.length)+\" 文字を入力してください\"},loadingMore:function(){return\"読み込み中…\"},maximumSelected:function(n){return n.maximum+\" 件しか選択できません\"},noResults:function(){return\"対象が見つかりません\"},searching:function(){return\"検索しています…\"},removeAllItems:function(){return\"すべてのアイテムを削除\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ka.2083264a54f0.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ka\",[],function(){return{errorLoading:function(){return\"მონაცემების ჩატვირთვა შეუძლებელია.\"},inputTooLong:function(n){return\"გთხოვთ აკრიფეთ \"+(n.input.length-n.maximum)+\" სიმბოლოთი ნაკლები\"},inputTooShort:function(n){return\"გთხოვთ აკრიფეთ \"+(n.minimum-n.input.length)+\" სიმბოლო ან მეტი\"},loadingMore:function(){return\"მონაცემების ჩატვირთვა…\"},maximumSelected:function(n){return\"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს \"+n.maximum+\" ელემენტი\"},noResults:function(){return\"რეზულტატი არ მოიძებნა\"},searching:function(){return\"ძიება…\"},removeAllItems:function(){return\"ამოიღე ყველა ელემენტი\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ka.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ka\",[],function(){return{errorLoading:function(){return\"მონაცემების ჩატვირთვა შეუძლებელია.\"},inputTooLong:function(n){return\"გთხოვთ აკრიფეთ \"+(n.input.length-n.maximum)+\" სიმბოლოთი ნაკლები\"},inputTooShort:function(n){return\"გთხოვთ აკრიფეთ \"+(n.minimum-n.input.length)+\" სიმბოლო ან მეტი\"},loadingMore:function(){return\"მონაცემების ჩატვირთვა…\"},maximumSelected:function(n){return\"თქვენ შეგიძლიათ აირჩიოთ არაუმეტეს \"+n.maximum+\" ელემენტი\"},noResults:function(){return\"რეზულტატი არ მოიძებნა\"},searching:function(){return\"ძიება…\"},removeAllItems:function(){return\"ამოიღე ყველა ელემენტი\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/km.c23089cb06ca.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/km\",[],function(){return{errorLoading:function(){return\"មិនអាចទាញយកទិន្នន័យ\"},inputTooLong:function(n){return\"សូមលុបចេញ  \"+(n.input.length-n.maximum)+\" អក្សរ\"},inputTooShort:function(n){return\"សូមបញ្ចូល\"+(n.minimum-n.input.length)+\" អក្សរ រឺ ច្រើនជាងនេះ\"},loadingMore:function(){return\"កំពុងទាញយកទិន្នន័យបន្ថែម...\"},maximumSelected:function(n){return\"អ្នកអាចជ្រើសរើសបានតែ \"+n.maximum+\" ជម្រើសប៉ុណ្ណោះ\"},noResults:function(){return\"មិនមានលទ្ធផល\"},searching:function(){return\"កំពុងស្វែងរក...\"},removeAllItems:function(){return\"លុបធាតុទាំងអស់\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/km.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/km\",[],function(){return{errorLoading:function(){return\"មិនអាចទាញយកទិន្នន័យ\"},inputTooLong:function(n){return\"សូមលុបចេញ  \"+(n.input.length-n.maximum)+\" អក្សរ\"},inputTooShort:function(n){return\"សូមបញ្ចូល\"+(n.minimum-n.input.length)+\" អក្សរ រឺ ច្រើនជាងនេះ\"},loadingMore:function(){return\"កំពុងទាញយកទិន្នន័យបន្ថែម...\"},maximumSelected:function(n){return\"អ្នកអាចជ្រើសរើសបានតែ \"+n.maximum+\" ជម្រើសប៉ុណ្ណោះ\"},noResults:function(){return\"មិនមានលទ្ធផល\"},searching:function(){return\"កំពុងស្វែងរក...\"},removeAllItems:function(){return\"លុបធាតុទាំងអស់\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ko.e7be6c20e673.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ko\",[],function(){return{errorLoading:function(){return\"결과를 불러올 수 없습니다.\"},inputTooLong:function(n){return\"너무 깁니다. \"+(n.input.length-n.maximum)+\" 글자 지워주세요.\"},inputTooShort:function(n){return\"너무 짧습니다. \"+(n.minimum-n.input.length)+\" 글자 더 입력해주세요.\"},loadingMore:function(){return\"불러오는 중…\"},maximumSelected:function(n){return\"최대 \"+n.maximum+\"개까지만 선택 가능합니다.\"},noResults:function(){return\"결과가 없습니다.\"},searching:function(){return\"검색 중…\"},removeAllItems:function(){return\"모든 항목 삭제\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ko.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ko\",[],function(){return{errorLoading:function(){return\"결과를 불러올 수 없습니다.\"},inputTooLong:function(n){return\"너무 깁니다. \"+(n.input.length-n.maximum)+\" 글자 지워주세요.\"},inputTooShort:function(n){return\"너무 짧습니다. \"+(n.minimum-n.input.length)+\" 글자 더 입력해주세요.\"},loadingMore:function(){return\"불러오는 중…\"},maximumSelected:function(n){return\"최대 \"+n.maximum+\"개까지만 선택 가능합니다.\"},noResults:function(){return\"결과가 없습니다.\"},searching:function(){return\"검색 중…\"},removeAllItems:function(){return\"모든 항목 삭제\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/lt.23c7ce903300.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/lt\",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t=\"Pašalinkite \"+i+\" simbol\";return t+=n(i,\"į\",\"ius\",\"ių\")},inputTooShort:function(e){var i=e.minimum-e.input.length,t=\"Įrašykite dar \"+i+\" simbol\";return t+=n(i,\"į\",\"ius\",\"ių\")},loadingMore:function(){return\"Kraunama daugiau rezultatų…\"},maximumSelected:function(e){var i=\"Jūs galite pasirinkti tik \"+e.maximum+\" element\";return i+=n(e.maximum,\"ą\",\"us\",\"ų\")},noResults:function(){return\"Atitikmenų nerasta\"},searching:function(){return\"Ieškoma…\"},removeAllItems:function(){return\"Pašalinti visus elementus\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/lt.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/lt\",[],function(){function n(n,e,i,t){return n%10==1&&(n%100<11||n%100>19)?e:n%10>=2&&n%10<=9&&(n%100<11||n%100>19)?i:t}return{inputTooLong:function(e){var i=e.input.length-e.maximum,t=\"Pašalinkite \"+i+\" simbol\";return t+=n(i,\"į\",\"ius\",\"ių\")},inputTooShort:function(e){var i=e.minimum-e.input.length,t=\"Įrašykite dar \"+i+\" simbol\";return t+=n(i,\"į\",\"ius\",\"ių\")},loadingMore:function(){return\"Kraunama daugiau rezultatų…\"},maximumSelected:function(e){var i=\"Jūs galite pasirinkti tik \"+e.maximum+\" element\";return i+=n(e.maximum,\"ą\",\"us\",\"ų\")},noResults:function(){return\"Atitikmenų nerasta\"},searching:function(){return\"Ieškoma…\"},removeAllItems:function(){return\"Pašalinti visus elementus\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/lv.08e62128eac1.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/lv\",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i=\"Lūdzu ievadiet par  \"+u;return(i+=\" simbol\"+e(u,\"iem\",\"u\",\"iem\"))+\" mazāk\"},inputTooShort:function(n){var u=n.minimum-n.input.length,i=\"Lūdzu ievadiet vēl \"+u;return i+=\" simbol\"+e(u,\"us\",\"u\",\"us\")},loadingMore:function(){return\"Datu ielāde…\"},maximumSelected:function(n){var u=\"Jūs varat izvēlēties ne vairāk kā \"+n.maximum;return u+=\" element\"+e(n.maximum,\"us\",\"u\",\"us\")},noResults:function(){return\"Sakritību nav\"},searching:function(){return\"Meklēšana…\"},removeAllItems:function(){return\"Noņemt visus vienumus\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/lv.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/lv\",[],function(){function e(e,n,u,i){return 11===e?n:e%10==1?u:i}return{inputTooLong:function(n){var u=n.input.length-n.maximum,i=\"Lūdzu ievadiet par  \"+u;return(i+=\" simbol\"+e(u,\"iem\",\"u\",\"iem\"))+\" mazāk\"},inputTooShort:function(n){var u=n.minimum-n.input.length,i=\"Lūdzu ievadiet vēl \"+u;return i+=\" simbol\"+e(u,\"us\",\"u\",\"us\")},loadingMore:function(){return\"Datu ielāde…\"},maximumSelected:function(n){var u=\"Jūs varat izvēlēties ne vairāk kā \"+n.maximum;return u+=\" element\"+e(n.maximum,\"us\",\"u\",\"us\")},noResults:function(){return\"Sakritību nav\"},searching:function(){return\"Meklēšana…\"},removeAllItems:function(){return\"Noņemt visus vienumus\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/mk.dabbb9087130.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/mk\",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,\"Ве молиме внесете \"+n.maximum+\" помалку карактер\");return 1!==n.maximum&&(e+=\"и\"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,\"Ве молиме внесете уште \"+n.maximum+\" карактер\");return 1!==n.maximum&&(e+=\"и\"),e},loadingMore:function(){return\"Вчитување резултати…\"},maximumSelected:function(n){var e=\"Можете да изберете само \"+n.maximum+\" ставк\";return 1===n.maximum?e+=\"а\":e+=\"и\",e},noResults:function(){return\"Нема пронајдено совпаѓања\"},searching:function(){return\"Пребарување…\"},removeAllItems:function(){return\"Отстрани ги сите предмети\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/mk.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/mk\",[],function(){return{inputTooLong:function(n){var e=(n.input.length,n.maximum,\"Ве молиме внесете \"+n.maximum+\" помалку карактер\");return 1!==n.maximum&&(e+=\"и\"),e},inputTooShort:function(n){var e=(n.minimum,n.input.length,\"Ве молиме внесете уште \"+n.maximum+\" карактер\");return 1!==n.maximum&&(e+=\"и\"),e},loadingMore:function(){return\"Вчитување резултати…\"},maximumSelected:function(n){var e=\"Можете да изберете само \"+n.maximum+\" ставк\";return 1===n.maximum?e+=\"а\":e+=\"и\",e},noResults:function(){return\"Нема пронајдено совпаѓања\"},searching:function(){return\"Пребарување…\"},removeAllItems:function(){return\"Отстрани ги сите предмети\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ms\",[],function(){return{errorLoading:function(){return\"Keputusan tidak berjaya dimuatkan.\"},inputTooLong:function(n){return\"Sila hapuskan \"+(n.input.length-n.maximum)+\" aksara\"},inputTooShort:function(n){return\"Sila masukkan \"+(n.minimum-n.input.length)+\" atau lebih aksara\"},loadingMore:function(){return\"Sedang memuatkan keputusan…\"},maximumSelected:function(n){return\"Anda hanya boleh memilih \"+n.maximum+\" pilihan\"},noResults:function(){return\"Tiada padanan yang ditemui\"},searching:function(){return\"Mencari…\"},removeAllItems:function(){return\"Keluarkan semua item\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ms.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ms\",[],function(){return{errorLoading:function(){return\"Keputusan tidak berjaya dimuatkan.\"},inputTooLong:function(n){return\"Sila hapuskan \"+(n.input.length-n.maximum)+\" aksara\"},inputTooShort:function(n){return\"Sila masukkan \"+(n.minimum-n.input.length)+\" atau lebih aksara\"},loadingMore:function(){return\"Sedang memuatkan keputusan…\"},maximumSelected:function(n){return\"Anda hanya boleh memilih \"+n.maximum+\" pilihan\"},noResults:function(){return\"Tiada padanan yang ditemui\"},searching:function(){return\"Mencari…\"},removeAllItems:function(){return\"Keluarkan semua item\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/nb.da2fce143f27.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/nb\",[],function(){return{errorLoading:function(){return\"Kunne ikke hente resultater.\"},inputTooLong:function(e){return\"Vennligst fjern \"+(e.input.length-e.maximum)+\" tegn\"},inputTooShort:function(e){return\"Vennligst skriv inn \"+(e.minimum-e.input.length)+\" tegn til\"},loadingMore:function(){return\"Laster flere resultater…\"},maximumSelected:function(e){return\"Du kan velge maks \"+e.maximum+\" elementer\"},noResults:function(){return\"Ingen treff\"},searching:function(){return\"Søker…\"},removeAllItems:function(){return\"Fjern alle elementer\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/nb.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/nb\",[],function(){return{errorLoading:function(){return\"Kunne ikke hente resultater.\"},inputTooLong:function(e){return\"Vennligst fjern \"+(e.input.length-e.maximum)+\" tegn\"},inputTooShort:function(e){return\"Vennligst skriv inn \"+(e.minimum-e.input.length)+\" tegn til\"},loadingMore:function(){return\"Laster flere resultater…\"},maximumSelected:function(e){return\"Du kan velge maks \"+e.maximum+\" elementer\"},noResults:function(){return\"Ingen treff\"},searching:function(){return\"Søker…\"},removeAllItems:function(){return\"Fjern alle elementer\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ne\",[],function(){return{errorLoading:function(){return\"नतिजाहरु देखाउन सकिएन।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"कृपया \"+e+\" अक्षर मेटाउनुहोस्।\";return 1!=e&&(u+=\"कृपया \"+e+\" अक्षरहरु मेटाउनुहोस्।\"),u},inputTooShort:function(n){return\"कृपया बाँकी रहेका \"+(n.minimum-n.input.length)+\" वा अरु धेरै अक्षरहरु भर्नुहोस्।\"},loadingMore:function(){return\"अरु नतिजाहरु भरिँदैछन् …\"},maximumSelected:function(n){var e=\"तँपाई \"+n.maximum+\" वस्तु मात्र छान्न पाउँनुहुन्छ।\";return 1!=n.maximum&&(e=\"तँपाई \"+n.maximum+\" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।\"),e},noResults:function(){return\"कुनै पनि नतिजा भेटिएन।\"},searching:function(){return\"खोजि हुँदैछ…\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ne.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ne\",[],function(){return{errorLoading:function(){return\"नतिजाहरु देखाउन सकिएन।\"},inputTooLong:function(n){var e=n.input.length-n.maximum,u=\"कृपया \"+e+\" अक्षर मेटाउनुहोस्।\";return 1!=e&&(u+=\"कृपया \"+e+\" अक्षरहरु मेटाउनुहोस्।\"),u},inputTooShort:function(n){return\"कृपया बाँकी रहेका \"+(n.minimum-n.input.length)+\" वा अरु धेरै अक्षरहरु भर्नुहोस्।\"},loadingMore:function(){return\"अरु नतिजाहरु भरिँदैछन् …\"},maximumSelected:function(n){var e=\"तँपाई \"+n.maximum+\" वस्तु मात्र छान्न पाउँनुहुन्छ।\";return 1!=n.maximum&&(e=\"तँपाई \"+n.maximum+\" वस्तुहरु मात्र छान्न पाउँनुहुन्छ।\"),e},noResults:function(){return\"कुनै पनि नतिजा भेटिएन।\"},searching:function(){return\"खोजि हुँदैछ…\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/nl.997868a37ed8.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/nl\",[],function(){return{errorLoading:function(){return\"De resultaten konden niet worden geladen.\"},inputTooLong:function(e){return\"Gelieve \"+(e.input.length-e.maximum)+\" karakters te verwijderen\"},inputTooShort:function(e){return\"Gelieve \"+(e.minimum-e.input.length)+\" of meer karakters in te voeren\"},loadingMore:function(){return\"Meer resultaten laden…\"},maximumSelected:function(e){var n=1==e.maximum?\"kan\":\"kunnen\",r=\"Er \"+n+\" maar \"+e.maximum+\" item\";return 1!=e.maximum&&(r+=\"s\"),r+=\" worden geselecteerd\"},noResults:function(){return\"Geen resultaten gevonden…\"},searching:function(){return\"Zoeken…\"},removeAllItems:function(){return\"Verwijder alle items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/nl.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/nl\",[],function(){return{errorLoading:function(){return\"De resultaten konden niet worden geladen.\"},inputTooLong:function(e){return\"Gelieve \"+(e.input.length-e.maximum)+\" karakters te verwijderen\"},inputTooShort:function(e){return\"Gelieve \"+(e.minimum-e.input.length)+\" of meer karakters in te voeren\"},loadingMore:function(){return\"Meer resultaten laden…\"},maximumSelected:function(e){var n=1==e.maximum?\"kan\":\"kunnen\",r=\"Er \"+n+\" maar \"+e.maximum+\" item\";return 1!=e.maximum&&(r+=\"s\"),r+=\" worden geselecteerd\"},noResults:function(){return\"Geen resultaten gevonden…\"},searching:function(){return\"Zoeken…\"},removeAllItems:function(){return\"Verwijder alle items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/pl.6031b4f16452.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/pl\",[],function(){var n=[\"znak\",\"znaki\",\"znaków\"],e=[\"element\",\"elementy\",\"elementów\"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return\"Nie można załadować wyników.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Usuń \"+t+\" \"+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Podaj przynajmniej \"+t+\" \"+r(t,n)},loadingMore:function(){return\"Trwa ładowanie…\"},maximumSelected:function(n){return\"Możesz zaznaczyć tylko \"+n.maximum+\" \"+r(n.maximum,e)},noResults:function(){return\"Brak wyników\"},searching:function(){return\"Trwa wyszukiwanie…\"},removeAllItems:function(){return\"Usuń wszystkie przedmioty\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/pl.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/pl\",[],function(){var n=[\"znak\",\"znaki\",\"znaków\"],e=[\"element\",\"elementy\",\"elementów\"],r=function(n,e){return 1===n?e[0]:n>1&&n<=4?e[1]:n>=5?e[2]:void 0};return{errorLoading:function(){return\"Nie można załadować wyników.\"},inputTooLong:function(e){var t=e.input.length-e.maximum;return\"Usuń \"+t+\" \"+r(t,n)},inputTooShort:function(e){var t=e.minimum-e.input.length;return\"Podaj przynajmniej \"+t+\" \"+r(t,n)},loadingMore:function(){return\"Trwa ładowanie…\"},maximumSelected:function(n){return\"Możesz zaznaczyć tylko \"+n.maximum+\" \"+r(n.maximum,e)},noResults:function(){return\"Brak wyników\"},searching:function(){return\"Trwa wyszukiwanie…\"},removeAllItems:function(){return\"Usuń wszystkie przedmioty\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ps\",[],function(){return{errorLoading:function(){return\"پايلي نه سي ترلاسه کېدای\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=\"د مهربانۍ لمخي \"+e+\" توری ړنګ کړئ\";return 1!=e&&(r=r.replace(\"توری\",\"توري\")),r},inputTooShort:function(n){return\"لږ تر لږه \"+(n.minimum-n.input.length)+\" يا ډېر توري وليکئ\"},loadingMore:function(){return\"نوري پايلي ترلاسه کيږي...\"},maximumSelected:function(n){var e=\"تاسو يوازي \"+n.maximum+\" قلم په نښه کولای سی\";return 1!=n.maximum&&(e=e.replace(\"قلم\",\"قلمونه\")),e},noResults:function(){return\"پايلي و نه موندل سوې\"},searching:function(){return\"لټول کيږي...\"},removeAllItems:function(){return\"ټول توکي لرې کړئ\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ps.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ps\",[],function(){return{errorLoading:function(){return\"پايلي نه سي ترلاسه کېدای\"},inputTooLong:function(n){var e=n.input.length-n.maximum,r=\"د مهربانۍ لمخي \"+e+\" توری ړنګ کړئ\";return 1!=e&&(r=r.replace(\"توری\",\"توري\")),r},inputTooShort:function(n){return\"لږ تر لږه \"+(n.minimum-n.input.length)+\" يا ډېر توري وليکئ\"},loadingMore:function(){return\"نوري پايلي ترلاسه کيږي...\"},maximumSelected:function(n){var e=\"تاسو يوازي \"+n.maximum+\" قلم په نښه کولای سی\";return 1!=n.maximum&&(e=e.replace(\"قلم\",\"قلمونه\")),e},noResults:function(){return\"پايلي و نه موندل سوې\"},searching:function(){return\"لټول کيږي...\"},removeAllItems:function(){return\"ټول توکي لرې کړئ\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/pt-BR\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Apague \"+n+\" caracter\";return 1!=n&&(r+=\"es\"),r},inputTooShort:function(e){return\"Digite \"+(e.minimum-e.input.length)+\" ou mais caracteres\"},loadingMore:function(){return\"Carregando mais resultados…\"},maximumSelected:function(e){var n=\"Você só pode selecionar \"+e.maximum+\" ite\";return 1==e.maximum?n+=\"m\":n+=\"ns\",n},noResults:function(){return\"Nenhum resultado encontrado\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Remover todos os itens\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/pt-BR.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/pt-BR\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,r=\"Apague \"+n+\" caracter\";return 1!=n&&(r+=\"es\"),r},inputTooShort:function(e){return\"Digite \"+(e.minimum-e.input.length)+\" ou mais caracteres\"},loadingMore:function(){return\"Carregando mais resultados…\"},maximumSelected:function(e){var n=\"Você só pode selecionar \"+e.maximum+\" ite\";return 1==e.maximum?n+=\"m\":n+=\"ns\",n},noResults:function(){return\"Nenhum resultado encontrado\"},searching:function(){return\"Buscando…\"},removeAllItems:function(){return\"Remover todos os itens\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/pt\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,n=\"Por favor apague \"+r+\" \";return n+=1!=r?\"caracteres\":\"caractere\"},inputTooShort:function(e){return\"Introduza \"+(e.minimum-e.input.length)+\" ou mais caracteres\"},loadingMore:function(){return\"A carregar mais resultados…\"},maximumSelected:function(e){var r=\"Apenas pode seleccionar \"+e.maximum+\" \";return r+=1!=e.maximum?\"itens\":\"item\"},noResults:function(){return\"Sem resultados\"},searching:function(){return\"A procurar…\"},removeAllItems:function(){return\"Remover todos os itens\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/pt.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/pt\",[],function(){return{errorLoading:function(){return\"Os resultados não puderam ser carregados.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,n=\"Por favor apague \"+r+\" \";return n+=1!=r?\"caracteres\":\"caractere\"},inputTooShort:function(e){return\"Introduza \"+(e.minimum-e.input.length)+\" ou mais caracteres\"},loadingMore:function(){return\"A carregar mais resultados…\"},maximumSelected:function(e){var r=\"Apenas pode seleccionar \"+e.maximum+\" \";return r+=1!=e.maximum?\"itens\":\"item\"},noResults:function(){return\"Sem resultados\"},searching:function(){return\"A procurar…\"},removeAllItems:function(){return\"Remover todos os itens\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/ro\",[],function(){return{errorLoading:function(){return\"Rezultatele nu au putut fi incărcate.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vă rugăm să ștergeți\"+t+\" caracter\";return 1!==t&&(n+=\"e\"),n},inputTooShort:function(e){return\"Vă rugăm să introduceți \"+(e.minimum-e.input.length)+\" sau mai multe caractere\"},loadingMore:function(){return\"Se încarcă mai multe rezultate…\"},maximumSelected:function(e){var t=\"Aveți voie să selectați cel mult \"+e.maximum;return t+=\" element\",1!==e.maximum&&(t+=\"e\"),t},noResults:function(){return\"Nu au fost găsite rezultate\"},searching:function(){return\"Căutare…\"},removeAllItems:function(){return\"Eliminați toate elementele\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ro.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/ro\",[],function(){return{errorLoading:function(){return\"Rezultatele nu au putut fi incărcate.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Vă rugăm să ștergeți\"+t+\" caracter\";return 1!==t&&(n+=\"e\"),n},inputTooShort:function(e){return\"Vă rugăm să introduceți \"+(e.minimum-e.input.length)+\" sau mai multe caractere\"},loadingMore:function(){return\"Se încarcă mai multe rezultate…\"},maximumSelected:function(e){var t=\"Aveți voie să selectați cel mult \"+e.maximum;return t+=\" element\",1!==e.maximum&&(t+=\"e\"),t},noResults:function(){return\"Nu au fost găsite rezultate\"},searching:function(){return\"Căutare…\"},removeAllItems:function(){return\"Eliminați toate elementele\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ru\",[],function(){function n(n,e,r,u){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?r:e:u}return{errorLoading:function(){return\"Невозможно загрузить результаты\"},inputTooLong:function(e){var r=e.input.length-e.maximum,u=\"Пожалуйста, введите на \"+r+\" символ\";return u+=n(r,\"\",\"a\",\"ов\"),u+=\" меньше\"},inputTooShort:function(e){var r=e.minimum-e.input.length,u=\"Пожалуйста, введите ещё хотя бы \"+r+\" символ\";return u+=n(r,\"\",\"a\",\"ов\")},loadingMore:function(){return\"Загрузка данных…\"},maximumSelected:function(e){var r=\"Вы можете выбрать не более \"+e.maximum+\" элемент\";return r+=n(e.maximum,\"\",\"a\",\"ов\")},noResults:function(){return\"Совпадений не найдено\"},searching:function(){return\"Поиск…\"},removeAllItems:function(){return\"Удалить все элементы\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/ru.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/ru\",[],function(){function n(n,e,r,u){return n%10<5&&n%10>0&&n%100<5||n%100>20?n%10>1?r:e:u}return{errorLoading:function(){return\"Невозможно загрузить результаты\"},inputTooLong:function(e){var r=e.input.length-e.maximum,u=\"Пожалуйста, введите на \"+r+\" символ\";return u+=n(r,\"\",\"a\",\"ов\"),u+=\" меньше\"},inputTooShort:function(e){var r=e.minimum-e.input.length,u=\"Пожалуйста, введите ещё хотя бы \"+r+\" символ\";return u+=n(r,\"\",\"a\",\"ов\")},loadingMore:function(){return\"Загрузка данных…\"},maximumSelected:function(e){var r=\"Вы можете выбрать не более \"+e.maximum+\" элемент\";return r+=n(e.maximum,\"\",\"a\",\"ов\")},noResults:function(){return\"Совпадений не найдено\"},searching:function(){return\"Поиск…\"},removeAllItems:function(){return\"Удалить все элементы\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sk.33d02cef8d11.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sk\",[],function(){var e={2:function(e){return e?\"dva\":\"dve\"},3:function(){return\"tri\"},4:function(){return\"štyri\"}};return{errorLoading:function(){return\"Výsledky sa nepodarilo načítať.\"},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?\"Prosím, zadajte o jeden znak menej\":t>=2&&t<=4?\"Prosím, zadajte o \"+e[t](!0)+\" znaky menej\":\"Prosím, zadajte o \"+t+\" znakov menej\"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?\"Prosím, zadajte ešte jeden znak\":t<=4?\"Prosím, zadajte ešte ďalšie \"+e[t](!0)+\" znaky\":\"Prosím, zadajte ešte ďalších \"+t+\" znakov\"},loadingMore:function(){return\"Načítanie ďalších výsledkov…\"},maximumSelected:function(n){return 1==n.maximum?\"Môžete zvoliť len jednu položku\":n.maximum>=2&&n.maximum<=4?\"Môžete zvoliť najviac \"+e[n.maximum](!1)+\" položky\":\"Môžete zvoliť najviac \"+n.maximum+\" položiek\"},noResults:function(){return\"Nenašli sa žiadne položky\"},searching:function(){return\"Vyhľadávanie…\"},removeAllItems:function(){return\"Odstráňte všetky položky\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sk.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sk\",[],function(){var e={2:function(e){return e?\"dva\":\"dve\"},3:function(){return\"tri\"},4:function(){return\"štyri\"}};return{errorLoading:function(){return\"Výsledky sa nepodarilo načítať.\"},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?\"Prosím, zadajte o jeden znak menej\":t>=2&&t<=4?\"Prosím, zadajte o \"+e[t](!0)+\" znaky menej\":\"Prosím, zadajte o \"+t+\" znakov menej\"},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?\"Prosím, zadajte ešte jeden znak\":t<=4?\"Prosím, zadajte ešte ďalšie \"+e[t](!0)+\" znaky\":\"Prosím, zadajte ešte ďalších \"+t+\" znakov\"},loadingMore:function(){return\"Načítanie ďalších výsledkov…\"},maximumSelected:function(n){return 1==n.maximum?\"Môžete zvoliť len jednu položku\":n.maximum>=2&&n.maximum<=4?\"Môžete zvoliť najviac \"+e[n.maximum](!1)+\" položky\":\"Môžete zvoliť najviac \"+n.maximum+\" položiek\"},noResults:function(){return\"Nenašli sa žiadne položky\"},searching:function(){return\"Vyhľadávanie…\"},removeAllItems:function(){return\"Odstráňte všetky položky\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sl.131a78bc0752.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sl\",[],function(){return{errorLoading:function(){return\"Zadetkov iskanja ni bilo mogoče naložiti.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Prosim zbrišite \"+n+\" znak\";return 2==n?t+=\"a\":1!=n&&(t+=\"e\"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t=\"Prosim vpišite še \"+n+\" znak\";return 2==n?t+=\"a\":1!=n&&(t+=\"e\"),t},loadingMore:function(){return\"Nalagam več zadetkov…\"},maximumSelected:function(e){var n=\"Označite lahko največ \"+e.maximum+\" predmet\";return 2==e.maximum?n+=\"a\":1!=e.maximum&&(n+=\"e\"),n},noResults:function(){return\"Ni zadetkov.\"},searching:function(){return\"Iščem…\"},removeAllItems:function(){return\"Odstranite vse elemente\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sl.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sl\",[],function(){return{errorLoading:function(){return\"Zadetkov iskanja ni bilo mogoče naložiti.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Prosim zbrišite \"+n+\" znak\";return 2==n?t+=\"a\":1!=n&&(t+=\"e\"),t},inputTooShort:function(e){var n=e.minimum-e.input.length,t=\"Prosim vpišite še \"+n+\" znak\";return 2==n?t+=\"a\":1!=n&&(t+=\"e\"),t},loadingMore:function(){return\"Nalagam več zadetkov…\"},maximumSelected:function(e){var n=\"Označite lahko največ \"+e.maximum+\" predmet\";return 2==e.maximum?n+=\"a\":1!=e.maximum&&(n+=\"e\"),n},noResults:function(){return\"Ni zadetkov.\"},searching:function(){return\"Iščem…\"},removeAllItems:function(){return\"Odstranite vse elemente\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sq.5636b60d29c9.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sq\",[],function(){return{errorLoading:function(){return\"Rezultatet nuk mund të ngarkoheshin.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Të lutem fshi \"+n+\" karakter\";return 1!=n&&(t+=\"e\"),t},inputTooShort:function(e){return\"Të lutem shkruaj \"+(e.minimum-e.input.length)+\" ose më shumë karaktere\"},loadingMore:function(){return\"Duke ngarkuar më shumë rezultate…\"},maximumSelected:function(e){var n=\"Mund të zgjedhësh vetëm \"+e.maximum+\" element\";return 1!=e.maximum&&(n+=\"e\"),n},noResults:function(){return\"Nuk u gjet asnjë rezultat\"},searching:function(){return\"Duke kërkuar…\"},removeAllItems:function(){return\"Hiq të gjitha sendet\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sq.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/sq\",[],function(){return{errorLoading:function(){return\"Rezultatet nuk mund të ngarkoheshin.\"},inputTooLong:function(e){var n=e.input.length-e.maximum,t=\"Të lutem fshi \"+n+\" karakter\";return 1!=n&&(t+=\"e\"),t},inputTooShort:function(e){return\"Të lutem shkruaj \"+(e.minimum-e.input.length)+\" ose më shumë karaktere\"},loadingMore:function(){return\"Duke ngarkuar më shumë rezultate…\"},maximumSelected:function(e){var n=\"Mund të zgjedhësh vetëm \"+e.maximum+\" element\";return 1!=e.maximum&&(n+=\"e\"),n},noResults:function(){return\"Nuk u gjet asnjë rezultat\"},searching:function(){return\"Duke kërkuar…\"},removeAllItems:function(){return\"Hiq të gjitha sendet\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sr-Cyrl\",[],function(){function n(n,e,r,u){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:u}return{errorLoading:function(){return\"Преузимање није успело.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,u=\"Обришите \"+r+\" симбол\";return u+=n(r,\"\",\"а\",\"а\")},inputTooShort:function(e){var r=e.minimum-e.input.length,u=\"Укуцајте бар још \"+r+\" симбол\";return u+=n(r,\"\",\"а\",\"а\")},loadingMore:function(){return\"Преузимање још резултата…\"},maximumSelected:function(e){var r=\"Можете изабрати само \"+e.maximum+\" ставк\";return r+=n(e.maximum,\"у\",\"е\",\"и\")},noResults:function(){return\"Ништа није пронађено\"},searching:function(){return\"Претрага…\"},removeAllItems:function(){return\"Уклоните све ставке\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sr-Cyrl.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sr-Cyrl\",[],function(){function n(n,e,r,u){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:u}return{errorLoading:function(){return\"Преузимање није успело.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,u=\"Обришите \"+r+\" симбол\";return u+=n(r,\"\",\"а\",\"а\")},inputTooShort:function(e){var r=e.minimum-e.input.length,u=\"Укуцајте бар још \"+r+\" симбол\";return u+=n(r,\"\",\"а\",\"а\")},loadingMore:function(){return\"Преузимање још резултата…\"},maximumSelected:function(e){var r=\"Можете изабрати само \"+e.maximum+\" ставк\";return r+=n(e.maximum,\"у\",\"е\",\"и\")},noResults:function(){return\"Ништа није пронађено\"},searching:function(){return\"Претрага…\"},removeAllItems:function(){return\"Уклоните све ставке\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sr.5ed85a48f483.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sr\",[],function(){function n(n,e,r,t){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:t}return{errorLoading:function(){return\"Preuzimanje nije uspelo.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,t=\"Obrišite \"+r+\" simbol\";return t+=n(r,\"\",\"a\",\"a\")},inputTooShort:function(e){var r=e.minimum-e.input.length,t=\"Ukucajte bar još \"+r+\" simbol\";return t+=n(r,\"\",\"a\",\"a\")},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(e){var r=\"Možete izabrati samo \"+e.maximum+\" stavk\";return r+=n(e.maximum,\"u\",\"e\",\"i\")},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Уклоните све ставке\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sr.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sr\",[],function(){function n(n,e,r,t){return n%10==1&&n%100!=11?e:n%10>=2&&n%10<=4&&(n%100<12||n%100>14)?r:t}return{errorLoading:function(){return\"Preuzimanje nije uspelo.\"},inputTooLong:function(e){var r=e.input.length-e.maximum,t=\"Obrišite \"+r+\" simbol\";return t+=n(r,\"\",\"a\",\"a\")},inputTooShort:function(e){var r=e.minimum-e.input.length,t=\"Ukucajte bar još \"+r+\" simbol\";return t+=n(r,\"\",\"a\",\"a\")},loadingMore:function(){return\"Preuzimanje još rezultata…\"},maximumSelected:function(e){var r=\"Možete izabrati samo \"+e.maximum+\" stavk\";return r+=n(e.maximum,\"u\",\"e\",\"i\")},noResults:function(){return\"Ništa nije pronađeno\"},searching:function(){return\"Pretraga…\"},removeAllItems:function(){return\"Уклоните све ставке\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sv\",[],function(){return{errorLoading:function(){return\"Resultat kunde inte laddas.\"},inputTooLong:function(n){return\"Vänligen sudda ut \"+(n.input.length-n.maximum)+\" tecken\"},inputTooShort:function(n){return\"Vänligen skriv in \"+(n.minimum-n.input.length)+\" eller fler tecken\"},loadingMore:function(){return\"Laddar fler resultat…\"},maximumSelected:function(n){return\"Du kan max välja \"+n.maximum+\" element\"},noResults:function(){return\"Inga träffar\"},searching:function(){return\"Söker…\"},removeAllItems:function(){return\"Ta bort alla objekt\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/sv.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/sv\",[],function(){return{errorLoading:function(){return\"Resultat kunde inte laddas.\"},inputTooLong:function(n){return\"Vänligen sudda ut \"+(n.input.length-n.maximum)+\" tecken\"},inputTooShort:function(n){return\"Vänligen skriv in \"+(n.minimum-n.input.length)+\" eller fler tecken\"},loadingMore:function(){return\"Laddar fler resultat…\"},maximumSelected:function(n){return\"Du kan max välja \"+n.maximum+\" element\"},noResults:function(){return\"Inga träffar\"},searching:function(){return\"Söker…\"},removeAllItems:function(){return\"Ta bort alla objekt\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/th.f38c20b0221b.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/th\",[],function(){return{errorLoading:function(){return\"ไม่สามารถค้นข้อมูลได้\"},inputTooLong:function(n){return\"โปรดลบออก \"+(n.input.length-n.maximum)+\" ตัวอักษร\"},inputTooShort:function(n){return\"โปรดพิมพ์เพิ่มอีก \"+(n.minimum-n.input.length)+\" ตัวอักษร\"},loadingMore:function(){return\"กำลังค้นข้อมูลเพิ่ม…\"},maximumSelected:function(n){return\"คุณสามารถเลือกได้ไม่เกิน \"+n.maximum+\" รายการ\"},noResults:function(){return\"ไม่พบข้อมูล\"},searching:function(){return\"กำลังค้นข้อมูล…\"},removeAllItems:function(){return\"ลบรายการทั้งหมด\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/th.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/th\",[],function(){return{errorLoading:function(){return\"ไม่สามารถค้นข้อมูลได้\"},inputTooLong:function(n){return\"โปรดลบออก \"+(n.input.length-n.maximum)+\" ตัวอักษร\"},inputTooShort:function(n){return\"โปรดพิมพ์เพิ่มอีก \"+(n.minimum-n.input.length)+\" ตัวอักษร\"},loadingMore:function(){return\"กำลังค้นข้อมูลเพิ่ม…\"},maximumSelected:function(n){return\"คุณสามารถเลือกได้ไม่เกิน \"+n.maximum+\" รายการ\"},noResults:function(){return\"ไม่พบข้อมูล\"},searching:function(){return\"กำลังค้นข้อมูล…\"},removeAllItems:function(){return\"ลบรายการทั้งหมด\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/tk.7c572a68c78f.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/tk\",[],function(){return{errorLoading:function(){return\"Netije ýüklenmedi.\"},inputTooLong:function(e){return e.input.length-e.maximum+\" harp bozuň.\"},inputTooShort:function(e){return\"Ýene-de iň az \"+(e.minimum-e.input.length)+\" harp ýazyň.\"},loadingMore:function(){return\"Köpräk netije görkezilýär…\"},maximumSelected:function(e){return\"Diňe \"+e.maximum+\" sanysyny saýlaň.\"},noResults:function(){return\"Netije tapylmady.\"},searching:function(){return\"Gözlenýär…\"},removeAllItems:function(){return\"Remove all items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/tk.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define(\"select2/i18n/tk\",[],function(){return{errorLoading:function(){return\"Netije ýüklenmedi.\"},inputTooLong:function(e){return e.input.length-e.maximum+\" harp bozuň.\"},inputTooShort:function(e){return\"Ýene-de iň az \"+(e.minimum-e.input.length)+\" harp ýazyň.\"},loadingMore:function(){return\"Köpräk netije görkezilýär…\"},maximumSelected:function(e){return\"Diňe \"+e.maximum+\" sanysyny saýlaň.\"},noResults:function(){return\"Netije tapylmady.\"},searching:function(){return\"Gözlenýär…\"},removeAllItems:function(){return\"Remove all items\"}}}),e.define,e.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/tr.b5a0643d1545.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/tr\",[],function(){return{errorLoading:function(){return\"Sonuç yüklenemedi\"},inputTooLong:function(n){return n.input.length-n.maximum+\" karakter daha girmelisiniz\"},inputTooShort:function(n){return\"En az \"+(n.minimum-n.input.length)+\" karakter daha girmelisiniz\"},loadingMore:function(){return\"Daha fazla…\"},maximumSelected:function(n){return\"Sadece \"+n.maximum+\" seçim yapabilirsiniz\"},noResults:function(){return\"Sonuç bulunamadı\"},searching:function(){return\"Aranıyor…\"},removeAllItems:function(){return\"Tüm öğeleri kaldır\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/tr.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/tr\",[],function(){return{errorLoading:function(){return\"Sonuç yüklenemedi\"},inputTooLong:function(n){return n.input.length-n.maximum+\" karakter daha girmelisiniz\"},inputTooShort:function(n){return\"En az \"+(n.minimum-n.input.length)+\" karakter daha girmelisiniz\"},loadingMore:function(){return\"Daha fazla…\"},maximumSelected:function(n){return\"Sadece \"+n.maximum+\" seçim yapabilirsiniz\"},noResults:function(){return\"Sonuç bulunamadı\"},searching:function(){return\"Aranıyor…\"},removeAllItems:function(){return\"Tüm öğeleri kaldır\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/uk.8cede7f4803c.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/uk\",[],function(){function n(n,e,u,r){return n%100>10&&n%100<15?r:n%10==1?e:n%10>1&&n%10<5?u:r}return{errorLoading:function(){return\"Неможливо завантажити результати\"},inputTooLong:function(e){return\"Будь ласка, видаліть \"+(e.input.length-e.maximum)+\" \"+n(e.maximum,\"літеру\",\"літери\",\"літер\")},inputTooShort:function(n){return\"Будь ласка, введіть \"+(n.minimum-n.input.length)+\" або більше літер\"},loadingMore:function(){return\"Завантаження інших результатів…\"},maximumSelected:function(e){return\"Ви можете вибрати лише \"+e.maximum+\" \"+n(e.maximum,\"пункт\",\"пункти\",\"пунктів\")},noResults:function(){return\"Нічого не знайдено\"},searching:function(){return\"Пошук…\"},removeAllItems:function(){return\"Видалити всі елементи\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/uk.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/uk\",[],function(){function n(n,e,u,r){return n%100>10&&n%100<15?r:n%10==1?e:n%10>1&&n%10<5?u:r}return{errorLoading:function(){return\"Неможливо завантажити результати\"},inputTooLong:function(e){return\"Будь ласка, видаліть \"+(e.input.length-e.maximum)+\" \"+n(e.maximum,\"літеру\",\"літери\",\"літер\")},inputTooShort:function(n){return\"Будь ласка, введіть \"+(n.minimum-n.input.length)+\" або більше літер\"},loadingMore:function(){return\"Завантаження інших результатів…\"},maximumSelected:function(e){return\"Ви можете вибрати лише \"+e.maximum+\" \"+n(e.maximum,\"пункт\",\"пункти\",\"пунктів\")},noResults:function(){return\"Нічого не знайдено\"},searching:function(){return\"Пошук…\"},removeAllItems:function(){return\"Видалити всі елементи\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/vi\",[],function(){return{inputTooLong:function(n){return\"Vui lòng xóa bớt \"+(n.input.length-n.maximum)+\" ký tự\"},inputTooShort:function(n){return\"Vui lòng nhập thêm từ \"+(n.minimum-n.input.length)+\" ký tự trở lên\"},loadingMore:function(){return\"Đang lấy thêm kết quả…\"},maximumSelected:function(n){return\"Chỉ có thể chọn được \"+n.maximum+\" lựa chọn\"},noResults:function(){return\"Không tìm thấy kết quả\"},searching:function(){return\"Đang tìm…\"},removeAllItems:function(){return\"Xóa tất cả các mục\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/vi.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/vi\",[],function(){return{inputTooLong:function(n){return\"Vui lòng xóa bớt \"+(n.input.length-n.maximum)+\" ký tự\"},inputTooShort:function(n){return\"Vui lòng nhập thêm từ \"+(n.minimum-n.input.length)+\" ký tự trở lên\"},loadingMore:function(){return\"Đang lấy thêm kết quả…\"},maximumSelected:function(n){return\"Chỉ có thể chọn được \"+n.maximum+\" lựa chọn\"},noResults:function(){return\"Không tìm thấy kết quả\"},searching:function(){return\"Đang tìm…\"},removeAllItems:function(){return\"Xóa tất cả các mục\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/zh-CN\",[],function(){return{errorLoading:function(){return\"无法载入结果。\"},inputTooLong:function(n){return\"请删除\"+(n.input.length-n.maximum)+\"个字符\"},inputTooShort:function(n){return\"请再输入至少\"+(n.minimum-n.input.length)+\"个字符\"},loadingMore:function(){return\"载入更多结果…\"},maximumSelected:function(n){return\"最多只能选择\"+n.maximum+\"个项目\"},noResults:function(){return\"未找到结果\"},searching:function(){return\"搜索中…\"},removeAllItems:function(){return\"删除所有项目\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/zh-CN.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/zh-CN\",[],function(){return{errorLoading:function(){return\"无法载入结果。\"},inputTooLong:function(n){return\"请删除\"+(n.input.length-n.maximum)+\"个字符\"},inputTooShort:function(n){return\"请再输入至少\"+(n.minimum-n.input.length)+\"个字符\"},loadingMore:function(){return\"载入更多结果…\"},maximumSelected:function(n){return\"最多只能选择\"+n.maximum+\"个项目\"},noResults:function(){return\"未找到结果\"},searching:function(){return\"搜索中…\"},removeAllItems:function(){return\"删除所有项目\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/zh-TW\",[],function(){return{inputTooLong:function(n){return\"請刪掉\"+(n.input.length-n.maximum)+\"個字元\"},inputTooShort:function(n){return\"請再輸入\"+(n.minimum-n.input.length)+\"個字元\"},loadingMore:function(){return\"載入中…\"},maximumSelected:function(n){return\"你只能選擇最多\"+n.maximum+\"項\"},noResults:function(){return\"沒有找到相符的項目\"},searching:function(){return\"搜尋中…\"},removeAllItems:function(){return\"刪除所有項目\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/i18n/zh-TW.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n\n!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define(\"select2/i18n/zh-TW\",[],function(){return{inputTooLong:function(n){return\"請刪掉\"+(n.input.length-n.maximum)+\"個字元\"},inputTooShort:function(n){return\"請再輸入\"+(n.minimum-n.input.length)+\"個字元\"},loadingMore:function(){return\"載入中…\"},maximumSelected:function(n){return\"你只能選擇最多\"+n.maximum+\"項\"},noResults:function(){return\"沒有找到相符的項目\"},searching:function(){return\"搜尋中…\"},removeAllItems:function(){return\"刪除所有項目\"}}}),n.define,n.require}();"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/select2.full.c2afdeda3058.js",
    "content": "/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Append an array of jQuery nodes to a given element.\n  Utils.appendMany = function ($element, $nodes) {\n    // jQuery 1.7.x does not support $.fn.append() with an array\n    // Fall back to a jQuery object collection using $.fn.add()\n    if ($.fn.jquery.substr(0, 3) === '1.7') {\n      var $jqNodes = $();\n\n      $.map($nodes, function (node) {\n        $jqNodes = $jqNodes.add(node);\n      });\n\n      $nodes = $jqNodes;\n    }\n\n    $element.append($nodes);\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id.\n    // If an id already exists, it simply returns it.\n\n    var select2Id = element.getAttribute('data-select2-id');\n    if (select2Id == null) {\n      // If element has id, use it.\n      if (element.id) {\n        select2Id = element.id;\n        element.setAttribute('data-select2-id', select2Id);\n      } else {\n        element.setAttribute('data-select2-id', ++id);\n        select2Id = id.toString();\n      }\n    }\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option[aria-selected]');\n\n    var $selected = $options.filter('[aria-selected=true]');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = $.map(selected, function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option[aria-selected]');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && $.inArray(id, selectedIds) > -1)) {\n          $option.attr('aria-selected', 'true');\n        } else {\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.className = 'select2-results__option';\n\n    var attrs = {\n      'role': 'option',\n      'aria-selected': 'false'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      delete attrs['aria-selected'];\n      attrs['aria-disabled'] = 'true';\n    }\n\n    if (data.id == null) {\n      delete attrs['aria-selected'];\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n      delete attrs['aria-selected'];\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      var $label = $(label);\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.attr('aria-selected') == 'true') {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element.addClass('select2-results__option--highlighted');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.attr('aria-selected') === 'true') {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('[aria-selected]');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\n          '&times;' +\n        '</span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      $selection.append(formatted);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    Utils.appendMany($rendered, $selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n  '../utils'\n], function (Utils) {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder.addClass('select2-selection__placeholder')\n                .removeClass('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<span class=\"select2-selection__clear\" title=\"' + removeAll() +'\">' +\n        '&times;' +\n      '</span>'\n    );\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.find('.select2-selection__rendered').prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<li class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</li>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$searchContainer\n          .prev('.select2-selection__choice');\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__rendered')\n                   .append(this.$searchContainer);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '';\n\n    if (this.$search.attr('placeholder') !== '') {\n      width = this.$selection.find('.select2-selection__rendered').width();\n    } else {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if ($.inArray(name, relayEvents) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if ($.inArray(name, preventableEvents) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var data = [];\n    var self = this;\n\n    this.$element.find(':selected').each(function () {\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      data.push(option);\n    });\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if ($(data.element).is('option')) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if ($.inArray(id, val) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if ($(data.element).is('option')) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && $.inArray(id, val) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      var $option = $(this);\n\n      if (!$option.is('option') && !$option.is('optgroup')) {\n        return;\n      }\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    Utils.appendMany(this.$element, $options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var $option = $(option);\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $option;\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    if ($option.is('option')) {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if ($option.is('optgroup')) {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if ($.inArray(item.id, existingIds) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        Utils.appendMany($option, $children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !$.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if ($.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    var term = $.trim(params.term);\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if ($.inArray(termChar, separators) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer.removeClass('select2-search--hide');\n        } else {\n          self.$searchContainer.addClass('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown.removeClass('select2');\n    $dropdown.addClass('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown\n        .removeClass('select2-dropdown--below select2-dropdown--above')\n        .addClass('select2-dropdown--' + newDirection);\n      this.$container\n        .removeClass('select2-container--below select2-container--above')\n        .addClass('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n  'require',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n\n  './i18n/en'\n], function ($, require,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n\n      if (options.query != null) {\n        var Query = require(options.amdBase + 'compat/query');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Query\n        );\n      }\n\n      if (options.initSelection != null) {\n        var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          InitSelection\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (\n        options.dropdownCssClass != null ||\n        options.dropdownCss != null ||\n        options.adaptDropdownCssClass != null\n      ) {\n        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (\n        options.containerCssClass != null ||\n        options.containerCss != null ||\n        options.adaptContainerCssClass != null\n      ) {\n        var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          ContainerCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if ($.trim(params.term) === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdBase: './',\n      amdLanguageBase: './i18n/',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!$.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'require',\n  'jquery',\n  './defaults',\n  './utils'\n], function (require, $, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n\n    if ($element && $element.is('input')) {\n      var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n      this.options.dataAdapter = Utils.Decorate(\n        this.options.dataAdapter,\n        InputCompat\n      );\n    }\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if ($.inArray(key, excludedData) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element.addClass('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    if (this.$element[0].attachEvent) {\n      this.$element[0].attachEvent('onpropertychange', this._syncA);\n    }\n\n    var observer = window.MutationObserver ||\n      window.WebKitMutationObserver ||\n      window.MozMutationObserver\n    ;\n\n    if (observer != null) {\n      this._observer = new observer(function (mutations) {\n        self._syncA();\n        self._syncS(null, mutations);\n      });\n      this._observer.observe(this.$element[0], {\n        attributes: true,\n        childList: true,\n        subtree: false\n      });\n    } else if (this.$element[0].addEventListener) {\n      this.$element[0].addEventListener(\n        'DOMAttrModified',\n        self._syncA,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeInserted',\n        self._syncS,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeRemoved',\n        self._syncS,\n        false\n      );\n    }\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if ($.inArray(name, nonRelayEvents) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container.addClass('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container.removeClass('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container.removeClass('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container.addClass('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container.removeClass('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (evt, mutations) {\n    var changed = false;\n    var self = this;\n\n    // Ignore any mutation events raised for elements that aren't options or\n    // optgroups. This handles the case when the select element is destroyed\n    if (\n      evt && evt.target && (\n        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n      )\n    ) {\n      return;\n    }\n\n    if (!mutations) {\n      // If mutation events aren't supported, then we can only assume that the\n      // change affected the selections\n      changed = true;\n    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          changed = true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      changed = true;\n    } else if ($.isArray(mutations)) {\n      $.each(mutations, function(evt, mutation) {\n        if (self._isChangeMutation(evt, mutation)) {\n          // We've found a change mutation.\n          // Let's escape from the loop and continue\n          changed = true;\n          return false;\n        }\n      });\n    }\n    return changed;\n  };\n\n  Select2.prototype._syncSubtree = function (evt, mutations) {\n    var changed = this._isChangeMutation(evt, mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container.hasClass('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container.hasClass('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container.addClass('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if ($.isArray(newVal)) {\n      newVal = $.map(newVal, function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    if (this.$element[0].detachEvent) {\n      this.$element[0].detachEvent('onpropertychange', this._syncA);\n    }\n\n    if (this._observer != null) {\n      this._observer.disconnect();\n      this._observer = null;\n    } else if (this.$element[0].removeEventListener) {\n      this.$element[0]\n        .removeEventListener('DOMAttrModified', this._syncA, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeInserted', this._syncS, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeRemoved', this._syncS, false);\n    }\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element.removeClass('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('select2/compat/utils',[\n  'jquery'\n], function ($) {\n  function syncCssClasses ($dest, $src, adapter) {\n    var classes, replacements = [], adapted;\n\n    classes = $.trim($dest.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Save all Select2 classes\n        if (this.indexOf('select2-') === 0) {\n          replacements.push(this);\n        }\n      });\n    }\n\n    classes = $.trim($src.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Only adapt non-Select2 classes\n        if (this.indexOf('select2-') !== 0) {\n          adapted = adapter(this);\n\n          if (adapted != null) {\n            replacements.push(adapted);\n          }\n        }\n      });\n    }\n\n    $dest.attr('class', replacements.join(' '));\n  }\n\n  return {\n    syncCssClasses: syncCssClasses\n  };\n});\n\nS2.define('select2/compat/containerCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _containerAdapter (clazz) {\n    return null;\n  }\n\n  function ContainerCSS () { }\n\n  ContainerCSS.prototype.render = function (decorated) {\n    var $container = decorated.call(this);\n\n    var containerCssClass = this.options.get('containerCssClass') || '';\n\n    if ($.isFunction(containerCssClass)) {\n      containerCssClass = containerCssClass(this.$element);\n    }\n\n    var containerCssAdapter = this.options.get('adaptContainerCssClass');\n    containerCssAdapter = containerCssAdapter || _containerAdapter;\n\n    if (containerCssClass.indexOf(':all:') !== -1) {\n      containerCssClass = containerCssClass.replace(':all:', '');\n\n      var _cssAdapter = containerCssAdapter;\n\n      containerCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var containerCss = this.options.get('containerCss') || {};\n\n    if ($.isFunction(containerCss)) {\n      containerCss = containerCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\n\n    $container.css(containerCss);\n    $container.addClass(containerCssClass);\n\n    return $container;\n  };\n\n  return ContainerCSS;\n});\n\nS2.define('select2/compat/dropdownCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _dropdownAdapter (clazz) {\n    return null;\n  }\n\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if ($.isFunction(dropdownCssClass)) {\n      dropdownCssClass = dropdownCssClass(this.$element);\n    }\n\n    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\n    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      var _cssAdapter = dropdownCssAdapter;\n\n      dropdownCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var dropdownCss = this.options.get('dropdownCss') || {};\n\n    if ($.isFunction(dropdownCss)) {\n      dropdownCss = dropdownCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\n\n    $dropdown.css(dropdownCss);\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/compat/initSelection',[\n  'jquery'\n], function ($) {\n  function InitSelection (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `initSelection` option has been deprecated in favor' +\n        ' of a custom data adapter that overrides the `current` method. ' +\n        'This method is now called multiple times instead of a single ' +\n        'time when the instance is initialized. Support will be removed ' +\n        'for the `initSelection` option in future versions of Select2'\n      );\n    }\n\n    this.initSelection = options.get('initSelection');\n    this._isInitialized = false;\n\n    decorated.call(this, $element, options);\n  }\n\n  InitSelection.prototype.current = function (decorated, callback) {\n    var self = this;\n\n    if (this._isInitialized) {\n      decorated.call(this, callback);\n\n      return;\n    }\n\n    this.initSelection.call(null, this.$element, function (data) {\n      self._isInitialized = true;\n\n      if (!$.isArray(data)) {\n        data = [data];\n      }\n\n      callback(data);\n    });\n  };\n\n  return InitSelection;\n});\n\nS2.define('select2/compat/inputData',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function InputData (decorated, $element, options) {\n    this._currentData = [];\n    this._valueSeparator = options.get('valueSeparator') || ',';\n\n    if ($element.prop('type') === 'hidden') {\n      if (options.get('debug') && console && console.warn) {\n        console.warn(\n          'Select2: Using a hidden input with Select2 is no longer ' +\n          'supported and may stop working in the future. It is recommended ' +\n          'to use a `<select>` element instead.'\n        );\n      }\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  InputData.prototype.current = function (_, callback) {\n    function getSelected (data, selectedIds) {\n      var selected = [];\n\n      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {\n        data.selected = true;\n        selected.push(data);\n      } else {\n        data.selected = false;\n      }\n\n      if (data.children) {\n        selected.push.apply(selected, getSelected(data.children, selectedIds));\n      }\n\n      return selected;\n    }\n\n    var selected = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      selected.push.apply(\n        selected,\n        getSelected(\n          data,\n          this.$element.val().split(\n            this._valueSeparator\n          )\n        )\n      );\n    }\n\n    callback(selected);\n  };\n\n  InputData.prototype.select = function (_, data) {\n    if (!this.options.get('multiple')) {\n      this.current(function (allData) {\n        $.map(allData, function (data) {\n          data.selected = false;\n        });\n      });\n\n      this.$element.val(data.id);\n      this.$element.trigger('input').trigger('change');\n    } else {\n      var value = this.$element.val();\n      value += this._valueSeparator + data.id;\n\n      this.$element.val(value);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  InputData.prototype.unselect = function (_, data) {\n    var self = this;\n\n    data.selected = false;\n\n    this.current(function (allData) {\n      var values = [];\n\n      for (var d = 0; d < allData.length; d++) {\n        var item = allData[d];\n\n        if (data.id == item.id) {\n          continue;\n        }\n\n        values.push(item.id);\n      }\n\n      self.$element.val(values.join(self._valueSeparator));\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  InputData.prototype.query = function (_, params, callback) {\n    var results = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      var matches = this.matches(params, data);\n\n      if (matches !== null) {\n        results.push(matches);\n      }\n    }\n\n    callback({\n      results: results\n    });\n  };\n\n  InputData.prototype.addOptions = function (_, $options) {\n    var options = $.map($options, function ($option) {\n      return Utils.GetData($option[0], 'data');\n    });\n\n    this._currentData.push.apply(this._currentData, options);\n  };\n\n  return InputData;\n});\n\nS2.define('select2/compat/matcher',[\n  'jquery'\n], function ($) {\n  function oldMatcher (matcher) {\n    function wrappedMatcher (params, data) {\n      var match = $.extend(true, {}, data);\n\n      if (params.term == null || $.trim(params.term) === '') {\n        return match;\n      }\n\n      if (data.children) {\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          // Check if the child object matches\n          // The old matcher returned a boolean true or false\n          var doesMatch = matcher(params.term, child.text, child);\n\n          // If the child didn't match, pop it off\n          if (!doesMatch) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        if (match.children.length > 0) {\n          return match;\n        }\n      }\n\n      if (matcher(params.term, data.text, data)) {\n        return match;\n      }\n\n      return null;\n    }\n\n    return wrappedMatcher;\n  }\n\n  return oldMatcher;\n});\n\nS2.define('select2/compat/query',[\n\n], function () {\n  function Query (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `query` option has been deprecated in favor of a ' +\n        'custom data adapter that overrides the `query` method. Support ' +\n        'will be removed for the `query` option in future versions of ' +\n        'Select2.'\n      );\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Query.prototype.query = function (_, params, callback) {\n    params.callback = callback;\n\n    var query = this.options.get('query');\n\n    query.call(null, params);\n  };\n\n  return Query;\n});\n\nS2.define('select2/dropdown/attachContainer',[\n\n], function () {\n  function AttachContainer (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  AttachContainer.prototype.position =\n    function (decorated, $dropdown, $container) {\n    var $dropdownContainer = $container.find('.dropdown-wrapper');\n    $dropdownContainer.append($dropdown);\n\n    $dropdown.addClass('select2-dropdown--below');\n    $container.addClass('select2-container--below');\n  };\n\n  return AttachContainer;\n});\n\nS2.define('select2/dropdown/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n    'blur',\n    'change',\n    'click',\n    'dblclick',\n    'focus',\n    'focusin',\n    'focusout',\n    'input',\n    'keydown',\n    'keyup',\n    'keypress',\n    'mousedown',\n    'mouseenter',\n    'mouseleave',\n    'mousemove',\n    'mouseover',\n    'mouseup',\n    'search',\n    'touchend',\n    'touchstart'\n    ];\n\n    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\nS2.define('select2/selection/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n      'blur',\n      'change',\n      'click',\n      'dblclick',\n      'focus',\n      'focusin',\n      'focusout',\n      'input',\n      'keydown',\n      'keyup',\n      'keypress',\n      'mousedown',\n      'mouseenter',\n      'mouseleave',\n      'mousemove',\n      'mouseover',\n      'mouseup',\n      'search',\n      'touchend',\n      'touchstart'\n    ];\n\n    this.$selection.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\n/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n    if ( typeof S2.define === 'function' && S2.define.amd ) {\n        // AMD. Register as an anonymous module.\n        S2.define('jquery-mousewheel',['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node/CommonJS style for Browserify\n        module.exports = factory;\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n\n    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n        slice  = Array.prototype.slice,\n        nullLowestDeltaTimeout, lowestDelta;\n\n    if ( $.event.fixHooks ) {\n        for ( var i = toFix.length; i; ) {\n            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n        }\n    }\n\n    var special = $.event.special.mousewheel = {\n        version: '3.1.12',\n\n        setup: function() {\n            if ( this.addEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.addEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = handler;\n            }\n            // Store the line height and page height for this particular element\n            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n        },\n\n        teardown: function() {\n            if ( this.removeEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.removeEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = null;\n            }\n            // Clean up the data we added to the element\n            $.removeData(this, 'mousewheel-line-height');\n            $.removeData(this, 'mousewheel-page-height');\n        },\n\n        getLineHeight: function(elem) {\n            var $elem = $(elem),\n                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n            if (!$parent.length) {\n                $parent = $('body');\n            }\n            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n        },\n\n        getPageHeight: function(elem) {\n            return $(elem).height();\n        },\n\n        settings: {\n            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n            normalizeOffset: true  // calls getBoundingClientRect for each event\n        }\n    };\n\n    $.fn.extend({\n        mousewheel: function(fn) {\n            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n        },\n\n        unmousewheel: function(fn) {\n            return this.unbind('mousewheel', fn);\n        }\n    });\n\n\n    function handler(event) {\n        var orgEvent   = event || window.event,\n            args       = slice.call(arguments, 1),\n            delta      = 0,\n            deltaX     = 0,\n            deltaY     = 0,\n            absDelta   = 0,\n            offsetX    = 0,\n            offsetY    = 0;\n        event = $.event.fix(orgEvent);\n        event.type = 'mousewheel';\n\n        // Old school scrollwheel delta\n        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }\n        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }\n        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }\n        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n            deltaX = deltaY * -1;\n            deltaY = 0;\n        }\n\n        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n        delta = deltaY === 0 ? deltaX : deltaY;\n\n        // New school wheel delta (wheel event)\n        if ( 'deltaY' in orgEvent ) {\n            deltaY = orgEvent.deltaY * -1;\n            delta  = deltaY;\n        }\n        if ( 'deltaX' in orgEvent ) {\n            deltaX = orgEvent.deltaX;\n            if ( deltaY === 0 ) { delta  = deltaX * -1; }\n        }\n\n        // No change actually happened, no reason to go any further\n        if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n        // Need to convert lines and pages to pixels if we aren't already in pixels\n        // There are three delta modes:\n        //   * deltaMode 0 is by pixels, nothing to do\n        //   * deltaMode 1 is by lines\n        //   * deltaMode 2 is by pages\n        if ( orgEvent.deltaMode === 1 ) {\n            var lineHeight = $.data(this, 'mousewheel-line-height');\n            delta  *= lineHeight;\n            deltaY *= lineHeight;\n            deltaX *= lineHeight;\n        } else if ( orgEvent.deltaMode === 2 ) {\n            var pageHeight = $.data(this, 'mousewheel-page-height');\n            delta  *= pageHeight;\n            deltaY *= pageHeight;\n            deltaX *= pageHeight;\n        }\n\n        // Store lowest absolute delta to normalize the delta values\n        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n        if ( !lowestDelta || absDelta < lowestDelta ) {\n            lowestDelta = absDelta;\n\n            // Adjust older deltas if necessary\n            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n                lowestDelta /= 40;\n            }\n        }\n\n        // Adjust older deltas if necessary\n        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n            // Divide all the things by 40!\n            delta  /= 40;\n            deltaX /= 40;\n            deltaY /= 40;\n        }\n\n        // Get a whole, normalized value for the deltas\n        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);\n        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n        // Normalise offsetX and offsetY properties\n        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n            var boundingRect = this.getBoundingClientRect();\n            offsetX = event.clientX - boundingRect.left;\n            offsetY = event.clientY - boundingRect.top;\n        }\n\n        // Add information to the event object\n        event.deltaX = deltaX;\n        event.deltaY = deltaY;\n        event.deltaFactor = lowestDelta;\n        event.offsetX = offsetX;\n        event.offsetY = offsetY;\n        // Go ahead and set deltaMode to 0 since we converted to pixels\n        // Although this is a little odd since we overwrite the deltaX/Y\n        // properties with normalized deltas.\n        event.deltaMode = 0;\n\n        // Add event and delta to the front of the arguments\n        args.unshift(event, delta, deltaX, deltaY);\n\n        // Clearout lowestDelta after sometime to better\n        // handle multiple device types that give different\n        // a different lowestDelta\n        // Ex: trackpad = 3 and mouse wheel = 120\n        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n        return ($.event.dispatch || $.event.handle).apply(this, args);\n    }\n\n    function nullLowestDelta() {\n        lowestDelta = null;\n    }\n\n    function shouldAdjustOldDeltas(orgEvent, absDelta) {\n        // If this is an older event and the delta is divisable by 120,\n        // then we are assuming that the browser is treating this as an\n        // older mouse wheel event and that we should divide the deltas\n        // by 40 to try and get a more usable deltaFactor.\n        // Side note, this actually impacts the reported scroll distance\n        // in older browsers and can cause scrolling to be slower than native.\n        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n    }\n\n}));\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if ($.inArray(options, thisMethods) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/select2.full.js",
    "content": "/*!\n * Select2 4.0.13\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n  if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define(['jquery'], factory);\n  } else if (typeof module === 'object' && module.exports) {\n    // Node/CommonJS\n    module.exports = function (root, jQuery) {\n      if (jQuery === undefined) {\n        // require('jQuery') returns a factory that requires window to\n        // build a jQuery instance, we normalize how we use modules\n        // that require this pattern but the window provided is a noop\n        // if it's defined (how jquery works)\n        if (typeof window !== 'undefined') {\n          jQuery = require('jquery');\n        }\n        else {\n          jQuery = require('jquery')(root);\n        }\n      }\n      factory(jQuery);\n      return jQuery;\n    };\n  } else {\n    // Browser globals\n    factory(jQuery);\n  }\n} (function (jQuery) {\n  // This is needed so we can catch the AMD loader configuration and use it\n  // The inner file should be wrapped (by `banner.start.js`) in a function that\n  // returns the AMD loader references.\n  var S2 =(function () {\n  // Restore the Select2 AMD loader so it can be used\n  // Needed mostly in the language files, where the loader is not inserted\n  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n    var S2 = jQuery.fn.select2.amd;\n  }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n    var main, req, makeMap, handlers,\n        defined = {},\n        waiting = {},\n        config = {},\n        defining = {},\n        hasOwn = Object.prototype.hasOwnProperty,\n        aps = [].slice,\n        jsSuffixRegExp = /\\.js$/;\n\n    function hasProp(obj, prop) {\n        return hasOwn.call(obj, prop);\n    }\n\n    /**\n     * Given a relative module name, like ./something, normalize it to\n     * a real name that can be mapped to a path.\n     * @param {String} name the relative name\n     * @param {String} baseName a real name that the name arg is relative\n     * to.\n     * @returns {String} normalized name\n     */\n    function normalize(name, baseName) {\n        var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n            foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n            baseParts = baseName && baseName.split(\"/\"),\n            map = config.map,\n            starMap = (map && map['*']) || {};\n\n        //Adjust any relative paths.\n        if (name) {\n            name = name.split('/');\n            lastIndex = name.length - 1;\n\n            // If wanting node ID compatibility, strip .js from end\n            // of IDs. Have to do this here, and not in nameToUrl\n            // because node allows either .js or non .js to map\n            // to same file.\n            if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n                name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n            }\n\n            // Starts with a '.' so need the baseName\n            if (name[0].charAt(0) === '.' && baseParts) {\n                //Convert baseName to array, and lop off the last part,\n                //so that . matches that 'directory' and not name of the baseName's\n                //module. For instance, baseName of 'one/two/three', maps to\n                //'one/two/three.js', but we want the directory, 'one/two' for\n                //this normalization.\n                normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n                name = normalizedBaseParts.concat(name);\n            }\n\n            //start trimDots\n            for (i = 0; i < name.length; i++) {\n                part = name[i];\n                if (part === '.') {\n                    name.splice(i, 1);\n                    i -= 1;\n                } else if (part === '..') {\n                    // If at the start, or previous value is still ..,\n                    // keep them so that when converted to a path it may\n                    // still work when converted to a path, even though\n                    // as an ID it is less than ideal. In larger point\n                    // releases, may be better to just kick out an error.\n                    if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n                        continue;\n                    } else if (i > 0) {\n                        name.splice(i - 1, 2);\n                        i -= 2;\n                    }\n                }\n            }\n            //end trimDots\n\n            name = name.join('/');\n        }\n\n        //Apply map config if available.\n        if ((baseParts || starMap) && map) {\n            nameParts = name.split('/');\n\n            for (i = nameParts.length; i > 0; i -= 1) {\n                nameSegment = nameParts.slice(0, i).join(\"/\");\n\n                if (baseParts) {\n                    //Find the longest baseName segment match in the config.\n                    //So, do joins on the biggest to smallest lengths of baseParts.\n                    for (j = baseParts.length; j > 0; j -= 1) {\n                        mapValue = map[baseParts.slice(0, j).join('/')];\n\n                        //baseName segment has  config, find if it has one for\n                        //this name.\n                        if (mapValue) {\n                            mapValue = mapValue[nameSegment];\n                            if (mapValue) {\n                                //Match, update name to the new value.\n                                foundMap = mapValue;\n                                foundI = i;\n                                break;\n                            }\n                        }\n                    }\n                }\n\n                if (foundMap) {\n                    break;\n                }\n\n                //Check for a star map match, but just hold on to it,\n                //if there is a shorter segment match later in a matching\n                //config, then favor over this star map.\n                if (!foundStarMap && starMap && starMap[nameSegment]) {\n                    foundStarMap = starMap[nameSegment];\n                    starI = i;\n                }\n            }\n\n            if (!foundMap && foundStarMap) {\n                foundMap = foundStarMap;\n                foundI = starI;\n            }\n\n            if (foundMap) {\n                nameParts.splice(0, foundI, foundMap);\n                name = nameParts.join('/');\n            }\n        }\n\n        return name;\n    }\n\n    function makeRequire(relName, forceSync) {\n        return function () {\n            //A version of a require function that passes a moduleName\n            //value for items that may need to\n            //look up paths relative to the moduleName\n            var args = aps.call(arguments, 0);\n\n            //If first arg is not require('string'), and there is only\n            //one arg, it is the array form without a callback. Insert\n            //a null so that the following concat is correct.\n            if (typeof args[0] !== 'string' && args.length === 1) {\n                args.push(null);\n            }\n            return req.apply(undef, args.concat([relName, forceSync]));\n        };\n    }\n\n    function makeNormalize(relName) {\n        return function (name) {\n            return normalize(name, relName);\n        };\n    }\n\n    function makeLoad(depName) {\n        return function (value) {\n            defined[depName] = value;\n        };\n    }\n\n    function callDep(name) {\n        if (hasProp(waiting, name)) {\n            var args = waiting[name];\n            delete waiting[name];\n            defining[name] = true;\n            main.apply(undef, args);\n        }\n\n        if (!hasProp(defined, name) && !hasProp(defining, name)) {\n            throw new Error('No ' + name);\n        }\n        return defined[name];\n    }\n\n    //Turns a plugin!resource to [plugin, resource]\n    //with the plugin being undefined if the name\n    //did not have a plugin prefix.\n    function splitPrefix(name) {\n        var prefix,\n            index = name ? name.indexOf('!') : -1;\n        if (index > -1) {\n            prefix = name.substring(0, index);\n            name = name.substring(index + 1, name.length);\n        }\n        return [prefix, name];\n    }\n\n    //Creates a parts array for a relName where first part is plugin ID,\n    //second part is resource ID. Assumes relName has already been normalized.\n    function makeRelParts(relName) {\n        return relName ? splitPrefix(relName) : [];\n    }\n\n    /**\n     * Makes a name map, normalizing the name, and using a plugin\n     * for normalization if necessary. Grabs a ref to plugin\n     * too, as an optimization.\n     */\n    makeMap = function (name, relParts) {\n        var plugin,\n            parts = splitPrefix(name),\n            prefix = parts[0],\n            relResourceName = relParts[1];\n\n        name = parts[1];\n\n        if (prefix) {\n            prefix = normalize(prefix, relResourceName);\n            plugin = callDep(prefix);\n        }\n\n        //Normalize according\n        if (prefix) {\n            if (plugin && plugin.normalize) {\n                name = plugin.normalize(name, makeNormalize(relResourceName));\n            } else {\n                name = normalize(name, relResourceName);\n            }\n        } else {\n            name = normalize(name, relResourceName);\n            parts = splitPrefix(name);\n            prefix = parts[0];\n            name = parts[1];\n            if (prefix) {\n                plugin = callDep(prefix);\n            }\n        }\n\n        //Using ridiculous property names for space reasons\n        return {\n            f: prefix ? prefix + '!' + name : name, //fullName\n            n: name,\n            pr: prefix,\n            p: plugin\n        };\n    };\n\n    function makeConfig(name) {\n        return function () {\n            return (config && config.config && config.config[name]) || {};\n        };\n    }\n\n    handlers = {\n        require: function (name) {\n            return makeRequire(name);\n        },\n        exports: function (name) {\n            var e = defined[name];\n            if (typeof e !== 'undefined') {\n                return e;\n            } else {\n                return (defined[name] = {});\n            }\n        },\n        module: function (name) {\n            return {\n                id: name,\n                uri: '',\n                exports: defined[name],\n                config: makeConfig(name)\n            };\n        }\n    };\n\n    main = function (name, deps, callback, relName) {\n        var cjsModule, depName, ret, map, i, relParts,\n            args = [],\n            callbackType = typeof callback,\n            usingExports;\n\n        //Use name if no relName\n        relName = relName || name;\n        relParts = makeRelParts(relName);\n\n        //Call the callback to define the module, if necessary.\n        if (callbackType === 'undefined' || callbackType === 'function') {\n            //Pull out the defined dependencies and pass the ordered\n            //values to the callback.\n            //Default to [require, exports, module] if no deps\n            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n            for (i = 0; i < deps.length; i += 1) {\n                map = makeMap(deps[i], relParts);\n                depName = map.f;\n\n                //Fast path CommonJS standard dependencies.\n                if (depName === \"require\") {\n                    args[i] = handlers.require(name);\n                } else if (depName === \"exports\") {\n                    //CommonJS module spec 1.1\n                    args[i] = handlers.exports(name);\n                    usingExports = true;\n                } else if (depName === \"module\") {\n                    //CommonJS module spec 1.1\n                    cjsModule = args[i] = handlers.module(name);\n                } else if (hasProp(defined, depName) ||\n                           hasProp(waiting, depName) ||\n                           hasProp(defining, depName)) {\n                    args[i] = callDep(depName);\n                } else if (map.p) {\n                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n                    args[i] = defined[depName];\n                } else {\n                    throw new Error(name + ' missing ' + depName);\n                }\n            }\n\n            ret = callback ? callback.apply(defined[name], args) : undefined;\n\n            if (name) {\n                //If setting exports via \"module\" is in play,\n                //favor that over return value and exports. After that,\n                //favor a non-undefined return value over exports use.\n                if (cjsModule && cjsModule.exports !== undef &&\n                        cjsModule.exports !== defined[name]) {\n                    defined[name] = cjsModule.exports;\n                } else if (ret !== undef || !usingExports) {\n                    //Use the return value from the function.\n                    defined[name] = ret;\n                }\n            }\n        } else if (name) {\n            //May just be an object definition for the module. Only\n            //worry about defining if have a module name.\n            defined[name] = callback;\n        }\n    };\n\n    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n        if (typeof deps === \"string\") {\n            if (handlers[deps]) {\n                //callback in this case is really relName\n                return handlers[deps](callback);\n            }\n            //Just return the module wanted. In this scenario, the\n            //deps arg is the module name, and second arg (if passed)\n            //is just the relName.\n            //Normalize module name, if it contains . or ..\n            return callDep(makeMap(deps, makeRelParts(callback)).f);\n        } else if (!deps.splice) {\n            //deps is a config object, not an array.\n            config = deps;\n            if (config.deps) {\n                req(config.deps, config.callback);\n            }\n            if (!callback) {\n                return;\n            }\n\n            if (callback.splice) {\n                //callback is an array, which means it is a dependency list.\n                //Adjust args if there are dependencies\n                deps = callback;\n                callback = relName;\n                relName = null;\n            } else {\n                deps = undef;\n            }\n        }\n\n        //Support require(['a'])\n        callback = callback || function () {};\n\n        //If relName is a function, it is an errback handler,\n        //so remove it.\n        if (typeof relName === 'function') {\n            relName = forceSync;\n            forceSync = alt;\n        }\n\n        //Simulate async callback;\n        if (forceSync) {\n            main(undef, deps, callback, relName);\n        } else {\n            //Using a non-zero value because of concern for what old browsers\n            //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n            //If want a value immediately, use require('id') instead -- something\n            //that works in almond on the global level, but not guaranteed and\n            //unlikely to work in other AMD implementations.\n            setTimeout(function () {\n                main(undef, deps, callback, relName);\n            }, 4);\n        }\n\n        return req;\n    };\n\n    /**\n     * Just drops the config on the floor, but returns req in case\n     * the config return value is used.\n     */\n    req.config = function (cfg) {\n        return req(cfg);\n    };\n\n    /**\n     * Expose module registry for debugging and tooling\n     */\n    requirejs._defined = defined;\n\n    define = function (name, deps, callback) {\n        if (typeof name !== 'string') {\n            throw new Error('See almond README: incorrect module build, no module name');\n        }\n\n        //This module may not have dependencies\n        if (!deps.splice) {\n            //deps is not an array, so probably means\n            //an object literal or factory function for\n            //the value. Adjust args.\n            callback = deps;\n            deps = [];\n        }\n\n        if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n            waiting[name] = [name, deps, callback];\n        }\n    };\n\n    define.amd = {\n        jQuery: true\n    };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n  var _$ = jQuery || $;\n\n  if (_$ == null && console && console.error) {\n    console.error(\n      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n      'found. Make sure that you are including jQuery before Select2 on your ' +\n      'web page.'\n    );\n  }\n\n  return _$;\n});\n\nS2.define('select2/utils',[\n  'jquery'\n], function ($) {\n  var Utils = {};\n\n  Utils.Extend = function (ChildClass, SuperClass) {\n    var __hasProp = {}.hasOwnProperty;\n\n    function BaseConstructor () {\n      this.constructor = ChildClass;\n    }\n\n    for (var key in SuperClass) {\n      if (__hasProp.call(SuperClass, key)) {\n        ChildClass[key] = SuperClass[key];\n      }\n    }\n\n    BaseConstructor.prototype = SuperClass.prototype;\n    ChildClass.prototype = new BaseConstructor();\n    ChildClass.__super__ = SuperClass.prototype;\n\n    return ChildClass;\n  };\n\n  function getMethods (theClass) {\n    var proto = theClass.prototype;\n\n    var methods = [];\n\n    for (var methodName in proto) {\n      var m = proto[methodName];\n\n      if (typeof m !== 'function') {\n        continue;\n      }\n\n      if (methodName === 'constructor') {\n        continue;\n      }\n\n      methods.push(methodName);\n    }\n\n    return methods;\n  }\n\n  Utils.Decorate = function (SuperClass, DecoratorClass) {\n    var decoratedMethods = getMethods(DecoratorClass);\n    var superMethods = getMethods(SuperClass);\n\n    function DecoratedClass () {\n      var unshift = Array.prototype.unshift;\n\n      var argCount = DecoratorClass.prototype.constructor.length;\n\n      var calledConstructor = SuperClass.prototype.constructor;\n\n      if (argCount > 0) {\n        unshift.call(arguments, SuperClass.prototype.constructor);\n\n        calledConstructor = DecoratorClass.prototype.constructor;\n      }\n\n      calledConstructor.apply(this, arguments);\n    }\n\n    DecoratorClass.displayName = SuperClass.displayName;\n\n    function ctr () {\n      this.constructor = DecoratedClass;\n    }\n\n    DecoratedClass.prototype = new ctr();\n\n    for (var m = 0; m < superMethods.length; m++) {\n      var superMethod = superMethods[m];\n\n      DecoratedClass.prototype[superMethod] =\n        SuperClass.prototype[superMethod];\n    }\n\n    var calledMethod = function (methodName) {\n      // Stub out the original method if it's not decorating an actual method\n      var originalMethod = function () {};\n\n      if (methodName in DecoratedClass.prototype) {\n        originalMethod = DecoratedClass.prototype[methodName];\n      }\n\n      var decoratedMethod = DecoratorClass.prototype[methodName];\n\n      return function () {\n        var unshift = Array.prototype.unshift;\n\n        unshift.call(arguments, originalMethod);\n\n        return decoratedMethod.apply(this, arguments);\n      };\n    };\n\n    for (var d = 0; d < decoratedMethods.length; d++) {\n      var decoratedMethod = decoratedMethods[d];\n\n      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n    }\n\n    return DecoratedClass;\n  };\n\n  var Observable = function () {\n    this.listeners = {};\n  };\n\n  Observable.prototype.on = function (event, callback) {\n    this.listeners = this.listeners || {};\n\n    if (event in this.listeners) {\n      this.listeners[event].push(callback);\n    } else {\n      this.listeners[event] = [callback];\n    }\n  };\n\n  Observable.prototype.trigger = function (event) {\n    var slice = Array.prototype.slice;\n    var params = slice.call(arguments, 1);\n\n    this.listeners = this.listeners || {};\n\n    // Params should always come in as an array\n    if (params == null) {\n      params = [];\n    }\n\n    // If there are no arguments to the event, use a temporary object\n    if (params.length === 0) {\n      params.push({});\n    }\n\n    // Set the `_type` of the first object to the event\n    params[0]._type = event;\n\n    if (event in this.listeners) {\n      this.invoke(this.listeners[event], slice.call(arguments, 1));\n    }\n\n    if ('*' in this.listeners) {\n      this.invoke(this.listeners['*'], arguments);\n    }\n  };\n\n  Observable.prototype.invoke = function (listeners, params) {\n    for (var i = 0, len = listeners.length; i < len; i++) {\n      listeners[i].apply(this, params);\n    }\n  };\n\n  Utils.Observable = Observable;\n\n  Utils.generateChars = function (length) {\n    var chars = '';\n\n    for (var i = 0; i < length; i++) {\n      var randomChar = Math.floor(Math.random() * 36);\n      chars += randomChar.toString(36);\n    }\n\n    return chars;\n  };\n\n  Utils.bind = function (func, context) {\n    return function () {\n      func.apply(context, arguments);\n    };\n  };\n\n  Utils._convertData = function (data) {\n    for (var originalKey in data) {\n      var keys = originalKey.split('-');\n\n      var dataLevel = data;\n\n      if (keys.length === 1) {\n        continue;\n      }\n\n      for (var k = 0; k < keys.length; k++) {\n        var key = keys[k];\n\n        // Lowercase the first letter\n        // By default, dash-separated becomes camelCase\n        key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n        if (!(key in dataLevel)) {\n          dataLevel[key] = {};\n        }\n\n        if (k == keys.length - 1) {\n          dataLevel[key] = data[originalKey];\n        }\n\n        dataLevel = dataLevel[key];\n      }\n\n      delete data[originalKey];\n    }\n\n    return data;\n  };\n\n  Utils.hasScroll = function (index, el) {\n    // Adapted from the function created by @ShadowScripter\n    // and adapted by @BillBarry on the Stack Exchange Code Review website.\n    // The original code can be found at\n    // http://codereview.stackexchange.com/q/13338\n    // and was designed to be used with the Sizzle selector engine.\n\n    var $el = $(el);\n    var overflowX = el.style.overflowX;\n    var overflowY = el.style.overflowY;\n\n    //Check both x and y declarations\n    if (overflowX === overflowY &&\n        (overflowY === 'hidden' || overflowY === 'visible')) {\n      return false;\n    }\n\n    if (overflowX === 'scroll' || overflowY === 'scroll') {\n      return true;\n    }\n\n    return ($el.innerHeight() < el.scrollHeight ||\n      $el.innerWidth() < el.scrollWidth);\n  };\n\n  Utils.escapeMarkup = function (markup) {\n    var replaceMap = {\n      '\\\\': '&#92;',\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      '\\'': '&#39;',\n      '/': '&#47;'\n    };\n\n    // Do not try to escape the markup if it's not a string\n    if (typeof markup !== 'string') {\n      return markup;\n    }\n\n    return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n      return replaceMap[match];\n    });\n  };\n\n  // Append an array of jQuery nodes to a given element.\n  Utils.appendMany = function ($element, $nodes) {\n    // jQuery 1.7.x does not support $.fn.append() with an array\n    // Fall back to a jQuery object collection using $.fn.add()\n    if ($.fn.jquery.substr(0, 3) === '1.7') {\n      var $jqNodes = $();\n\n      $.map($nodes, function (node) {\n        $jqNodes = $jqNodes.add(node);\n      });\n\n      $nodes = $jqNodes;\n    }\n\n    $element.append($nodes);\n  };\n\n  // Cache objects in Utils.__cache instead of $.data (see #4346)\n  Utils.__cache = {};\n\n  var id = 0;\n  Utils.GetUniqueElementId = function (element) {\n    // Get a unique element Id. If element has no id,\n    // creates a new unique number, stores it in the id\n    // attribute and returns the new id.\n    // If an id already exists, it simply returns it.\n\n    var select2Id = element.getAttribute('data-select2-id');\n    if (select2Id == null) {\n      // If element has id, use it.\n      if (element.id) {\n        select2Id = element.id;\n        element.setAttribute('data-select2-id', select2Id);\n      } else {\n        element.setAttribute('data-select2-id', ++id);\n        select2Id = id.toString();\n      }\n    }\n    return select2Id;\n  };\n\n  Utils.StoreData = function (element, name, value) {\n    // Stores an item in the cache for a specified element.\n    // name is the cache key.\n    var id = Utils.GetUniqueElementId(element);\n    if (!Utils.__cache[id]) {\n      Utils.__cache[id] = {};\n    }\n\n    Utils.__cache[id][name] = value;\n  };\n\n  Utils.GetData = function (element, name) {\n    // Retrieves a value from the cache by its key (name)\n    // name is optional. If no name specified, return\n    // all cache items for the specified element.\n    // and for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (name) {\n      if (Utils.__cache[id]) {\n        if (Utils.__cache[id][name] != null) {\n          return Utils.__cache[id][name];\n        }\n        return $(element).data(name); // Fallback to HTML5 data attribs.\n      }\n      return $(element).data(name); // Fallback to HTML5 data attribs.\n    } else {\n      return Utils.__cache[id];\n    }\n  };\n\n  Utils.RemoveData = function (element) {\n    // Removes all cached items for a specified element.\n    var id = Utils.GetUniqueElementId(element);\n    if (Utils.__cache[id] != null) {\n      delete Utils.__cache[id];\n    }\n\n    element.removeAttribute('data-select2-id');\n  };\n\n  return Utils;\n});\n\nS2.define('select2/results',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Results ($element, options, dataAdapter) {\n    this.$element = $element;\n    this.data = dataAdapter;\n    this.options = options;\n\n    Results.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Results, Utils.Observable);\n\n  Results.prototype.render = function () {\n    var $results = $(\n      '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n    );\n\n    if (this.options.get('multiple')) {\n      $results.attr('aria-multiselectable', 'true');\n    }\n\n    this.$results = $results;\n\n    return $results;\n  };\n\n  Results.prototype.clear = function () {\n    this.$results.empty();\n  };\n\n  Results.prototype.displayMessage = function (params) {\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    this.clear();\n    this.hideLoading();\n\n    var $message = $(\n      '<li role=\"alert\" aria-live=\"assertive\"' +\n      ' class=\"select2-results__option\"></li>'\n    );\n\n    var message = this.options.get('translations').get(params.message);\n\n    $message.append(\n      escapeMarkup(\n        message(params.args)\n      )\n    );\n\n    $message[0].className += ' select2-results__message';\n\n    this.$results.append($message);\n  };\n\n  Results.prototype.hideMessages = function () {\n    this.$results.find('.select2-results__message').remove();\n  };\n\n  Results.prototype.append = function (data) {\n    this.hideLoading();\n\n    var $options = [];\n\n    if (data.results == null || data.results.length === 0) {\n      if (this.$results.children().length === 0) {\n        this.trigger('results:message', {\n          message: 'noResults'\n        });\n      }\n\n      return;\n    }\n\n    data.results = this.sort(data.results);\n\n    for (var d = 0; d < data.results.length; d++) {\n      var item = data.results[d];\n\n      var $option = this.option(item);\n\n      $options.push($option);\n    }\n\n    this.$results.append($options);\n  };\n\n  Results.prototype.position = function ($results, $dropdown) {\n    var $resultsContainer = $dropdown.find('.select2-results');\n    $resultsContainer.append($results);\n  };\n\n  Results.prototype.sort = function (data) {\n    var sorter = this.options.get('sorter');\n\n    return sorter(data);\n  };\n\n  Results.prototype.highlightFirstItem = function () {\n    var $options = this.$results\n      .find('.select2-results__option[aria-selected]');\n\n    var $selected = $options.filter('[aria-selected=true]');\n\n    // Check if there are any selected options\n    if ($selected.length > 0) {\n      // If there are selected options, highlight the first\n      $selected.first().trigger('mouseenter');\n    } else {\n      // If there are no selected options, highlight the first option\n      // in the dropdown\n      $options.first().trigger('mouseenter');\n    }\n\n    this.ensureHighlightVisible();\n  };\n\n  Results.prototype.setClasses = function () {\n    var self = this;\n\n    this.data.current(function (selected) {\n      var selectedIds = $.map(selected, function (s) {\n        return s.id.toString();\n      });\n\n      var $options = self.$results\n        .find('.select2-results__option[aria-selected]');\n\n      $options.each(function () {\n        var $option = $(this);\n\n        var item = Utils.GetData(this, 'data');\n\n        // id needs to be converted to a string when comparing\n        var id = '' + item.id;\n\n        if ((item.element != null && item.element.selected) ||\n            (item.element == null && $.inArray(id, selectedIds) > -1)) {\n          $option.attr('aria-selected', 'true');\n        } else {\n          $option.attr('aria-selected', 'false');\n        }\n      });\n\n    });\n  };\n\n  Results.prototype.showLoading = function (params) {\n    this.hideLoading();\n\n    var loadingMore = this.options.get('translations').get('searching');\n\n    var loading = {\n      disabled: true,\n      loading: true,\n      text: loadingMore(params)\n    };\n    var $loading = this.option(loading);\n    $loading.className += ' loading-results';\n\n    this.$results.prepend($loading);\n  };\n\n  Results.prototype.hideLoading = function () {\n    this.$results.find('.loading-results').remove();\n  };\n\n  Results.prototype.option = function (data) {\n    var option = document.createElement('li');\n    option.className = 'select2-results__option';\n\n    var attrs = {\n      'role': 'option',\n      'aria-selected': 'false'\n    };\n\n    var matches = window.Element.prototype.matches ||\n      window.Element.prototype.msMatchesSelector ||\n      window.Element.prototype.webkitMatchesSelector;\n\n    if ((data.element != null && matches.call(data.element, ':disabled')) ||\n        (data.element == null && data.disabled)) {\n      delete attrs['aria-selected'];\n      attrs['aria-disabled'] = 'true';\n    }\n\n    if (data.id == null) {\n      delete attrs['aria-selected'];\n    }\n\n    if (data._resultId != null) {\n      option.id = data._resultId;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    if (data.children) {\n      attrs.role = 'group';\n      attrs['aria-label'] = data.text;\n      delete attrs['aria-selected'];\n    }\n\n    for (var attr in attrs) {\n      var val = attrs[attr];\n\n      option.setAttribute(attr, val);\n    }\n\n    if (data.children) {\n      var $option = $(option);\n\n      var label = document.createElement('strong');\n      label.className = 'select2-results__group';\n\n      var $label = $(label);\n      this.template(data, label);\n\n      var $children = [];\n\n      for (var c = 0; c < data.children.length; c++) {\n        var child = data.children[c];\n\n        var $child = this.option(child);\n\n        $children.push($child);\n      }\n\n      var $childrenContainer = $('<ul></ul>', {\n        'class': 'select2-results__options select2-results__options--nested'\n      });\n\n      $childrenContainer.append($children);\n\n      $option.append(label);\n      $option.append($childrenContainer);\n    } else {\n      this.template(data, option);\n    }\n\n    Utils.StoreData(option, 'data', data);\n\n    return option;\n  };\n\n  Results.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var id = container.id + '-results';\n\n    this.$results.attr('id', id);\n\n    container.on('results:all', function (params) {\n      self.clear();\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('results:append', function (params) {\n      self.append(params.data);\n\n      if (container.isOpen()) {\n        self.setClasses();\n      }\n    });\n\n    container.on('query', function (params) {\n      self.hideMessages();\n      self.showLoading(params);\n    });\n\n    container.on('select', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('unselect', function () {\n      if (!container.isOpen()) {\n        return;\n      }\n\n      self.setClasses();\n\n      if (self.options.get('scrollAfterSelect')) {\n        self.highlightFirstItem();\n      }\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expended=\"true\"\n      self.$results.attr('aria-expanded', 'true');\n      self.$results.attr('aria-hidden', 'false');\n\n      self.setClasses();\n      self.ensureHighlightVisible();\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expended=\"false\"\n      self.$results.attr('aria-expanded', 'false');\n      self.$results.attr('aria-hidden', 'true');\n      self.$results.removeAttr('aria-activedescendant');\n    });\n\n    container.on('results:toggle', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      $highlighted.trigger('mouseup');\n    });\n\n    container.on('results:select', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      if ($highlighted.length === 0) {\n        return;\n      }\n\n      var data = Utils.GetData($highlighted[0], 'data');\n\n      if ($highlighted.attr('aria-selected') == 'true') {\n        self.trigger('close', {});\n      } else {\n        self.trigger('select', {\n          data: data\n        });\n      }\n    });\n\n    container.on('results:previous', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      // If we are already at the top, don't move further\n      // If no options, currentIndex will be -1\n      if (currentIndex <= 0) {\n        return;\n      }\n\n      var nextIndex = currentIndex - 1;\n\n      // If none are highlighted, highlight the first\n      if ($highlighted.length === 0) {\n        nextIndex = 0;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top;\n      var nextTop = $next.offset().top;\n      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextTop - currentOffset < 0) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:next', function () {\n      var $highlighted = self.getHighlightedResults();\n\n      var $options = self.$results.find('[aria-selected]');\n\n      var currentIndex = $options.index($highlighted);\n\n      var nextIndex = currentIndex + 1;\n\n      // If we are at the last option, stay there\n      if (nextIndex >= $options.length) {\n        return;\n      }\n\n      var $next = $options.eq(nextIndex);\n\n      $next.trigger('mouseenter');\n\n      var currentOffset = self.$results.offset().top +\n        self.$results.outerHeight(false);\n      var nextBottom = $next.offset().top + $next.outerHeight(false);\n      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n      if (nextIndex === 0) {\n        self.$results.scrollTop(0);\n      } else if (nextBottom > currentOffset) {\n        self.$results.scrollTop(nextOffset);\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      params.element.addClass('select2-results__option--highlighted');\n    });\n\n    container.on('results:message', function (params) {\n      self.displayMessage(params);\n    });\n\n    if ($.fn.mousewheel) {\n      this.$results.on('mousewheel', function (e) {\n        var top = self.$results.scrollTop();\n\n        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n        if (isAtTop) {\n          self.$results.scrollTop(0);\n\n          e.preventDefault();\n          e.stopPropagation();\n        } else if (isAtBottom) {\n          self.$results.scrollTop(\n            self.$results.get(0).scrollHeight - self.$results.height()\n          );\n\n          e.preventDefault();\n          e.stopPropagation();\n        }\n      });\n    }\n\n    this.$results.on('mouseup', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var $this = $(this);\n\n      var data = Utils.GetData(this, 'data');\n\n      if ($this.attr('aria-selected') === 'true') {\n        if (self.options.get('multiple')) {\n          self.trigger('unselect', {\n            originalEvent: evt,\n            data: data\n          });\n        } else {\n          self.trigger('close', {});\n        }\n\n        return;\n      }\n\n      self.trigger('select', {\n        originalEvent: evt,\n        data: data\n      });\n    });\n\n    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\n      function (evt) {\n      var data = Utils.GetData(this, 'data');\n\n      self.getHighlightedResults()\n          .removeClass('select2-results__option--highlighted');\n\n      self.trigger('results:focus', {\n        data: data,\n        element: $(this)\n      });\n    });\n  };\n\n  Results.prototype.getHighlightedResults = function () {\n    var $highlighted = this.$results\n    .find('.select2-results__option--highlighted');\n\n    return $highlighted;\n  };\n\n  Results.prototype.destroy = function () {\n    this.$results.remove();\n  };\n\n  Results.prototype.ensureHighlightVisible = function () {\n    var $highlighted = this.getHighlightedResults();\n\n    if ($highlighted.length === 0) {\n      return;\n    }\n\n    var $options = this.$results.find('[aria-selected]');\n\n    var currentIndex = $options.index($highlighted);\n\n    var currentOffset = this.$results.offset().top;\n    var nextTop = $highlighted.offset().top;\n    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n    var offsetDelta = nextTop - currentOffset;\n    nextOffset -= $highlighted.outerHeight(false) * 2;\n\n    if (currentIndex <= 2) {\n      this.$results.scrollTop(0);\n    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n      this.$results.scrollTop(nextOffset);\n    }\n  };\n\n  Results.prototype.template = function (result, container) {\n    var template = this.options.get('templateResult');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    var content = template(result, container);\n\n    if (content == null) {\n      container.style.display = 'none';\n    } else if (typeof content === 'string') {\n      container.innerHTML = escapeMarkup(content);\n    } else {\n      $(container).append(content);\n    }\n  };\n\n  return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n  var KEYS = {\n    BACKSPACE: 8,\n    TAB: 9,\n    ENTER: 13,\n    SHIFT: 16,\n    CTRL: 17,\n    ALT: 18,\n    ESC: 27,\n    SPACE: 32,\n    PAGE_UP: 33,\n    PAGE_DOWN: 34,\n    END: 35,\n    HOME: 36,\n    LEFT: 37,\n    UP: 38,\n    RIGHT: 39,\n    DOWN: 40,\n    DELETE: 46\n  };\n\n  return KEYS;\n});\n\nS2.define('select2/selection/base',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function BaseSelection ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    BaseSelection.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseSelection, Utils.Observable);\n\n  BaseSelection.prototype.render = function () {\n    var $selection = $(\n      '<span class=\"select2-selection\" role=\"combobox\" ' +\n      ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n      '</span>'\n    );\n\n    this._tabindex = 0;\n\n    if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n      this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n    } else if (this.$element.attr('tabindex') != null) {\n      this._tabindex = this.$element.attr('tabindex');\n    }\n\n    $selection.attr('title', this.$element.attr('title'));\n    $selection.attr('tabindex', this._tabindex);\n    $selection.attr('aria-disabled', 'false');\n\n    this.$selection = $selection;\n\n    return $selection;\n  };\n\n  BaseSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    this.container = container;\n\n    this.$selection.on('focus', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('blur', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      if (evt.which === KEYS.SPACE) {\n        evt.preventDefault();\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      self.$selection.attr('aria-activedescendant', params.data._resultId);\n    });\n\n    container.on('selection:update', function (params) {\n      self.update(params.data);\n    });\n\n    container.on('open', function () {\n      // When the dropdown is open, aria-expanded=\"true\"\n      self.$selection.attr('aria-expanded', 'true');\n      self.$selection.attr('aria-owns', resultsId);\n\n      self._attachCloseHandler(container);\n    });\n\n    container.on('close', function () {\n      // When the dropdown is closed, aria-expanded=\"false\"\n      self.$selection.attr('aria-expanded', 'false');\n      self.$selection.removeAttr('aria-activedescendant');\n      self.$selection.removeAttr('aria-owns');\n\n      self.$selection.trigger('focus');\n\n      self._detachCloseHandler(container);\n    });\n\n    container.on('enable', function () {\n      self.$selection.attr('tabindex', self._tabindex);\n      self.$selection.attr('aria-disabled', 'false');\n    });\n\n    container.on('disable', function () {\n      self.$selection.attr('tabindex', '-1');\n      self.$selection.attr('aria-disabled', 'true');\n    });\n  };\n\n  BaseSelection.prototype._handleBlur = function (evt) {\n    var self = this;\n\n    // This needs to be delayed as the active element is the body when the tab\n    // key is pressed, possibly along with others.\n    window.setTimeout(function () {\n      // Don't trigger `blur` if the focus is still in the selection\n      if (\n        (document.activeElement == self.$selection[0]) ||\n        ($.contains(self.$selection[0], document.activeElement))\n      ) {\n        return;\n      }\n\n      self.trigger('blur', evt);\n    }, 1);\n  };\n\n  BaseSelection.prototype._attachCloseHandler = function (container) {\n\n    $(document.body).on('mousedown.select2.' + container.id, function (e) {\n      var $target = $(e.target);\n\n      var $select = $target.closest('.select2');\n\n      var $all = $('.select2.select2-container--open');\n\n      $all.each(function () {\n        if (this == $select[0]) {\n          return;\n        }\n\n        var $element = Utils.GetData(this, 'element');\n\n        $element.select2('close');\n      });\n    });\n  };\n\n  BaseSelection.prototype._detachCloseHandler = function (container) {\n    $(document.body).off('mousedown.select2.' + container.id);\n  };\n\n  BaseSelection.prototype.position = function ($selection, $container) {\n    var $selectionContainer = $container.find('.selection');\n    $selectionContainer.append($selection);\n  };\n\n  BaseSelection.prototype.destroy = function () {\n    this._detachCloseHandler(this.container);\n  };\n\n  BaseSelection.prototype.update = function (data) {\n    throw new Error('The `update` method must be defined in child classes.');\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  BaseSelection.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  BaseSelection.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n  'jquery',\n  './base',\n  '../utils',\n  '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n  function SingleSelection () {\n    SingleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(SingleSelection, BaseSelection);\n\n  SingleSelection.prototype.render = function () {\n    var $selection = SingleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--single');\n\n    $selection.html(\n      '<span class=\"select2-selection__rendered\"></span>' +\n      '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n        '<b role=\"presentation\"></b>' +\n      '</span>'\n    );\n\n    return $selection;\n  };\n\n  SingleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    SingleSelection.__super__.bind.apply(this, arguments);\n\n    var id = container.id + '-container';\n\n    this.$selection.find('.select2-selection__rendered')\n      .attr('id', id)\n      .attr('role', 'textbox')\n      .attr('aria-readonly', 'true');\n    this.$selection.attr('aria-labelledby', id);\n\n    this.$selection.on('mousedown', function (evt) {\n      // Only respond to left clicks\n      if (evt.which !== 1) {\n        return;\n      }\n\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on('focus', function (evt) {\n      // User focuses on the container\n    });\n\n    this.$selection.on('blur', function (evt) {\n      // User exits the container\n    });\n\n    container.on('focus', function (evt) {\n      if (!container.isOpen()) {\n        self.$selection.trigger('focus');\n      }\n    });\n  };\n\n  SingleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title'); // clear tooltip on empty\n  };\n\n  SingleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  SingleSelection.prototype.selectionContainer = function () {\n    return $('<span></span>');\n  };\n\n  SingleSelection.prototype.update = function (data) {\n    if (data.length === 0) {\n      this.clear();\n      return;\n    }\n\n    var selection = data[0];\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    var formatted = this.display(selection, $rendered);\n\n    $rendered.empty().append(formatted);\n\n    var title = selection.title || selection.text;\n\n    if (title) {\n      $rendered.attr('title', title);\n    } else {\n      $rendered.removeAttr('title');\n    }\n  };\n\n  return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n  'jquery',\n  './base',\n  '../utils'\n], function ($, BaseSelection, Utils) {\n  function MultipleSelection ($element, options) {\n    MultipleSelection.__super__.constructor.apply(this, arguments);\n  }\n\n  Utils.Extend(MultipleSelection, BaseSelection);\n\n  MultipleSelection.prototype.render = function () {\n    var $selection = MultipleSelection.__super__.render.call(this);\n\n    $selection.addClass('select2-selection--multiple');\n\n    $selection.html(\n      '<ul class=\"select2-selection__rendered\"></ul>'\n    );\n\n    return $selection;\n  };\n\n  MultipleSelection.prototype.bind = function (container, $container) {\n    var self = this;\n\n    MultipleSelection.__super__.bind.apply(this, arguments);\n\n    this.$selection.on('click', function (evt) {\n      self.trigger('toggle', {\n        originalEvent: evt\n      });\n    });\n\n    this.$selection.on(\n      'click',\n      '.select2-selection__choice__remove',\n      function (evt) {\n        // Ignore the event if it is disabled\n        if (self.isDisabled()) {\n          return;\n        }\n\n        var $remove = $(this);\n        var $selection = $remove.parent();\n\n        var data = Utils.GetData($selection[0], 'data');\n\n        self.trigger('unselect', {\n          originalEvent: evt,\n          data: data\n        });\n      }\n    );\n  };\n\n  MultipleSelection.prototype.clear = function () {\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n    $rendered.empty();\n    $rendered.removeAttr('title');\n  };\n\n  MultipleSelection.prototype.display = function (data, container) {\n    var template = this.options.get('templateSelection');\n    var escapeMarkup = this.options.get('escapeMarkup');\n\n    return escapeMarkup(template(data, container));\n  };\n\n  MultipleSelection.prototype.selectionContainer = function () {\n    var $container = $(\n      '<li class=\"select2-selection__choice\">' +\n        '<span class=\"select2-selection__choice__remove\" role=\"presentation\">' +\n          '&times;' +\n        '</span>' +\n      '</li>'\n    );\n\n    return $container;\n  };\n\n  MultipleSelection.prototype.update = function (data) {\n    this.clear();\n\n    if (data.length === 0) {\n      return;\n    }\n\n    var $selections = [];\n\n    for (var d = 0; d < data.length; d++) {\n      var selection = data[d];\n\n      var $selection = this.selectionContainer();\n      var formatted = this.display(selection, $selection);\n\n      $selection.append(formatted);\n\n      var title = selection.title || selection.text;\n\n      if (title) {\n        $selection.attr('title', title);\n      }\n\n      Utils.StoreData($selection[0], 'data', selection);\n\n      $selections.push($selection);\n    }\n\n    var $rendered = this.$selection.find('.select2-selection__rendered');\n\n    Utils.appendMany($rendered, $selections);\n  };\n\n  return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n  '../utils'\n], function (Utils) {\n  function Placeholder (decorated, $element, options) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options);\n  }\n\n  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n    var $placeholder = this.selectionContainer();\n\n    $placeholder.html(this.display(placeholder));\n    $placeholder.addClass('select2-selection__placeholder')\n                .removeClass('select2-selection__choice');\n\n    return $placeholder;\n  };\n\n  Placeholder.prototype.update = function (decorated, data) {\n    var singlePlaceholder = (\n      data.length == 1 && data[0].id != this.placeholder.id\n    );\n    var multipleSelections = data.length > 1;\n\n    if (multipleSelections || singlePlaceholder) {\n      return decorated.call(this, data);\n    }\n\n    this.clear();\n\n    var $placeholder = this.createPlaceholder(this.placeholder);\n\n    this.$selection.find('.select2-selection__rendered').append($placeholder);\n  };\n\n  return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n  'jquery',\n  '../keys',\n  '../utils'\n], function ($, KEYS, Utils) {\n  function AllowClear () { }\n\n  AllowClear.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    if (this.placeholder == null) {\n      if (this.options.get('debug') && window.console && console.error) {\n        console.error(\n          'Select2: The `allowClear` option should be used in combination ' +\n          'with the `placeholder` option.'\n        );\n      }\n    }\n\n    this.$selection.on('mousedown', '.select2-selection__clear',\n      function (evt) {\n        self._handleClear(evt);\n    });\n\n    container.on('keypress', function (evt) {\n      self._handleKeyboardClear(evt, container);\n    });\n  };\n\n  AllowClear.prototype._handleClear = function (_, evt) {\n    // Ignore the event if it is disabled\n    if (this.isDisabled()) {\n      return;\n    }\n\n    var $clear = this.$selection.find('.select2-selection__clear');\n\n    // Ignore the event if nothing has been selected\n    if ($clear.length === 0) {\n      return;\n    }\n\n    evt.stopPropagation();\n\n    var data = Utils.GetData($clear[0], 'data');\n\n    var previousVal = this.$element.val();\n    this.$element.val(this.placeholder.id);\n\n    var unselectData = {\n      data: data\n    };\n    this.trigger('clear', unselectData);\n    if (unselectData.prevented) {\n      this.$element.val(previousVal);\n      return;\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      unselectData = {\n        data: data[d]\n      };\n\n      // Trigger the `unselect` event, so people can prevent it from being\n      // cleared.\n      this.trigger('unselect', unselectData);\n\n      // If the event was prevented, don't clear it out.\n      if (unselectData.prevented) {\n        this.$element.val(previousVal);\n        return;\n      }\n    }\n\n    this.$element.trigger('input').trigger('change');\n\n    this.trigger('toggle', {});\n  };\n\n  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n    if (container.isOpen()) {\n      return;\n    }\n\n    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n      this._handleClear(evt);\n    }\n  };\n\n  AllowClear.prototype.update = function (decorated, data) {\n    decorated.call(this, data);\n\n    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n        data.length === 0) {\n      return;\n    }\n\n    var removeAll = this.options.get('translations').get('removeAllItems');\n\n    var $remove = $(\n      '<span class=\"select2-selection__clear\" title=\"' + removeAll() +'\">' +\n        '&times;' +\n      '</span>'\n    );\n    Utils.StoreData($remove[0], 'data', data);\n\n    this.$selection.find('.select2-selection__rendered').prepend($remove);\n  };\n\n  return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n  'jquery',\n  '../utils',\n  '../keys'\n], function ($, Utils, KEYS) {\n  function Search (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  Search.prototype.render = function (decorated) {\n    var $search = $(\n      '<li class=\"select2-search select2-search--inline\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</li>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    var $rendered = decorated.call(this);\n\n    this._transferTabIndex();\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self.$search.attr('aria-controls', resultsId);\n      self.$search.trigger('focus');\n    });\n\n    container.on('close', function () {\n      self.$search.val('');\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n      self.$search.trigger('focus');\n    });\n\n    container.on('enable', function () {\n      self.$search.prop('disabled', false);\n\n      self._transferTabIndex();\n    });\n\n    container.on('disable', function () {\n      self.$search.prop('disabled', true);\n    });\n\n    container.on('focus', function (evt) {\n      self.$search.trigger('focus');\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n\n    this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n      self._handleBlur(evt);\n    });\n\n    this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n      evt.stopPropagation();\n\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n\n      var key = evt.which;\n\n      if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n        var $previousChoice = self.$searchContainer\n          .prev('.select2-selection__choice');\n\n        if ($previousChoice.length > 0) {\n          var item = Utils.GetData($previousChoice[0], 'data');\n\n          self.searchRemoveChoice(item);\n\n          evt.preventDefault();\n        }\n      }\n    });\n\n    this.$selection.on('click', '.select2-search--inline', function (evt) {\n      if (self.$search.val()) {\n        evt.stopPropagation();\n      }\n    });\n\n    // Try to detect the IE version should the `documentMode` property that\n    // is stored on the document. This is only implemented in IE and is\n    // slightly cleaner than doing a user agent check.\n    // This property is not available in Edge, but Edge also doesn't have\n    // this bug.\n    var msie = document.documentMode;\n    var disableInputEvents = msie && msie <= 11;\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$selection.on(\n      'input.searchcheck',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents) {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        // Unbind the duplicated `keyup` event\n        self.$selection.off('keyup.search');\n      }\n    );\n\n    this.$selection.on(\n      'keyup.search input.search',\n      '.select2-search--inline',\n      function (evt) {\n        // IE will trigger the `input` event when a placeholder is used on a\n        // search box. To get around this issue, we are forced to ignore all\n        // `input` events in IE and keep using `keyup`.\n        if (disableInputEvents && evt.type === 'input') {\n          self.$selection.off('input.search input.searchcheck');\n          return;\n        }\n\n        var key = evt.which;\n\n        // We can freely ignore events from modifier keys\n        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n          return;\n        }\n\n        // Tabbing will be handled during the `keydown` phase\n        if (key == KEYS.TAB) {\n          return;\n        }\n\n        self.handleSearch(evt);\n      }\n    );\n  };\n\n  /**\n   * This method will transfer the tabindex attribute from the rendered\n   * selection to the search box. This allows for the search box to be used as\n   * the primary focus instead of the selection container.\n   *\n   * @private\n   */\n  Search.prototype._transferTabIndex = function (decorated) {\n    this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n    this.$selection.attr('tabindex', '-1');\n  };\n\n  Search.prototype.createPlaceholder = function (decorated, placeholder) {\n    this.$search.attr('placeholder', placeholder.text);\n  };\n\n  Search.prototype.update = function (decorated, data) {\n    var searchHadFocus = this.$search[0] == document.activeElement;\n\n    this.$search.attr('placeholder', '');\n\n    decorated.call(this, data);\n\n    this.$selection.find('.select2-selection__rendered')\n                   .append(this.$searchContainer);\n\n    this.resizeSearch();\n    if (searchHadFocus) {\n      this.$search.trigger('focus');\n    }\n  };\n\n  Search.prototype.handleSearch = function () {\n    this.resizeSearch();\n\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.searchRemoveChoice = function (decorated, item) {\n    this.trigger('unselect', {\n      data: item\n    });\n\n    this.$search.val(item.text);\n    this.handleSearch();\n  };\n\n  Search.prototype.resizeSearch = function () {\n    this.$search.css('width', '25px');\n\n    var width = '';\n\n    if (this.$search.attr('placeholder') !== '') {\n      width = this.$selection.find('.select2-selection__rendered').width();\n    } else {\n      var minimumWidth = this.$search.val().length + 1;\n\n      width = (minimumWidth * 0.75) + 'em';\n    }\n\n    this.$search.css('width', width);\n  };\n\n  return Search;\n});\n\nS2.define('select2/selection/eventRelay',[\n  'jquery'\n], function ($) {\n  function EventRelay () { }\n\n  EventRelay.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n    var relayEvents = [\n      'open', 'opening',\n      'close', 'closing',\n      'select', 'selecting',\n      'unselect', 'unselecting',\n      'clear', 'clearing'\n    ];\n\n    var preventableEvents = [\n      'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n    ];\n\n    decorated.call(this, container, $container);\n\n    container.on('*', function (name, params) {\n      // Ignore events that should not be relayed\n      if ($.inArray(name, relayEvents) === -1) {\n        return;\n      }\n\n      // The parameters should always be an object\n      params = params || {};\n\n      // Generate the jQuery event for the Select2 event\n      var evt = $.Event('select2:' + name, {\n        params: params\n      });\n\n      self.$element.trigger(evt);\n\n      // Only handle preventable events if it was one\n      if ($.inArray(name, preventableEvents) === -1) {\n        return;\n      }\n\n      params.prevented = evt.isDefaultPrevented();\n    });\n  };\n\n  return EventRelay;\n});\n\nS2.define('select2/translation',[\n  'jquery',\n  'require'\n], function ($, require) {\n  function Translation (dict) {\n    this.dict = dict || {};\n  }\n\n  Translation.prototype.all = function () {\n    return this.dict;\n  };\n\n  Translation.prototype.get = function (key) {\n    return this.dict[key];\n  };\n\n  Translation.prototype.extend = function (translation) {\n    this.dict = $.extend({}, translation.all(), this.dict);\n  };\n\n  // Static functions\n\n  Translation._cache = {};\n\n  Translation.loadPath = function (path) {\n    if (!(path in Translation._cache)) {\n      var translations = require(path);\n\n      Translation._cache[path] = translations;\n    }\n\n    return new Translation(Translation._cache[path]);\n  };\n\n  return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n  var diacritics = {\n    '\\u24B6': 'A',\n    '\\uFF21': 'A',\n    '\\u00C0': 'A',\n    '\\u00C1': 'A',\n    '\\u00C2': 'A',\n    '\\u1EA6': 'A',\n    '\\u1EA4': 'A',\n    '\\u1EAA': 'A',\n    '\\u1EA8': 'A',\n    '\\u00C3': 'A',\n    '\\u0100': 'A',\n    '\\u0102': 'A',\n    '\\u1EB0': 'A',\n    '\\u1EAE': 'A',\n    '\\u1EB4': 'A',\n    '\\u1EB2': 'A',\n    '\\u0226': 'A',\n    '\\u01E0': 'A',\n    '\\u00C4': 'A',\n    '\\u01DE': 'A',\n    '\\u1EA2': 'A',\n    '\\u00C5': 'A',\n    '\\u01FA': 'A',\n    '\\u01CD': 'A',\n    '\\u0200': 'A',\n    '\\u0202': 'A',\n    '\\u1EA0': 'A',\n    '\\u1EAC': 'A',\n    '\\u1EB6': 'A',\n    '\\u1E00': 'A',\n    '\\u0104': 'A',\n    '\\u023A': 'A',\n    '\\u2C6F': 'A',\n    '\\uA732': 'AA',\n    '\\u00C6': 'AE',\n    '\\u01FC': 'AE',\n    '\\u01E2': 'AE',\n    '\\uA734': 'AO',\n    '\\uA736': 'AU',\n    '\\uA738': 'AV',\n    '\\uA73A': 'AV',\n    '\\uA73C': 'AY',\n    '\\u24B7': 'B',\n    '\\uFF22': 'B',\n    '\\u1E02': 'B',\n    '\\u1E04': 'B',\n    '\\u1E06': 'B',\n    '\\u0243': 'B',\n    '\\u0182': 'B',\n    '\\u0181': 'B',\n    '\\u24B8': 'C',\n    '\\uFF23': 'C',\n    '\\u0106': 'C',\n    '\\u0108': 'C',\n    '\\u010A': 'C',\n    '\\u010C': 'C',\n    '\\u00C7': 'C',\n    '\\u1E08': 'C',\n    '\\u0187': 'C',\n    '\\u023B': 'C',\n    '\\uA73E': 'C',\n    '\\u24B9': 'D',\n    '\\uFF24': 'D',\n    '\\u1E0A': 'D',\n    '\\u010E': 'D',\n    '\\u1E0C': 'D',\n    '\\u1E10': 'D',\n    '\\u1E12': 'D',\n    '\\u1E0E': 'D',\n    '\\u0110': 'D',\n    '\\u018B': 'D',\n    '\\u018A': 'D',\n    '\\u0189': 'D',\n    '\\uA779': 'D',\n    '\\u01F1': 'DZ',\n    '\\u01C4': 'DZ',\n    '\\u01F2': 'Dz',\n    '\\u01C5': 'Dz',\n    '\\u24BA': 'E',\n    '\\uFF25': 'E',\n    '\\u00C8': 'E',\n    '\\u00C9': 'E',\n    '\\u00CA': 'E',\n    '\\u1EC0': 'E',\n    '\\u1EBE': 'E',\n    '\\u1EC4': 'E',\n    '\\u1EC2': 'E',\n    '\\u1EBC': 'E',\n    '\\u0112': 'E',\n    '\\u1E14': 'E',\n    '\\u1E16': 'E',\n    '\\u0114': 'E',\n    '\\u0116': 'E',\n    '\\u00CB': 'E',\n    '\\u1EBA': 'E',\n    '\\u011A': 'E',\n    '\\u0204': 'E',\n    '\\u0206': 'E',\n    '\\u1EB8': 'E',\n    '\\u1EC6': 'E',\n    '\\u0228': 'E',\n    '\\u1E1C': 'E',\n    '\\u0118': 'E',\n    '\\u1E18': 'E',\n    '\\u1E1A': 'E',\n    '\\u0190': 'E',\n    '\\u018E': 'E',\n    '\\u24BB': 'F',\n    '\\uFF26': 'F',\n    '\\u1E1E': 'F',\n    '\\u0191': 'F',\n    '\\uA77B': 'F',\n    '\\u24BC': 'G',\n    '\\uFF27': 'G',\n    '\\u01F4': 'G',\n    '\\u011C': 'G',\n    '\\u1E20': 'G',\n    '\\u011E': 'G',\n    '\\u0120': 'G',\n    '\\u01E6': 'G',\n    '\\u0122': 'G',\n    '\\u01E4': 'G',\n    '\\u0193': 'G',\n    '\\uA7A0': 'G',\n    '\\uA77D': 'G',\n    '\\uA77E': 'G',\n    '\\u24BD': 'H',\n    '\\uFF28': 'H',\n    '\\u0124': 'H',\n    '\\u1E22': 'H',\n    '\\u1E26': 'H',\n    '\\u021E': 'H',\n    '\\u1E24': 'H',\n    '\\u1E28': 'H',\n    '\\u1E2A': 'H',\n    '\\u0126': 'H',\n    '\\u2C67': 'H',\n    '\\u2C75': 'H',\n    '\\uA78D': 'H',\n    '\\u24BE': 'I',\n    '\\uFF29': 'I',\n    '\\u00CC': 'I',\n    '\\u00CD': 'I',\n    '\\u00CE': 'I',\n    '\\u0128': 'I',\n    '\\u012A': 'I',\n    '\\u012C': 'I',\n    '\\u0130': 'I',\n    '\\u00CF': 'I',\n    '\\u1E2E': 'I',\n    '\\u1EC8': 'I',\n    '\\u01CF': 'I',\n    '\\u0208': 'I',\n    '\\u020A': 'I',\n    '\\u1ECA': 'I',\n    '\\u012E': 'I',\n    '\\u1E2C': 'I',\n    '\\u0197': 'I',\n    '\\u24BF': 'J',\n    '\\uFF2A': 'J',\n    '\\u0134': 'J',\n    '\\u0248': 'J',\n    '\\u24C0': 'K',\n    '\\uFF2B': 'K',\n    '\\u1E30': 'K',\n    '\\u01E8': 'K',\n    '\\u1E32': 'K',\n    '\\u0136': 'K',\n    '\\u1E34': 'K',\n    '\\u0198': 'K',\n    '\\u2C69': 'K',\n    '\\uA740': 'K',\n    '\\uA742': 'K',\n    '\\uA744': 'K',\n    '\\uA7A2': 'K',\n    '\\u24C1': 'L',\n    '\\uFF2C': 'L',\n    '\\u013F': 'L',\n    '\\u0139': 'L',\n    '\\u013D': 'L',\n    '\\u1E36': 'L',\n    '\\u1E38': 'L',\n    '\\u013B': 'L',\n    '\\u1E3C': 'L',\n    '\\u1E3A': 'L',\n    '\\u0141': 'L',\n    '\\u023D': 'L',\n    '\\u2C62': 'L',\n    '\\u2C60': 'L',\n    '\\uA748': 'L',\n    '\\uA746': 'L',\n    '\\uA780': 'L',\n    '\\u01C7': 'LJ',\n    '\\u01C8': 'Lj',\n    '\\u24C2': 'M',\n    '\\uFF2D': 'M',\n    '\\u1E3E': 'M',\n    '\\u1E40': 'M',\n    '\\u1E42': 'M',\n    '\\u2C6E': 'M',\n    '\\u019C': 'M',\n    '\\u24C3': 'N',\n    '\\uFF2E': 'N',\n    '\\u01F8': 'N',\n    '\\u0143': 'N',\n    '\\u00D1': 'N',\n    '\\u1E44': 'N',\n    '\\u0147': 'N',\n    '\\u1E46': 'N',\n    '\\u0145': 'N',\n    '\\u1E4A': 'N',\n    '\\u1E48': 'N',\n    '\\u0220': 'N',\n    '\\u019D': 'N',\n    '\\uA790': 'N',\n    '\\uA7A4': 'N',\n    '\\u01CA': 'NJ',\n    '\\u01CB': 'Nj',\n    '\\u24C4': 'O',\n    '\\uFF2F': 'O',\n    '\\u00D2': 'O',\n    '\\u00D3': 'O',\n    '\\u00D4': 'O',\n    '\\u1ED2': 'O',\n    '\\u1ED0': 'O',\n    '\\u1ED6': 'O',\n    '\\u1ED4': 'O',\n    '\\u00D5': 'O',\n    '\\u1E4C': 'O',\n    '\\u022C': 'O',\n    '\\u1E4E': 'O',\n    '\\u014C': 'O',\n    '\\u1E50': 'O',\n    '\\u1E52': 'O',\n    '\\u014E': 'O',\n    '\\u022E': 'O',\n    '\\u0230': 'O',\n    '\\u00D6': 'O',\n    '\\u022A': 'O',\n    '\\u1ECE': 'O',\n    '\\u0150': 'O',\n    '\\u01D1': 'O',\n    '\\u020C': 'O',\n    '\\u020E': 'O',\n    '\\u01A0': 'O',\n    '\\u1EDC': 'O',\n    '\\u1EDA': 'O',\n    '\\u1EE0': 'O',\n    '\\u1EDE': 'O',\n    '\\u1EE2': 'O',\n    '\\u1ECC': 'O',\n    '\\u1ED8': 'O',\n    '\\u01EA': 'O',\n    '\\u01EC': 'O',\n    '\\u00D8': 'O',\n    '\\u01FE': 'O',\n    '\\u0186': 'O',\n    '\\u019F': 'O',\n    '\\uA74A': 'O',\n    '\\uA74C': 'O',\n    '\\u0152': 'OE',\n    '\\u01A2': 'OI',\n    '\\uA74E': 'OO',\n    '\\u0222': 'OU',\n    '\\u24C5': 'P',\n    '\\uFF30': 'P',\n    '\\u1E54': 'P',\n    '\\u1E56': 'P',\n    '\\u01A4': 'P',\n    '\\u2C63': 'P',\n    '\\uA750': 'P',\n    '\\uA752': 'P',\n    '\\uA754': 'P',\n    '\\u24C6': 'Q',\n    '\\uFF31': 'Q',\n    '\\uA756': 'Q',\n    '\\uA758': 'Q',\n    '\\u024A': 'Q',\n    '\\u24C7': 'R',\n    '\\uFF32': 'R',\n    '\\u0154': 'R',\n    '\\u1E58': 'R',\n    '\\u0158': 'R',\n    '\\u0210': 'R',\n    '\\u0212': 'R',\n    '\\u1E5A': 'R',\n    '\\u1E5C': 'R',\n    '\\u0156': 'R',\n    '\\u1E5E': 'R',\n    '\\u024C': 'R',\n    '\\u2C64': 'R',\n    '\\uA75A': 'R',\n    '\\uA7A6': 'R',\n    '\\uA782': 'R',\n    '\\u24C8': 'S',\n    '\\uFF33': 'S',\n    '\\u1E9E': 'S',\n    '\\u015A': 'S',\n    '\\u1E64': 'S',\n    '\\u015C': 'S',\n    '\\u1E60': 'S',\n    '\\u0160': 'S',\n    '\\u1E66': 'S',\n    '\\u1E62': 'S',\n    '\\u1E68': 'S',\n    '\\u0218': 'S',\n    '\\u015E': 'S',\n    '\\u2C7E': 'S',\n    '\\uA7A8': 'S',\n    '\\uA784': 'S',\n    '\\u24C9': 'T',\n    '\\uFF34': 'T',\n    '\\u1E6A': 'T',\n    '\\u0164': 'T',\n    '\\u1E6C': 'T',\n    '\\u021A': 'T',\n    '\\u0162': 'T',\n    '\\u1E70': 'T',\n    '\\u1E6E': 'T',\n    '\\u0166': 'T',\n    '\\u01AC': 'T',\n    '\\u01AE': 'T',\n    '\\u023E': 'T',\n    '\\uA786': 'T',\n    '\\uA728': 'TZ',\n    '\\u24CA': 'U',\n    '\\uFF35': 'U',\n    '\\u00D9': 'U',\n    '\\u00DA': 'U',\n    '\\u00DB': 'U',\n    '\\u0168': 'U',\n    '\\u1E78': 'U',\n    '\\u016A': 'U',\n    '\\u1E7A': 'U',\n    '\\u016C': 'U',\n    '\\u00DC': 'U',\n    '\\u01DB': 'U',\n    '\\u01D7': 'U',\n    '\\u01D5': 'U',\n    '\\u01D9': 'U',\n    '\\u1EE6': 'U',\n    '\\u016E': 'U',\n    '\\u0170': 'U',\n    '\\u01D3': 'U',\n    '\\u0214': 'U',\n    '\\u0216': 'U',\n    '\\u01AF': 'U',\n    '\\u1EEA': 'U',\n    '\\u1EE8': 'U',\n    '\\u1EEE': 'U',\n    '\\u1EEC': 'U',\n    '\\u1EF0': 'U',\n    '\\u1EE4': 'U',\n    '\\u1E72': 'U',\n    '\\u0172': 'U',\n    '\\u1E76': 'U',\n    '\\u1E74': 'U',\n    '\\u0244': 'U',\n    '\\u24CB': 'V',\n    '\\uFF36': 'V',\n    '\\u1E7C': 'V',\n    '\\u1E7E': 'V',\n    '\\u01B2': 'V',\n    '\\uA75E': 'V',\n    '\\u0245': 'V',\n    '\\uA760': 'VY',\n    '\\u24CC': 'W',\n    '\\uFF37': 'W',\n    '\\u1E80': 'W',\n    '\\u1E82': 'W',\n    '\\u0174': 'W',\n    '\\u1E86': 'W',\n    '\\u1E84': 'W',\n    '\\u1E88': 'W',\n    '\\u2C72': 'W',\n    '\\u24CD': 'X',\n    '\\uFF38': 'X',\n    '\\u1E8A': 'X',\n    '\\u1E8C': 'X',\n    '\\u24CE': 'Y',\n    '\\uFF39': 'Y',\n    '\\u1EF2': 'Y',\n    '\\u00DD': 'Y',\n    '\\u0176': 'Y',\n    '\\u1EF8': 'Y',\n    '\\u0232': 'Y',\n    '\\u1E8E': 'Y',\n    '\\u0178': 'Y',\n    '\\u1EF6': 'Y',\n    '\\u1EF4': 'Y',\n    '\\u01B3': 'Y',\n    '\\u024E': 'Y',\n    '\\u1EFE': 'Y',\n    '\\u24CF': 'Z',\n    '\\uFF3A': 'Z',\n    '\\u0179': 'Z',\n    '\\u1E90': 'Z',\n    '\\u017B': 'Z',\n    '\\u017D': 'Z',\n    '\\u1E92': 'Z',\n    '\\u1E94': 'Z',\n    '\\u01B5': 'Z',\n    '\\u0224': 'Z',\n    '\\u2C7F': 'Z',\n    '\\u2C6B': 'Z',\n    '\\uA762': 'Z',\n    '\\u24D0': 'a',\n    '\\uFF41': 'a',\n    '\\u1E9A': 'a',\n    '\\u00E0': 'a',\n    '\\u00E1': 'a',\n    '\\u00E2': 'a',\n    '\\u1EA7': 'a',\n    '\\u1EA5': 'a',\n    '\\u1EAB': 'a',\n    '\\u1EA9': 'a',\n    '\\u00E3': 'a',\n    '\\u0101': 'a',\n    '\\u0103': 'a',\n    '\\u1EB1': 'a',\n    '\\u1EAF': 'a',\n    '\\u1EB5': 'a',\n    '\\u1EB3': 'a',\n    '\\u0227': 'a',\n    '\\u01E1': 'a',\n    '\\u00E4': 'a',\n    '\\u01DF': 'a',\n    '\\u1EA3': 'a',\n    '\\u00E5': 'a',\n    '\\u01FB': 'a',\n    '\\u01CE': 'a',\n    '\\u0201': 'a',\n    '\\u0203': 'a',\n    '\\u1EA1': 'a',\n    '\\u1EAD': 'a',\n    '\\u1EB7': 'a',\n    '\\u1E01': 'a',\n    '\\u0105': 'a',\n    '\\u2C65': 'a',\n    '\\u0250': 'a',\n    '\\uA733': 'aa',\n    '\\u00E6': 'ae',\n    '\\u01FD': 'ae',\n    '\\u01E3': 'ae',\n    '\\uA735': 'ao',\n    '\\uA737': 'au',\n    '\\uA739': 'av',\n    '\\uA73B': 'av',\n    '\\uA73D': 'ay',\n    '\\u24D1': 'b',\n    '\\uFF42': 'b',\n    '\\u1E03': 'b',\n    '\\u1E05': 'b',\n    '\\u1E07': 'b',\n    '\\u0180': 'b',\n    '\\u0183': 'b',\n    '\\u0253': 'b',\n    '\\u24D2': 'c',\n    '\\uFF43': 'c',\n    '\\u0107': 'c',\n    '\\u0109': 'c',\n    '\\u010B': 'c',\n    '\\u010D': 'c',\n    '\\u00E7': 'c',\n    '\\u1E09': 'c',\n    '\\u0188': 'c',\n    '\\u023C': 'c',\n    '\\uA73F': 'c',\n    '\\u2184': 'c',\n    '\\u24D3': 'd',\n    '\\uFF44': 'd',\n    '\\u1E0B': 'd',\n    '\\u010F': 'd',\n    '\\u1E0D': 'd',\n    '\\u1E11': 'd',\n    '\\u1E13': 'd',\n    '\\u1E0F': 'd',\n    '\\u0111': 'd',\n    '\\u018C': 'd',\n    '\\u0256': 'd',\n    '\\u0257': 'd',\n    '\\uA77A': 'd',\n    '\\u01F3': 'dz',\n    '\\u01C6': 'dz',\n    '\\u24D4': 'e',\n    '\\uFF45': 'e',\n    '\\u00E8': 'e',\n    '\\u00E9': 'e',\n    '\\u00EA': 'e',\n    '\\u1EC1': 'e',\n    '\\u1EBF': 'e',\n    '\\u1EC5': 'e',\n    '\\u1EC3': 'e',\n    '\\u1EBD': 'e',\n    '\\u0113': 'e',\n    '\\u1E15': 'e',\n    '\\u1E17': 'e',\n    '\\u0115': 'e',\n    '\\u0117': 'e',\n    '\\u00EB': 'e',\n    '\\u1EBB': 'e',\n    '\\u011B': 'e',\n    '\\u0205': 'e',\n    '\\u0207': 'e',\n    '\\u1EB9': 'e',\n    '\\u1EC7': 'e',\n    '\\u0229': 'e',\n    '\\u1E1D': 'e',\n    '\\u0119': 'e',\n    '\\u1E19': 'e',\n    '\\u1E1B': 'e',\n    '\\u0247': 'e',\n    '\\u025B': 'e',\n    '\\u01DD': 'e',\n    '\\u24D5': 'f',\n    '\\uFF46': 'f',\n    '\\u1E1F': 'f',\n    '\\u0192': 'f',\n    '\\uA77C': 'f',\n    '\\u24D6': 'g',\n    '\\uFF47': 'g',\n    '\\u01F5': 'g',\n    '\\u011D': 'g',\n    '\\u1E21': 'g',\n    '\\u011F': 'g',\n    '\\u0121': 'g',\n    '\\u01E7': 'g',\n    '\\u0123': 'g',\n    '\\u01E5': 'g',\n    '\\u0260': 'g',\n    '\\uA7A1': 'g',\n    '\\u1D79': 'g',\n    '\\uA77F': 'g',\n    '\\u24D7': 'h',\n    '\\uFF48': 'h',\n    '\\u0125': 'h',\n    '\\u1E23': 'h',\n    '\\u1E27': 'h',\n    '\\u021F': 'h',\n    '\\u1E25': 'h',\n    '\\u1E29': 'h',\n    '\\u1E2B': 'h',\n    '\\u1E96': 'h',\n    '\\u0127': 'h',\n    '\\u2C68': 'h',\n    '\\u2C76': 'h',\n    '\\u0265': 'h',\n    '\\u0195': 'hv',\n    '\\u24D8': 'i',\n    '\\uFF49': 'i',\n    '\\u00EC': 'i',\n    '\\u00ED': 'i',\n    '\\u00EE': 'i',\n    '\\u0129': 'i',\n    '\\u012B': 'i',\n    '\\u012D': 'i',\n    '\\u00EF': 'i',\n    '\\u1E2F': 'i',\n    '\\u1EC9': 'i',\n    '\\u01D0': 'i',\n    '\\u0209': 'i',\n    '\\u020B': 'i',\n    '\\u1ECB': 'i',\n    '\\u012F': 'i',\n    '\\u1E2D': 'i',\n    '\\u0268': 'i',\n    '\\u0131': 'i',\n    '\\u24D9': 'j',\n    '\\uFF4A': 'j',\n    '\\u0135': 'j',\n    '\\u01F0': 'j',\n    '\\u0249': 'j',\n    '\\u24DA': 'k',\n    '\\uFF4B': 'k',\n    '\\u1E31': 'k',\n    '\\u01E9': 'k',\n    '\\u1E33': 'k',\n    '\\u0137': 'k',\n    '\\u1E35': 'k',\n    '\\u0199': 'k',\n    '\\u2C6A': 'k',\n    '\\uA741': 'k',\n    '\\uA743': 'k',\n    '\\uA745': 'k',\n    '\\uA7A3': 'k',\n    '\\u24DB': 'l',\n    '\\uFF4C': 'l',\n    '\\u0140': 'l',\n    '\\u013A': 'l',\n    '\\u013E': 'l',\n    '\\u1E37': 'l',\n    '\\u1E39': 'l',\n    '\\u013C': 'l',\n    '\\u1E3D': 'l',\n    '\\u1E3B': 'l',\n    '\\u017F': 'l',\n    '\\u0142': 'l',\n    '\\u019A': 'l',\n    '\\u026B': 'l',\n    '\\u2C61': 'l',\n    '\\uA749': 'l',\n    '\\uA781': 'l',\n    '\\uA747': 'l',\n    '\\u01C9': 'lj',\n    '\\u24DC': 'm',\n    '\\uFF4D': 'm',\n    '\\u1E3F': 'm',\n    '\\u1E41': 'm',\n    '\\u1E43': 'm',\n    '\\u0271': 'm',\n    '\\u026F': 'm',\n    '\\u24DD': 'n',\n    '\\uFF4E': 'n',\n    '\\u01F9': 'n',\n    '\\u0144': 'n',\n    '\\u00F1': 'n',\n    '\\u1E45': 'n',\n    '\\u0148': 'n',\n    '\\u1E47': 'n',\n    '\\u0146': 'n',\n    '\\u1E4B': 'n',\n    '\\u1E49': 'n',\n    '\\u019E': 'n',\n    '\\u0272': 'n',\n    '\\u0149': 'n',\n    '\\uA791': 'n',\n    '\\uA7A5': 'n',\n    '\\u01CC': 'nj',\n    '\\u24DE': 'o',\n    '\\uFF4F': 'o',\n    '\\u00F2': 'o',\n    '\\u00F3': 'o',\n    '\\u00F4': 'o',\n    '\\u1ED3': 'o',\n    '\\u1ED1': 'o',\n    '\\u1ED7': 'o',\n    '\\u1ED5': 'o',\n    '\\u00F5': 'o',\n    '\\u1E4D': 'o',\n    '\\u022D': 'o',\n    '\\u1E4F': 'o',\n    '\\u014D': 'o',\n    '\\u1E51': 'o',\n    '\\u1E53': 'o',\n    '\\u014F': 'o',\n    '\\u022F': 'o',\n    '\\u0231': 'o',\n    '\\u00F6': 'o',\n    '\\u022B': 'o',\n    '\\u1ECF': 'o',\n    '\\u0151': 'o',\n    '\\u01D2': 'o',\n    '\\u020D': 'o',\n    '\\u020F': 'o',\n    '\\u01A1': 'o',\n    '\\u1EDD': 'o',\n    '\\u1EDB': 'o',\n    '\\u1EE1': 'o',\n    '\\u1EDF': 'o',\n    '\\u1EE3': 'o',\n    '\\u1ECD': 'o',\n    '\\u1ED9': 'o',\n    '\\u01EB': 'o',\n    '\\u01ED': 'o',\n    '\\u00F8': 'o',\n    '\\u01FF': 'o',\n    '\\u0254': 'o',\n    '\\uA74B': 'o',\n    '\\uA74D': 'o',\n    '\\u0275': 'o',\n    '\\u0153': 'oe',\n    '\\u01A3': 'oi',\n    '\\u0223': 'ou',\n    '\\uA74F': 'oo',\n    '\\u24DF': 'p',\n    '\\uFF50': 'p',\n    '\\u1E55': 'p',\n    '\\u1E57': 'p',\n    '\\u01A5': 'p',\n    '\\u1D7D': 'p',\n    '\\uA751': 'p',\n    '\\uA753': 'p',\n    '\\uA755': 'p',\n    '\\u24E0': 'q',\n    '\\uFF51': 'q',\n    '\\u024B': 'q',\n    '\\uA757': 'q',\n    '\\uA759': 'q',\n    '\\u24E1': 'r',\n    '\\uFF52': 'r',\n    '\\u0155': 'r',\n    '\\u1E59': 'r',\n    '\\u0159': 'r',\n    '\\u0211': 'r',\n    '\\u0213': 'r',\n    '\\u1E5B': 'r',\n    '\\u1E5D': 'r',\n    '\\u0157': 'r',\n    '\\u1E5F': 'r',\n    '\\u024D': 'r',\n    '\\u027D': 'r',\n    '\\uA75B': 'r',\n    '\\uA7A7': 'r',\n    '\\uA783': 'r',\n    '\\u24E2': 's',\n    '\\uFF53': 's',\n    '\\u00DF': 's',\n    '\\u015B': 's',\n    '\\u1E65': 's',\n    '\\u015D': 's',\n    '\\u1E61': 's',\n    '\\u0161': 's',\n    '\\u1E67': 's',\n    '\\u1E63': 's',\n    '\\u1E69': 's',\n    '\\u0219': 's',\n    '\\u015F': 's',\n    '\\u023F': 's',\n    '\\uA7A9': 's',\n    '\\uA785': 's',\n    '\\u1E9B': 's',\n    '\\u24E3': 't',\n    '\\uFF54': 't',\n    '\\u1E6B': 't',\n    '\\u1E97': 't',\n    '\\u0165': 't',\n    '\\u1E6D': 't',\n    '\\u021B': 't',\n    '\\u0163': 't',\n    '\\u1E71': 't',\n    '\\u1E6F': 't',\n    '\\u0167': 't',\n    '\\u01AD': 't',\n    '\\u0288': 't',\n    '\\u2C66': 't',\n    '\\uA787': 't',\n    '\\uA729': 'tz',\n    '\\u24E4': 'u',\n    '\\uFF55': 'u',\n    '\\u00F9': 'u',\n    '\\u00FA': 'u',\n    '\\u00FB': 'u',\n    '\\u0169': 'u',\n    '\\u1E79': 'u',\n    '\\u016B': 'u',\n    '\\u1E7B': 'u',\n    '\\u016D': 'u',\n    '\\u00FC': 'u',\n    '\\u01DC': 'u',\n    '\\u01D8': 'u',\n    '\\u01D6': 'u',\n    '\\u01DA': 'u',\n    '\\u1EE7': 'u',\n    '\\u016F': 'u',\n    '\\u0171': 'u',\n    '\\u01D4': 'u',\n    '\\u0215': 'u',\n    '\\u0217': 'u',\n    '\\u01B0': 'u',\n    '\\u1EEB': 'u',\n    '\\u1EE9': 'u',\n    '\\u1EEF': 'u',\n    '\\u1EED': 'u',\n    '\\u1EF1': 'u',\n    '\\u1EE5': 'u',\n    '\\u1E73': 'u',\n    '\\u0173': 'u',\n    '\\u1E77': 'u',\n    '\\u1E75': 'u',\n    '\\u0289': 'u',\n    '\\u24E5': 'v',\n    '\\uFF56': 'v',\n    '\\u1E7D': 'v',\n    '\\u1E7F': 'v',\n    '\\u028B': 'v',\n    '\\uA75F': 'v',\n    '\\u028C': 'v',\n    '\\uA761': 'vy',\n    '\\u24E6': 'w',\n    '\\uFF57': 'w',\n    '\\u1E81': 'w',\n    '\\u1E83': 'w',\n    '\\u0175': 'w',\n    '\\u1E87': 'w',\n    '\\u1E85': 'w',\n    '\\u1E98': 'w',\n    '\\u1E89': 'w',\n    '\\u2C73': 'w',\n    '\\u24E7': 'x',\n    '\\uFF58': 'x',\n    '\\u1E8B': 'x',\n    '\\u1E8D': 'x',\n    '\\u24E8': 'y',\n    '\\uFF59': 'y',\n    '\\u1EF3': 'y',\n    '\\u00FD': 'y',\n    '\\u0177': 'y',\n    '\\u1EF9': 'y',\n    '\\u0233': 'y',\n    '\\u1E8F': 'y',\n    '\\u00FF': 'y',\n    '\\u1EF7': 'y',\n    '\\u1E99': 'y',\n    '\\u1EF5': 'y',\n    '\\u01B4': 'y',\n    '\\u024F': 'y',\n    '\\u1EFF': 'y',\n    '\\u24E9': 'z',\n    '\\uFF5A': 'z',\n    '\\u017A': 'z',\n    '\\u1E91': 'z',\n    '\\u017C': 'z',\n    '\\u017E': 'z',\n    '\\u1E93': 'z',\n    '\\u1E95': 'z',\n    '\\u01B6': 'z',\n    '\\u0225': 'z',\n    '\\u0240': 'z',\n    '\\u2C6C': 'z',\n    '\\uA763': 'z',\n    '\\u0386': '\\u0391',\n    '\\u0388': '\\u0395',\n    '\\u0389': '\\u0397',\n    '\\u038A': '\\u0399',\n    '\\u03AA': '\\u0399',\n    '\\u038C': '\\u039F',\n    '\\u038E': '\\u03A5',\n    '\\u03AB': '\\u03A5',\n    '\\u038F': '\\u03A9',\n    '\\u03AC': '\\u03B1',\n    '\\u03AD': '\\u03B5',\n    '\\u03AE': '\\u03B7',\n    '\\u03AF': '\\u03B9',\n    '\\u03CA': '\\u03B9',\n    '\\u0390': '\\u03B9',\n    '\\u03CC': '\\u03BF',\n    '\\u03CD': '\\u03C5',\n    '\\u03CB': '\\u03C5',\n    '\\u03B0': '\\u03C5',\n    '\\u03CE': '\\u03C9',\n    '\\u03C2': '\\u03C3',\n    '\\u2019': '\\''\n  };\n\n  return diacritics;\n});\n\nS2.define('select2/data/base',[\n  '../utils'\n], function (Utils) {\n  function BaseAdapter ($element, options) {\n    BaseAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(BaseAdapter, Utils.Observable);\n\n  BaseAdapter.prototype.current = function (callback) {\n    throw new Error('The `current` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.query = function (params, callback) {\n    throw new Error('The `query` method must be defined in child classes.');\n  };\n\n  BaseAdapter.prototype.bind = function (container, $container) {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.destroy = function () {\n    // Can be implemented in subclasses\n  };\n\n  BaseAdapter.prototype.generateResultId = function (container, data) {\n    var id = container.id + '-result-';\n\n    id += Utils.generateChars(4);\n\n    if (data.id != null) {\n      id += '-' + data.id.toString();\n    } else {\n      id += '-' + Utils.generateChars(4);\n    }\n    return id;\n  };\n\n  return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n  './base',\n  '../utils',\n  'jquery'\n], function (BaseAdapter, Utils, $) {\n  function SelectAdapter ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    SelectAdapter.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(SelectAdapter, BaseAdapter);\n\n  SelectAdapter.prototype.current = function (callback) {\n    var data = [];\n    var self = this;\n\n    this.$element.find(':selected').each(function () {\n      var $option = $(this);\n\n      var option = self.item($option);\n\n      data.push(option);\n    });\n\n    callback(data);\n  };\n\n  SelectAdapter.prototype.select = function (data) {\n    var self = this;\n\n    data.selected = true;\n\n    // If data.element is a DOM node, use it instead\n    if ($(data.element).is('option')) {\n      data.element.selected = true;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    if (this.$element.prop('multiple')) {\n      this.current(function (currentData) {\n        var val = [];\n\n        data = [data];\n        data.push.apply(data, currentData);\n\n        for (var d = 0; d < data.length; d++) {\n          var id = data[d].id;\n\n          if ($.inArray(id, val) === -1) {\n            val.push(id);\n          }\n        }\n\n        self.$element.val(val);\n        self.$element.trigger('input').trigger('change');\n      });\n    } else {\n      var val = data.id;\n\n      this.$element.val(val);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  SelectAdapter.prototype.unselect = function (data) {\n    var self = this;\n\n    if (!this.$element.prop('multiple')) {\n      return;\n    }\n\n    data.selected = false;\n\n    if ($(data.element).is('option')) {\n      data.element.selected = false;\n\n      this.$element.trigger('input').trigger('change');\n\n      return;\n    }\n\n    this.current(function (currentData) {\n      var val = [];\n\n      for (var d = 0; d < currentData.length; d++) {\n        var id = currentData[d].id;\n\n        if (id !== data.id && $.inArray(id, val) === -1) {\n          val.push(id);\n        }\n      }\n\n      self.$element.val(val);\n\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  SelectAdapter.prototype.bind = function (container, $container) {\n    var self = this;\n\n    this.container = container;\n\n    container.on('select', function (params) {\n      self.select(params.data);\n    });\n\n    container.on('unselect', function (params) {\n      self.unselect(params.data);\n    });\n  };\n\n  SelectAdapter.prototype.destroy = function () {\n    // Remove anything added to child elements\n    this.$element.find('*').each(function () {\n      // Remove any custom data set by Select2\n      Utils.RemoveData(this);\n    });\n  };\n\n  SelectAdapter.prototype.query = function (params, callback) {\n    var data = [];\n    var self = this;\n\n    var $options = this.$element.children();\n\n    $options.each(function () {\n      var $option = $(this);\n\n      if (!$option.is('option') && !$option.is('optgroup')) {\n        return;\n      }\n\n      var option = self.item($option);\n\n      var matches = self.matches(params, option);\n\n      if (matches !== null) {\n        data.push(matches);\n      }\n    });\n\n    callback({\n      results: data\n    });\n  };\n\n  SelectAdapter.prototype.addOptions = function ($options) {\n    Utils.appendMany(this.$element, $options);\n  };\n\n  SelectAdapter.prototype.option = function (data) {\n    var option;\n\n    if (data.children) {\n      option = document.createElement('optgroup');\n      option.label = data.text;\n    } else {\n      option = document.createElement('option');\n\n      if (option.textContent !== undefined) {\n        option.textContent = data.text;\n      } else {\n        option.innerText = data.text;\n      }\n    }\n\n    if (data.id !== undefined) {\n      option.value = data.id;\n    }\n\n    if (data.disabled) {\n      option.disabled = true;\n    }\n\n    if (data.selected) {\n      option.selected = true;\n    }\n\n    if (data.title) {\n      option.title = data.title;\n    }\n\n    var $option = $(option);\n\n    var normalizedData = this._normalizeItem(data);\n    normalizedData.element = option;\n\n    // Override the option's data with the combined data\n    Utils.StoreData(option, 'data', normalizedData);\n\n    return $option;\n  };\n\n  SelectAdapter.prototype.item = function ($option) {\n    var data = {};\n\n    data = Utils.GetData($option[0], 'data');\n\n    if (data != null) {\n      return data;\n    }\n\n    if ($option.is('option')) {\n      data = {\n        id: $option.val(),\n        text: $option.text(),\n        disabled: $option.prop('disabled'),\n        selected: $option.prop('selected'),\n        title: $option.prop('title')\n      };\n    } else if ($option.is('optgroup')) {\n      data = {\n        text: $option.prop('label'),\n        children: [],\n        title: $option.prop('title')\n      };\n\n      var $children = $option.children('option');\n      var children = [];\n\n      for (var c = 0; c < $children.length; c++) {\n        var $child = $($children[c]);\n\n        var child = this.item($child);\n\n        children.push(child);\n      }\n\n      data.children = children;\n    }\n\n    data = this._normalizeItem(data);\n    data.element = $option[0];\n\n    Utils.StoreData($option[0], 'data', data);\n\n    return data;\n  };\n\n  SelectAdapter.prototype._normalizeItem = function (item) {\n    if (item !== Object(item)) {\n      item = {\n        id: item,\n        text: item\n      };\n    }\n\n    item = $.extend({}, {\n      text: ''\n    }, item);\n\n    var defaults = {\n      selected: false,\n      disabled: false\n    };\n\n    if (item.id != null) {\n      item.id = item.id.toString();\n    }\n\n    if (item.text != null) {\n      item.text = item.text.toString();\n    }\n\n    if (item._resultId == null && item.id && this.container != null) {\n      item._resultId = this.generateResultId(this.container, item);\n    }\n\n    return $.extend({}, defaults, item);\n  };\n\n  SelectAdapter.prototype.matches = function (params, data) {\n    var matcher = this.options.get('matcher');\n\n    return matcher(params, data);\n  };\n\n  return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n  './select',\n  '../utils',\n  'jquery'\n], function (SelectAdapter, Utils, $) {\n  function ArrayAdapter ($element, options) {\n    this._dataToConvert = options.get('data') || [];\n\n    ArrayAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(ArrayAdapter, SelectAdapter);\n\n  ArrayAdapter.prototype.bind = function (container, $container) {\n    ArrayAdapter.__super__.bind.call(this, container, $container);\n\n    this.addOptions(this.convertToOptions(this._dataToConvert));\n  };\n\n  ArrayAdapter.prototype.select = function (data) {\n    var $option = this.$element.find('option').filter(function (i, elm) {\n      return elm.value == data.id.toString();\n    });\n\n    if ($option.length === 0) {\n      $option = this.option(data);\n\n      this.addOptions($option);\n    }\n\n    ArrayAdapter.__super__.select.call(this, data);\n  };\n\n  ArrayAdapter.prototype.convertToOptions = function (data) {\n    var self = this;\n\n    var $existing = this.$element.find('option');\n    var existingIds = $existing.map(function () {\n      return self.item($(this)).id;\n    }).get();\n\n    var $options = [];\n\n    // Filter out all items except for the one passed in the argument\n    function onlyItem (item) {\n      return function () {\n        return $(this).val() == item.id;\n      };\n    }\n\n    for (var d = 0; d < data.length; d++) {\n      var item = this._normalizeItem(data[d]);\n\n      // Skip items which were pre-loaded, only merge the data\n      if ($.inArray(item.id, existingIds) >= 0) {\n        var $existingOption = $existing.filter(onlyItem(item));\n\n        var existingData = this.item($existingOption);\n        var newData = $.extend(true, {}, item, existingData);\n\n        var $newOption = this.option(newData);\n\n        $existingOption.replaceWith($newOption);\n\n        continue;\n      }\n\n      var $option = this.option(item);\n\n      if (item.children) {\n        var $children = this.convertToOptions(item.children);\n\n        Utils.appendMany($option, $children);\n      }\n\n      $options.push($option);\n    }\n\n    return $options;\n  };\n\n  return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n  './array',\n  '../utils',\n  'jquery'\n], function (ArrayAdapter, Utils, $) {\n  function AjaxAdapter ($element, options) {\n    this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n    if (this.ajaxOptions.processResults != null) {\n      this.processResults = this.ajaxOptions.processResults;\n    }\n\n    AjaxAdapter.__super__.constructor.call(this, $element, options);\n  }\n\n  Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n  AjaxAdapter.prototype._applyDefaults = function (options) {\n    var defaults = {\n      data: function (params) {\n        return $.extend({}, params, {\n          q: params.term\n        });\n      },\n      transport: function (params, success, failure) {\n        var $request = $.ajax(params);\n\n        $request.then(success);\n        $request.fail(failure);\n\n        return $request;\n      }\n    };\n\n    return $.extend({}, defaults, options, true);\n  };\n\n  AjaxAdapter.prototype.processResults = function (results) {\n    return results;\n  };\n\n  AjaxAdapter.prototype.query = function (params, callback) {\n    var matches = [];\n    var self = this;\n\n    if (this._request != null) {\n      // JSONP requests cannot always be aborted\n      if ($.isFunction(this._request.abort)) {\n        this._request.abort();\n      }\n\n      this._request = null;\n    }\n\n    var options = $.extend({\n      type: 'GET'\n    }, this.ajaxOptions);\n\n    if (typeof options.url === 'function') {\n      options.url = options.url.call(this.$element, params);\n    }\n\n    if (typeof options.data === 'function') {\n      options.data = options.data.call(this.$element, params);\n    }\n\n    function request () {\n      var $request = options.transport(options, function (data) {\n        var results = self.processResults(data, params);\n\n        if (self.options.get('debug') && window.console && console.error) {\n          // Check to make sure that the response included a `results` key.\n          if (!results || !results.results || !$.isArray(results.results)) {\n            console.error(\n              'Select2: The AJAX results did not return an array in the ' +\n              '`results` key of the response.'\n            );\n          }\n        }\n\n        callback(results);\n      }, function () {\n        // Attempt to detect if a request was aborted\n        // Only works if the transport exposes a status property\n        if ('status' in $request &&\n            ($request.status === 0 || $request.status === '0')) {\n          return;\n        }\n\n        self.trigger('results:message', {\n          message: 'errorLoading'\n        });\n      });\n\n      self._request = $request;\n    }\n\n    if (this.ajaxOptions.delay && params.term != null) {\n      if (this._queryTimeout) {\n        window.clearTimeout(this._queryTimeout);\n      }\n\n      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n    } else {\n      request();\n    }\n  };\n\n  return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n  'jquery'\n], function ($) {\n  function Tags (decorated, $element, options) {\n    var tags = options.get('tags');\n\n    var createTag = options.get('createTag');\n\n    if (createTag !== undefined) {\n      this.createTag = createTag;\n    }\n\n    var insertTag = options.get('insertTag');\n\n    if (insertTag !== undefined) {\n        this.insertTag = insertTag;\n    }\n\n    decorated.call(this, $element, options);\n\n    if ($.isArray(tags)) {\n      for (var t = 0; t < tags.length; t++) {\n        var tag = tags[t];\n        var item = this._normalizeItem(tag);\n\n        var $option = this.option(item);\n\n        this.$element.append($option);\n      }\n    }\n  }\n\n  Tags.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    this._removeOldTags();\n\n    if (params.term == null || params.page != null) {\n      decorated.call(this, params, callback);\n      return;\n    }\n\n    function wrapper (obj, child) {\n      var data = obj.results;\n\n      for (var i = 0; i < data.length; i++) {\n        var option = data[i];\n\n        var checkChildren = (\n          option.children != null &&\n          !wrapper({\n            results: option.children\n          }, true)\n        );\n\n        var optionText = (option.text || '').toUpperCase();\n        var paramsTerm = (params.term || '').toUpperCase();\n\n        var checkText = optionText === paramsTerm;\n\n        if (checkText || checkChildren) {\n          if (child) {\n            return false;\n          }\n\n          obj.data = data;\n          callback(obj);\n\n          return;\n        }\n      }\n\n      if (child) {\n        return true;\n      }\n\n      var tag = self.createTag(params);\n\n      if (tag != null) {\n        var $option = self.option(tag);\n        $option.attr('data-select2-tag', true);\n\n        self.addOptions([$option]);\n\n        self.insertTag(data, tag);\n      }\n\n      obj.results = data;\n\n      callback(obj);\n    }\n\n    decorated.call(this, params, wrapper);\n  };\n\n  Tags.prototype.createTag = function (decorated, params) {\n    var term = $.trim(params.term);\n\n    if (term === '') {\n      return null;\n    }\n\n    return {\n      id: term,\n      text: term\n    };\n  };\n\n  Tags.prototype.insertTag = function (_, data, tag) {\n    data.unshift(tag);\n  };\n\n  Tags.prototype._removeOldTags = function (_) {\n    var $options = this.$element.find('option[data-select2-tag]');\n\n    $options.each(function () {\n      if (this.selected) {\n        return;\n      }\n\n      $(this).remove();\n    });\n  };\n\n  return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n  'jquery'\n], function ($) {\n  function Tokenizer (decorated, $element, options) {\n    var tokenizer = options.get('tokenizer');\n\n    if (tokenizer !== undefined) {\n      this.tokenizer = tokenizer;\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Tokenizer.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    this.$search =  container.dropdown.$search || container.selection.$search ||\n      $container.find('.select2-search__field');\n  };\n\n  Tokenizer.prototype.query = function (decorated, params, callback) {\n    var self = this;\n\n    function createAndSelect (data) {\n      // Normalize the data object so we can use it for checks\n      var item = self._normalizeItem(data);\n\n      // Check if the data object already exists as a tag\n      // Select it if it doesn't\n      var $existingOptions = self.$element.find('option').filter(function () {\n        return $(this).val() === item.id;\n      });\n\n      // If an existing option wasn't found for it, create the option\n      if (!$existingOptions.length) {\n        var $option = self.option(item);\n        $option.attr('data-select2-tag', true);\n\n        self._removeOldTags();\n        self.addOptions([$option]);\n      }\n\n      // Select the item, now that we know there is an option for it\n      select(item);\n    }\n\n    function select (data) {\n      self.trigger('select', {\n        data: data\n      });\n    }\n\n    params.term = params.term || '';\n\n    var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n    if (tokenData.term !== params.term) {\n      // Replace the search term if we have the search box\n      if (this.$search.length) {\n        this.$search.val(tokenData.term);\n        this.$search.trigger('focus');\n      }\n\n      params.term = tokenData.term;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n    var separators = options.get('tokenSeparators') || [];\n    var term = params.term;\n    var i = 0;\n\n    var createTag = this.createTag || function (params) {\n      return {\n        id: params.term,\n        text: params.term\n      };\n    };\n\n    while (i < term.length) {\n      var termChar = term[i];\n\n      if ($.inArray(termChar, separators) === -1) {\n        i++;\n\n        continue;\n      }\n\n      var part = term.substr(0, i);\n      var partParams = $.extend({}, params, {\n        term: part\n      });\n\n      var data = createTag(partParams);\n\n      if (data == null) {\n        i++;\n        continue;\n      }\n\n      callback(data);\n\n      // Reset the term to not include the tokenized portion\n      term = term.substr(i + 1) || '';\n      i = 0;\n    }\n\n    return {\n      term: term\n    };\n  };\n\n  return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n  function MinimumInputLength (decorated, $e, options) {\n    this.minimumInputLength = options.get('minimumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MinimumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (params.term.length < this.minimumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooShort',\n        args: {\n          minimum: this.minimumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n  function MaximumInputLength (decorated, $e, options) {\n    this.maximumInputLength = options.get('maximumInputLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumInputLength.prototype.query = function (decorated, params, callback) {\n    params.term = params.term || '';\n\n    if (this.maximumInputLength > 0 &&\n        params.term.length > this.maximumInputLength) {\n      this.trigger('results:message', {\n        message: 'inputTooLong',\n        args: {\n          maximum: this.maximumInputLength,\n          input: params.term,\n          params: params\n        }\n      });\n\n      return;\n    }\n\n    decorated.call(this, params, callback);\n  };\n\n  return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n  function MaximumSelectionLength (decorated, $e, options) {\n    this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n    decorated.call(this, $e, options);\n  }\n\n  MaximumSelectionLength.prototype.bind =\n    function (decorated, container, $container) {\n      var self = this;\n\n      decorated.call(this, container, $container);\n\n      container.on('select', function () {\n        self._checkIfMaximumSelected();\n      });\n  };\n\n  MaximumSelectionLength.prototype.query =\n    function (decorated, params, callback) {\n      var self = this;\n\n      this._checkIfMaximumSelected(function () {\n        decorated.call(self, params, callback);\n      });\n  };\n\n  MaximumSelectionLength.prototype._checkIfMaximumSelected =\n    function (_, successCallback) {\n      var self = this;\n\n      this.current(function (currentData) {\n        var count = currentData != null ? currentData.length : 0;\n        if (self.maximumSelectionLength > 0 &&\n          count >= self.maximumSelectionLength) {\n          self.trigger('results:message', {\n            message: 'maximumSelected',\n            args: {\n              maximum: self.maximumSelectionLength\n            }\n          });\n          return;\n        }\n\n        if (successCallback) {\n          successCallback();\n        }\n      });\n  };\n\n  return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n  'jquery',\n  './utils'\n], function ($, Utils) {\n  function Dropdown ($element, options) {\n    this.$element = $element;\n    this.options = options;\n\n    Dropdown.__super__.constructor.call(this);\n  }\n\n  Utils.Extend(Dropdown, Utils.Observable);\n\n  Dropdown.prototype.render = function () {\n    var $dropdown = $(\n      '<span class=\"select2-dropdown\">' +\n        '<span class=\"select2-results\"></span>' +\n      '</span>'\n    );\n\n    $dropdown.attr('dir', this.options.get('dir'));\n\n    this.$dropdown = $dropdown;\n\n    return $dropdown;\n  };\n\n  Dropdown.prototype.bind = function () {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.position = function ($dropdown, $container) {\n    // Should be implemented in subclasses\n  };\n\n  Dropdown.prototype.destroy = function () {\n    // Remove the dropdown from the DOM\n    this.$dropdown.remove();\n  };\n\n  return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function Search () { }\n\n  Search.prototype.render = function (decorated) {\n    var $rendered = decorated.call(this);\n\n    var $search = $(\n      '<span class=\"select2-search select2-search--dropdown\">' +\n        '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n        ' autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\"' +\n        ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n      '</span>'\n    );\n\n    this.$searchContainer = $search;\n    this.$search = $search.find('input');\n\n    $rendered.prepend($search);\n\n    return $rendered;\n  };\n\n  Search.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    var resultsId = container.id + '-results';\n\n    decorated.call(this, container, $container);\n\n    this.$search.on('keydown', function (evt) {\n      self.trigger('keypress', evt);\n\n      self._keyUpPrevented = evt.isDefaultPrevented();\n    });\n\n    // Workaround for browsers which do not support the `input` event\n    // This will prevent double-triggering of events for browsers which support\n    // both the `keyup` and `input` events.\n    this.$search.on('input', function (evt) {\n      // Unbind the duplicated `keyup` event\n      $(this).off('keyup');\n    });\n\n    this.$search.on('keyup input', function (evt) {\n      self.handleSearch(evt);\n    });\n\n    container.on('open', function () {\n      self.$search.attr('tabindex', 0);\n      self.$search.attr('aria-controls', resultsId);\n\n      self.$search.trigger('focus');\n\n      window.setTimeout(function () {\n        self.$search.trigger('focus');\n      }, 0);\n    });\n\n    container.on('close', function () {\n      self.$search.attr('tabindex', -1);\n      self.$search.removeAttr('aria-controls');\n      self.$search.removeAttr('aria-activedescendant');\n\n      self.$search.val('');\n      self.$search.trigger('blur');\n    });\n\n    container.on('focus', function () {\n      if (!container.isOpen()) {\n        self.$search.trigger('focus');\n      }\n    });\n\n    container.on('results:all', function (params) {\n      if (params.query.term == null || params.query.term === '') {\n        var showSearch = self.showSearch(params);\n\n        if (showSearch) {\n          self.$searchContainer.removeClass('select2-search--hide');\n        } else {\n          self.$searchContainer.addClass('select2-search--hide');\n        }\n      }\n    });\n\n    container.on('results:focus', function (params) {\n      if (params.data._resultId) {\n        self.$search.attr('aria-activedescendant', params.data._resultId);\n      } else {\n        self.$search.removeAttr('aria-activedescendant');\n      }\n    });\n  };\n\n  Search.prototype.handleSearch = function (evt) {\n    if (!this._keyUpPrevented) {\n      var input = this.$search.val();\n\n      this.trigger('query', {\n        term: input\n      });\n    }\n\n    this._keyUpPrevented = false;\n  };\n\n  Search.prototype.showSearch = function (_, params) {\n    return true;\n  };\n\n  return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n  function HidePlaceholder (decorated, $element, options, dataAdapter) {\n    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  HidePlaceholder.prototype.append = function (decorated, data) {\n    data.results = this.removePlaceholder(data.results);\n\n    decorated.call(this, data);\n  };\n\n  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n    if (typeof placeholder === 'string') {\n      placeholder = {\n        id: '',\n        text: placeholder\n      };\n    }\n\n    return placeholder;\n  };\n\n  HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n    var modifiedData = data.slice(0);\n\n    for (var d = data.length - 1; d >= 0; d--) {\n      var item = data[d];\n\n      if (this.placeholder.id === item.id) {\n        modifiedData.splice(d, 1);\n      }\n    }\n\n    return modifiedData;\n  };\n\n  return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n  'jquery'\n], function ($) {\n  function InfiniteScroll (decorated, $element, options, dataAdapter) {\n    this.lastParams = {};\n\n    decorated.call(this, $element, options, dataAdapter);\n\n    this.$loadingMore = this.createLoadingMore();\n    this.loading = false;\n  }\n\n  InfiniteScroll.prototype.append = function (decorated, data) {\n    this.$loadingMore.remove();\n    this.loading = false;\n\n    decorated.call(this, data);\n\n    if (this.showLoadingMore(data)) {\n      this.$results.append(this.$loadingMore);\n      this.loadMoreIfNeeded();\n    }\n  };\n\n  InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('query', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    container.on('query:append', function (params) {\n      self.lastParams = params;\n      self.loading = true;\n    });\n\n    this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n  };\n\n  InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n    var isLoadMoreVisible = $.contains(\n      document.documentElement,\n      this.$loadingMore[0]\n    );\n\n    if (this.loading || !isLoadMoreVisible) {\n      return;\n    }\n\n    var currentOffset = this.$results.offset().top +\n      this.$results.outerHeight(false);\n    var loadingMoreOffset = this.$loadingMore.offset().top +\n      this.$loadingMore.outerHeight(false);\n\n    if (currentOffset + 50 >= loadingMoreOffset) {\n      this.loadMore();\n    }\n  };\n\n  InfiniteScroll.prototype.loadMore = function () {\n    this.loading = true;\n\n    var params = $.extend({}, {page: 1}, this.lastParams);\n\n    params.page++;\n\n    this.trigger('query:append', params);\n  };\n\n  InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n    return data.pagination && data.pagination.more;\n  };\n\n  InfiniteScroll.prototype.createLoadingMore = function () {\n    var $option = $(\n      '<li ' +\n      'class=\"select2-results__option select2-results__option--load-more\"' +\n      'role=\"option\" aria-disabled=\"true\"></li>'\n    );\n\n    var message = this.options.get('translations').get('loadingMore');\n\n    $option.html(message(this.lastParams));\n\n    return $option;\n  };\n\n  return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function AttachBody (decorated, $element, options) {\n    this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n    decorated.call(this, $element, options);\n  }\n\n  AttachBody.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('open', function () {\n      self._showDropdown();\n      self._attachPositioningHandler(container);\n\n      // Must bind after the results handlers to ensure correct sizing\n      self._bindContainerResultHandlers(container);\n    });\n\n    container.on('close', function () {\n      self._hideDropdown();\n      self._detachPositioningHandler(container);\n    });\n\n    this.$dropdownContainer.on('mousedown', function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  AttachBody.prototype.destroy = function (decorated) {\n    decorated.call(this);\n\n    this.$dropdownContainer.remove();\n  };\n\n  AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n    // Clone all of the container classes\n    $dropdown.attr('class', $container.attr('class'));\n\n    $dropdown.removeClass('select2');\n    $dropdown.addClass('select2-container--open');\n\n    $dropdown.css({\n      position: 'absolute',\n      top: -999999\n    });\n\n    this.$container = $container;\n  };\n\n  AttachBody.prototype.render = function (decorated) {\n    var $container = $('<span></span>');\n\n    var $dropdown = decorated.call(this);\n    $container.append($dropdown);\n\n    this.$dropdownContainer = $container;\n\n    return $container;\n  };\n\n  AttachBody.prototype._hideDropdown = function (decorated) {\n    this.$dropdownContainer.detach();\n  };\n\n  AttachBody.prototype._bindContainerResultHandlers =\n      function (decorated, container) {\n\n    // These should only be bound once\n    if (this._containerResultsHandlersBound) {\n      return;\n    }\n\n    var self = this;\n\n    container.on('results:all', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:append', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('results:message', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('select', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    container.on('unselect', function () {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n\n    this._containerResultsHandlersBound = true;\n  };\n\n  AttachBody.prototype._attachPositioningHandler =\n      function (decorated, container) {\n    var self = this;\n\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.each(function () {\n      Utils.StoreData(this, 'select2-scroll-position', {\n        x: $(this).scrollLeft(),\n        y: $(this).scrollTop()\n      });\n    });\n\n    $watchers.on(scrollEvent, function (ev) {\n      var position = Utils.GetData(this, 'select2-scroll-position');\n      $(this).scrollTop(position.y);\n    });\n\n    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n      function (e) {\n      self._positionDropdown();\n      self._resizeDropdown();\n    });\n  };\n\n  AttachBody.prototype._detachPositioningHandler =\n      function (decorated, container) {\n    var scrollEvent = 'scroll.select2.' + container.id;\n    var resizeEvent = 'resize.select2.' + container.id;\n    var orientationEvent = 'orientationchange.select2.' + container.id;\n\n    var $watchers = this.$container.parents().filter(Utils.hasScroll);\n    $watchers.off(scrollEvent);\n\n    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n  };\n\n  AttachBody.prototype._positionDropdown = function () {\n    var $window = $(window);\n\n    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\n    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\n\n    var newDirection = null;\n\n    var offset = this.$container.offset();\n\n    offset.bottom = offset.top + this.$container.outerHeight(false);\n\n    var container = {\n      height: this.$container.outerHeight(false)\n    };\n\n    container.top = offset.top;\n    container.bottom = offset.top + container.height;\n\n    var dropdown = {\n      height: this.$dropdown.outerHeight(false)\n    };\n\n    var viewport = {\n      top: $window.scrollTop(),\n      bottom: $window.scrollTop() + $window.height()\n    };\n\n    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n    var css = {\n      left: offset.left,\n      top: container.bottom\n    };\n\n    // Determine what the parent element is to use for calculating the offset\n    var $offsetParent = this.$dropdownParent;\n\n    // For statically positioned elements, we need to get the element\n    // that is determining the offset\n    if ($offsetParent.css('position') === 'static') {\n      $offsetParent = $offsetParent.offsetParent();\n    }\n\n    var parentOffset = {\n      top: 0,\n      left: 0\n    };\n\n    if (\n      $.contains(document.body, $offsetParent[0]) ||\n      $offsetParent[0].isConnected\n      ) {\n      parentOffset = $offsetParent.offset();\n    }\n\n    css.top -= parentOffset.top;\n    css.left -= parentOffset.left;\n\n    if (!isCurrentlyAbove && !isCurrentlyBelow) {\n      newDirection = 'below';\n    }\n\n    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n      newDirection = 'above';\n    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n      newDirection = 'below';\n    }\n\n    if (newDirection == 'above' ||\n      (isCurrentlyAbove && newDirection !== 'below')) {\n      css.top = container.top - parentOffset.top - dropdown.height;\n    }\n\n    if (newDirection != null) {\n      this.$dropdown\n        .removeClass('select2-dropdown--below select2-dropdown--above')\n        .addClass('select2-dropdown--' + newDirection);\n      this.$container\n        .removeClass('select2-container--below select2-container--above')\n        .addClass('select2-container--' + newDirection);\n    }\n\n    this.$dropdownContainer.css(css);\n  };\n\n  AttachBody.prototype._resizeDropdown = function () {\n    var css = {\n      width: this.$container.outerWidth(false) + 'px'\n    };\n\n    if (this.options.get('dropdownAutoWidth')) {\n      css.minWidth = css.width;\n      css.position = 'relative';\n      css.width = 'auto';\n    }\n\n    this.$dropdown.css(css);\n  };\n\n  AttachBody.prototype._showDropdown = function (decorated) {\n    this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n    this._positionDropdown();\n    this._resizeDropdown();\n  };\n\n  return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n  function countResults (data) {\n    var count = 0;\n\n    for (var d = 0; d < data.length; d++) {\n      var item = data[d];\n\n      if (item.children) {\n        count += countResults(item.children);\n      } else {\n        count++;\n      }\n    }\n\n    return count;\n  }\n\n  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n    this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n    if (this.minimumResultsForSearch < 0) {\n      this.minimumResultsForSearch = Infinity;\n    }\n\n    decorated.call(this, $element, options, dataAdapter);\n  }\n\n  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n    if (countResults(params.data.results) < this.minimumResultsForSearch) {\n      return false;\n    }\n\n    return decorated.call(this, params);\n  };\n\n  return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n  '../utils'\n], function (Utils) {\n  function SelectOnClose () { }\n\n  SelectOnClose.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('close', function (params) {\n      self._handleSelectOnClose(params);\n    });\n  };\n\n  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n    if (params && params.originalSelect2Event != null) {\n      var event = params.originalSelect2Event;\n\n      // Don't select an item if the close event was triggered from a select or\n      // unselect event\n      if (event._type === 'select' || event._type === 'unselect') {\n        return;\n      }\n    }\n\n    var $highlightedResults = this.getHighlightedResults();\n\n    // Only select highlighted results\n    if ($highlightedResults.length < 1) {\n      return;\n    }\n\n    var data = Utils.GetData($highlightedResults[0], 'data');\n\n    // Don't re-select already selected resulte\n    if (\n      (data.element != null && data.element.selected) ||\n      (data.element == null && data.selected)\n    ) {\n      return;\n    }\n\n    this.trigger('select', {\n        data: data\n    });\n  };\n\n  return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n  function CloseOnSelect () { }\n\n  CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n    var self = this;\n\n    decorated.call(this, container, $container);\n\n    container.on('select', function (evt) {\n      self._selectTriggered(evt);\n    });\n\n    container.on('unselect', function (evt) {\n      self._selectTriggered(evt);\n    });\n  };\n\n  CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n    var originalEvent = evt.originalEvent;\n\n    // Don't close if the control key is being held\n    if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n      return;\n    }\n\n    this.trigger('close', {\n      originalEvent: originalEvent,\n      originalSelect2Event: evt\n    });\n  };\n\n  return CloseOnSelect;\n});\n\nS2.define('select2/i18n/en',[],function () {\n  // English\n  return {\n    errorLoading: function () {\n      return 'The results could not be loaded.';\n    },\n    inputTooLong: function (args) {\n      var overChars = args.input.length - args.maximum;\n\n      var message = 'Please delete ' + overChars + ' character';\n\n      if (overChars != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    inputTooShort: function (args) {\n      var remainingChars = args.minimum - args.input.length;\n\n      var message = 'Please enter ' + remainingChars + ' or more characters';\n\n      return message;\n    },\n    loadingMore: function () {\n      return 'Loading more results…';\n    },\n    maximumSelected: function (args) {\n      var message = 'You can only select ' + args.maximum + ' item';\n\n      if (args.maximum != 1) {\n        message += 's';\n      }\n\n      return message;\n    },\n    noResults: function () {\n      return 'No results found';\n    },\n    searching: function () {\n      return 'Searching…';\n    },\n    removeAllItems: function () {\n      return 'Remove all items';\n    }\n  };\n});\n\nS2.define('select2/defaults',[\n  'jquery',\n  'require',\n\n  './results',\n\n  './selection/single',\n  './selection/multiple',\n  './selection/placeholder',\n  './selection/allowClear',\n  './selection/search',\n  './selection/eventRelay',\n\n  './utils',\n  './translation',\n  './diacritics',\n\n  './data/select',\n  './data/array',\n  './data/ajax',\n  './data/tags',\n  './data/tokenizer',\n  './data/minimumInputLength',\n  './data/maximumInputLength',\n  './data/maximumSelectionLength',\n\n  './dropdown',\n  './dropdown/search',\n  './dropdown/hidePlaceholder',\n  './dropdown/infiniteScroll',\n  './dropdown/attachBody',\n  './dropdown/minimumResultsForSearch',\n  './dropdown/selectOnClose',\n  './dropdown/closeOnSelect',\n\n  './i18n/en'\n], function ($, require,\n\n             ResultsList,\n\n             SingleSelection, MultipleSelection, Placeholder, AllowClear,\n             SelectionSearch, EventRelay,\n\n             Utils, Translation, DIACRITICS,\n\n             SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n\n             EnglishTranslation) {\n  function Defaults () {\n    this.reset();\n  }\n\n  Defaults.prototype.apply = function (options) {\n    options = $.extend(true, {}, this.defaults, options);\n\n    if (options.dataAdapter == null) {\n      if (options.ajax != null) {\n        options.dataAdapter = AjaxData;\n      } else if (options.data != null) {\n        options.dataAdapter = ArrayData;\n      } else {\n        options.dataAdapter = SelectData;\n      }\n\n      if (options.minimumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MinimumInputLength\n        );\n      }\n\n      if (options.maximumInputLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumInputLength\n        );\n      }\n\n      if (options.maximumSelectionLength > 0) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          MaximumSelectionLength\n        );\n      }\n\n      if (options.tags) {\n        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n      }\n\n      if (options.tokenSeparators != null || options.tokenizer != null) {\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Tokenizer\n        );\n      }\n\n      if (options.query != null) {\n        var Query = require(options.amdBase + 'compat/query');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          Query\n        );\n      }\n\n      if (options.initSelection != null) {\n        var InitSelection = require(options.amdBase + 'compat/initSelection');\n\n        options.dataAdapter = Utils.Decorate(\n          options.dataAdapter,\n          InitSelection\n        );\n      }\n    }\n\n    if (options.resultsAdapter == null) {\n      options.resultsAdapter = ResultsList;\n\n      if (options.ajax != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          InfiniteScroll\n        );\n      }\n\n      if (options.placeholder != null) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          HidePlaceholder\n        );\n      }\n\n      if (options.selectOnClose) {\n        options.resultsAdapter = Utils.Decorate(\n          options.resultsAdapter,\n          SelectOnClose\n        );\n      }\n    }\n\n    if (options.dropdownAdapter == null) {\n      if (options.multiple) {\n        options.dropdownAdapter = Dropdown;\n      } else {\n        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n        options.dropdownAdapter = SearchableDropdown;\n      }\n\n      if (options.minimumResultsForSearch !== 0) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          MinimumResultsForSearch\n        );\n      }\n\n      if (options.closeOnSelect) {\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          CloseOnSelect\n        );\n      }\n\n      if (\n        options.dropdownCssClass != null ||\n        options.dropdownCss != null ||\n        options.adaptDropdownCssClass != null\n      ) {\n        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\n\n        options.dropdownAdapter = Utils.Decorate(\n          options.dropdownAdapter,\n          DropdownCSS\n        );\n      }\n\n      options.dropdownAdapter = Utils.Decorate(\n        options.dropdownAdapter,\n        AttachBody\n      );\n    }\n\n    if (options.selectionAdapter == null) {\n      if (options.multiple) {\n        options.selectionAdapter = MultipleSelection;\n      } else {\n        options.selectionAdapter = SingleSelection;\n      }\n\n      // Add the placeholder mixin if a placeholder was specified\n      if (options.placeholder != null) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          Placeholder\n        );\n      }\n\n      if (options.allowClear) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          AllowClear\n        );\n      }\n\n      if (options.multiple) {\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          SelectionSearch\n        );\n      }\n\n      if (\n        options.containerCssClass != null ||\n        options.containerCss != null ||\n        options.adaptContainerCssClass != null\n      ) {\n        var ContainerCSS = require(options.amdBase + 'compat/containerCss');\n\n        options.selectionAdapter = Utils.Decorate(\n          options.selectionAdapter,\n          ContainerCSS\n        );\n      }\n\n      options.selectionAdapter = Utils.Decorate(\n        options.selectionAdapter,\n        EventRelay\n      );\n    }\n\n    // If the defaults were not previously applied from an element, it is\n    // possible for the language option to have not been resolved\n    options.language = this._resolveLanguage(options.language);\n\n    // Always fall back to English since it will always be complete\n    options.language.push('en');\n\n    var uniqueLanguages = [];\n\n    for (var l = 0; l < options.language.length; l++) {\n      var language = options.language[l];\n\n      if (uniqueLanguages.indexOf(language) === -1) {\n        uniqueLanguages.push(language);\n      }\n    }\n\n    options.language = uniqueLanguages;\n\n    options.translations = this._processTranslations(\n      options.language,\n      options.debug\n    );\n\n    return options;\n  };\n\n  Defaults.prototype.reset = function () {\n    function stripDiacritics (text) {\n      // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n      function match(a) {\n        return DIACRITICS[a] || a;\n      }\n\n      return text.replace(/[^\\u0000-\\u007E]/g, match);\n    }\n\n    function matcher (params, data) {\n      // Always return the object if there is nothing to compare\n      if ($.trim(params.term) === '') {\n        return data;\n      }\n\n      // Do a recursive check for options with children\n      if (data.children && data.children.length > 0) {\n        // Clone the data object if there are children\n        // This is required as we modify the object to remove any non-matches\n        var match = $.extend(true, {}, data);\n\n        // Check each child of the option\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          var matches = matcher(params, child);\n\n          // If there wasn't a match, remove the object in the array\n          if (matches == null) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        // If any children matched, return the new object\n        if (match.children.length > 0) {\n          return match;\n        }\n\n        // If there were no matching children, check just the plain object\n        return matcher(params, match);\n      }\n\n      var original = stripDiacritics(data.text).toUpperCase();\n      var term = stripDiacritics(params.term).toUpperCase();\n\n      // Check if the text contains the term\n      if (original.indexOf(term) > -1) {\n        return data;\n      }\n\n      // If it doesn't contain the term, don't return anything\n      return null;\n    }\n\n    this.defaults = {\n      amdBase: './',\n      amdLanguageBase: './i18n/',\n      closeOnSelect: true,\n      debug: false,\n      dropdownAutoWidth: false,\n      escapeMarkup: Utils.escapeMarkup,\n      language: {},\n      matcher: matcher,\n      minimumInputLength: 0,\n      maximumInputLength: 0,\n      maximumSelectionLength: 0,\n      minimumResultsForSearch: 0,\n      selectOnClose: false,\n      scrollAfterSelect: false,\n      sorter: function (data) {\n        return data;\n      },\n      templateResult: function (result) {\n        return result.text;\n      },\n      templateSelection: function (selection) {\n        return selection.text;\n      },\n      theme: 'default',\n      width: 'resolve'\n    };\n  };\n\n  Defaults.prototype.applyFromElement = function (options, $element) {\n    var optionLanguage = options.language;\n    var defaultLanguage = this.defaults.language;\n    var elementLanguage = $element.prop('lang');\n    var parentLanguage = $element.closest('[lang]').prop('lang');\n\n    var languages = Array.prototype.concat.call(\n      this._resolveLanguage(elementLanguage),\n      this._resolveLanguage(optionLanguage),\n      this._resolveLanguage(defaultLanguage),\n      this._resolveLanguage(parentLanguage)\n    );\n\n    options.language = languages;\n\n    return options;\n  };\n\n  Defaults.prototype._resolveLanguage = function (language) {\n    if (!language) {\n      return [];\n    }\n\n    if ($.isEmptyObject(language)) {\n      return [];\n    }\n\n    if ($.isPlainObject(language)) {\n      return [language];\n    }\n\n    var languages;\n\n    if (!$.isArray(language)) {\n      languages = [language];\n    } else {\n      languages = language;\n    }\n\n    var resolvedLanguages = [];\n\n    for (var l = 0; l < languages.length; l++) {\n      resolvedLanguages.push(languages[l]);\n\n      if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n        // Extract the region information if it is included\n        var languageParts = languages[l].split('-');\n        var baseLanguage = languageParts[0];\n\n        resolvedLanguages.push(baseLanguage);\n      }\n    }\n\n    return resolvedLanguages;\n  };\n\n  Defaults.prototype._processTranslations = function (languages, debug) {\n    var translations = new Translation();\n\n    for (var l = 0; l < languages.length; l++) {\n      var languageData = new Translation();\n\n      var language = languages[l];\n\n      if (typeof language === 'string') {\n        try {\n          // Try to load it with the original name\n          languageData = Translation.loadPath(language);\n        } catch (e) {\n          try {\n            // If we couldn't load it, check if it wasn't the full path\n            language = this.defaults.amdLanguageBase + language;\n            languageData = Translation.loadPath(language);\n          } catch (ex) {\n            // The translation could not be loaded at all. Sometimes this is\n            // because of a configuration problem, other times this can be\n            // because of how Select2 helps load all possible translation files\n            if (debug && window.console && console.warn) {\n              console.warn(\n                'Select2: The language file for \"' + language + '\" could ' +\n                'not be automatically loaded. A fallback will be used instead.'\n              );\n            }\n          }\n        }\n      } else if ($.isPlainObject(language)) {\n        languageData = new Translation(language);\n      } else {\n        languageData = language;\n      }\n\n      translations.extend(languageData);\n    }\n\n    return translations;\n  };\n\n  Defaults.prototype.set = function (key, value) {\n    var camelKey = $.camelCase(key);\n\n    var data = {};\n    data[camelKey] = value;\n\n    var convertedData = Utils._convertData(data);\n\n    $.extend(true, this.defaults, convertedData);\n  };\n\n  var defaults = new Defaults();\n\n  return defaults;\n});\n\nS2.define('select2/options',[\n  'require',\n  'jquery',\n  './defaults',\n  './utils'\n], function (require, $, Defaults, Utils) {\n  function Options (options, $element) {\n    this.options = options;\n\n    if ($element != null) {\n      this.fromElement($element);\n    }\n\n    if ($element != null) {\n      this.options = Defaults.applyFromElement(this.options, $element);\n    }\n\n    this.options = Defaults.apply(this.options);\n\n    if ($element && $element.is('input')) {\n      var InputCompat = require(this.get('amdBase') + 'compat/inputData');\n\n      this.options.dataAdapter = Utils.Decorate(\n        this.options.dataAdapter,\n        InputCompat\n      );\n    }\n  }\n\n  Options.prototype.fromElement = function ($e) {\n    var excludedData = ['select2'];\n\n    if (this.options.multiple == null) {\n      this.options.multiple = $e.prop('multiple');\n    }\n\n    if (this.options.disabled == null) {\n      this.options.disabled = $e.prop('disabled');\n    }\n\n    if (this.options.dir == null) {\n      if ($e.prop('dir')) {\n        this.options.dir = $e.prop('dir');\n      } else if ($e.closest('[dir]').prop('dir')) {\n        this.options.dir = $e.closest('[dir]').prop('dir');\n      } else {\n        this.options.dir = 'ltr';\n      }\n    }\n\n    $e.prop('disabled', this.options.disabled);\n    $e.prop('multiple', this.options.multiple);\n\n    if (Utils.GetData($e[0], 'select2Tags')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-select2-tags` attribute has been changed to ' +\n          'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n          'removed in future versions of Select2.'\n        );\n      }\n\n      Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n      Utils.StoreData($e[0], 'tags', true);\n    }\n\n    if (Utils.GetData($e[0], 'ajaxUrl')) {\n      if (this.options.debug && window.console && console.warn) {\n        console.warn(\n          'Select2: The `data-ajax-url` attribute has been changed to ' +\n          '`data-ajax--url` and support for the old attribute will be removed' +\n          ' in future versions of Select2.'\n        );\n      }\n\n      $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n      Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n    }\n\n    var dataset = {};\n\n    function upperCaseLetter(_, letter) {\n      return letter.toUpperCase();\n    }\n\n    // Pre-load all of the attributes which are prefixed with `data-`\n    for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n      var attributeName = $e[0].attributes[attr].name;\n      var prefix = 'data-';\n\n      if (attributeName.substr(0, prefix.length) == prefix) {\n        // Get the contents of the attribute after `data-`\n        var dataName = attributeName.substring(prefix.length);\n\n        // Get the data contents from the consistent source\n        // This is more than likely the jQuery data helper\n        var dataValue = Utils.GetData($e[0], dataName);\n\n        // camelCase the attribute name to match the spec\n        var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n        // Store the data attribute contents into the dataset since\n        dataset[camelDataName] = dataValue;\n      }\n    }\n\n    // Prefer the element's `dataset` attribute if it exists\n    // jQuery 1.x does not correctly handle data attributes with multiple dashes\n    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n      dataset = $.extend(true, {}, $e[0].dataset, dataset);\n    }\n\n    // Prefer our internal data cache if it exists\n    var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n    data = Utils._convertData(data);\n\n    for (var key in data) {\n      if ($.inArray(key, excludedData) > -1) {\n        continue;\n      }\n\n      if ($.isPlainObject(this.options[key])) {\n        $.extend(this.options[key], data[key]);\n      } else {\n        this.options[key] = data[key];\n      }\n    }\n\n    return this;\n  };\n\n  Options.prototype.get = function (key) {\n    return this.options[key];\n  };\n\n  Options.prototype.set = function (key, val) {\n    this.options[key] = val;\n  };\n\n  return Options;\n});\n\nS2.define('select2/core',[\n  'jquery',\n  './options',\n  './utils',\n  './keys'\n], function ($, Options, Utils, KEYS) {\n  var Select2 = function ($element, options) {\n    if (Utils.GetData($element[0], 'select2') != null) {\n      Utils.GetData($element[0], 'select2').destroy();\n    }\n\n    this.$element = $element;\n\n    this.id = this._generateId($element);\n\n    options = options || {};\n\n    this.options = new Options(options, $element);\n\n    Select2.__super__.constructor.call(this);\n\n    // Set up the tabindex\n\n    var tabindex = $element.attr('tabindex') || 0;\n    Utils.StoreData($element[0], 'old-tabindex', tabindex);\n    $element.attr('tabindex', '-1');\n\n    // Set up containers and adapters\n\n    var DataAdapter = this.options.get('dataAdapter');\n    this.dataAdapter = new DataAdapter($element, this.options);\n\n    var $container = this.render();\n\n    this._placeContainer($container);\n\n    var SelectionAdapter = this.options.get('selectionAdapter');\n    this.selection = new SelectionAdapter($element, this.options);\n    this.$selection = this.selection.render();\n\n    this.selection.position(this.$selection, $container);\n\n    var DropdownAdapter = this.options.get('dropdownAdapter');\n    this.dropdown = new DropdownAdapter($element, this.options);\n    this.$dropdown = this.dropdown.render();\n\n    this.dropdown.position(this.$dropdown, $container);\n\n    var ResultsAdapter = this.options.get('resultsAdapter');\n    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n    this.$results = this.results.render();\n\n    this.results.position(this.$results, this.$dropdown);\n\n    // Bind events\n\n    var self = this;\n\n    // Bind the container to all of the adapters\n    this._bindAdapters();\n\n    // Register any DOM event handlers\n    this._registerDomEvents();\n\n    // Register any internal event handlers\n    this._registerDataEvents();\n    this._registerSelectionEvents();\n    this._registerDropdownEvents();\n    this._registerResultsEvents();\n    this._registerEvents();\n\n    // Set the initial state\n    this.dataAdapter.current(function (initialData) {\n      self.trigger('selection:update', {\n        data: initialData\n      });\n    });\n\n    // Hide the original select\n    $element.addClass('select2-hidden-accessible');\n    $element.attr('aria-hidden', 'true');\n\n    // Synchronize any monitored attributes\n    this._syncAttributes();\n\n    Utils.StoreData($element[0], 'select2', this);\n\n    // Ensure backwards compatibility with $element.data('select2').\n    $element.data('select2', this);\n  };\n\n  Utils.Extend(Select2, Utils.Observable);\n\n  Select2.prototype._generateId = function ($element) {\n    var id = '';\n\n    if ($element.attr('id') != null) {\n      id = $element.attr('id');\n    } else if ($element.attr('name') != null) {\n      id = $element.attr('name') + '-' + Utils.generateChars(2);\n    } else {\n      id = Utils.generateChars(4);\n    }\n\n    id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n    id = 'select2-' + id;\n\n    return id;\n  };\n\n  Select2.prototype._placeContainer = function ($container) {\n    $container.insertAfter(this.$element);\n\n    var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n    if (width != null) {\n      $container.css('width', width);\n    }\n  };\n\n  Select2.prototype._resolveWidth = function ($element, method) {\n    var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n    if (method == 'resolve') {\n      var styleWidth = this._resolveWidth($element, 'style');\n\n      if (styleWidth != null) {\n        return styleWidth;\n      }\n\n      return this._resolveWidth($element, 'element');\n    }\n\n    if (method == 'element') {\n      var elementWidth = $element.outerWidth(false);\n\n      if (elementWidth <= 0) {\n        return 'auto';\n      }\n\n      return elementWidth + 'px';\n    }\n\n    if (method == 'style') {\n      var style = $element.attr('style');\n\n      if (typeof(style) !== 'string') {\n        return null;\n      }\n\n      var attrs = style.split(';');\n\n      for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n        var attr = attrs[i].replace(/\\s/g, '');\n        var matches = attr.match(WIDTH);\n\n        if (matches !== null && matches.length >= 1) {\n          return matches[1];\n        }\n      }\n\n      return null;\n    }\n\n    if (method == 'computedstyle') {\n      var computedStyle = window.getComputedStyle($element[0]);\n\n      return computedStyle.width;\n    }\n\n    return method;\n  };\n\n  Select2.prototype._bindAdapters = function () {\n    this.dataAdapter.bind(this, this.$container);\n    this.selection.bind(this, this.$container);\n\n    this.dropdown.bind(this, this.$container);\n    this.results.bind(this, this.$container);\n  };\n\n  Select2.prototype._registerDomEvents = function () {\n    var self = this;\n\n    this.$element.on('change.select2', function () {\n      self.dataAdapter.current(function (data) {\n        self.trigger('selection:update', {\n          data: data\n        });\n      });\n    });\n\n    this.$element.on('focus.select2', function (evt) {\n      self.trigger('focus', evt);\n    });\n\n    this._syncA = Utils.bind(this._syncAttributes, this);\n    this._syncS = Utils.bind(this._syncSubtree, this);\n\n    if (this.$element[0].attachEvent) {\n      this.$element[0].attachEvent('onpropertychange', this._syncA);\n    }\n\n    var observer = window.MutationObserver ||\n      window.WebKitMutationObserver ||\n      window.MozMutationObserver\n    ;\n\n    if (observer != null) {\n      this._observer = new observer(function (mutations) {\n        self._syncA();\n        self._syncS(null, mutations);\n      });\n      this._observer.observe(this.$element[0], {\n        attributes: true,\n        childList: true,\n        subtree: false\n      });\n    } else if (this.$element[0].addEventListener) {\n      this.$element[0].addEventListener(\n        'DOMAttrModified',\n        self._syncA,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeInserted',\n        self._syncS,\n        false\n      );\n      this.$element[0].addEventListener(\n        'DOMNodeRemoved',\n        self._syncS,\n        false\n      );\n    }\n  };\n\n  Select2.prototype._registerDataEvents = function () {\n    var self = this;\n\n    this.dataAdapter.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerSelectionEvents = function () {\n    var self = this;\n    var nonRelayEvents = ['toggle', 'focus'];\n\n    this.selection.on('toggle', function () {\n      self.toggleDropdown();\n    });\n\n    this.selection.on('focus', function (params) {\n      self.focus(params);\n    });\n\n    this.selection.on('*', function (name, params) {\n      if ($.inArray(name, nonRelayEvents) !== -1) {\n        return;\n      }\n\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerDropdownEvents = function () {\n    var self = this;\n\n    this.dropdown.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerResultsEvents = function () {\n    var self = this;\n\n    this.results.on('*', function (name, params) {\n      self.trigger(name, params);\n    });\n  };\n\n  Select2.prototype._registerEvents = function () {\n    var self = this;\n\n    this.on('open', function () {\n      self.$container.addClass('select2-container--open');\n    });\n\n    this.on('close', function () {\n      self.$container.removeClass('select2-container--open');\n    });\n\n    this.on('enable', function () {\n      self.$container.removeClass('select2-container--disabled');\n    });\n\n    this.on('disable', function () {\n      self.$container.addClass('select2-container--disabled');\n    });\n\n    this.on('blur', function () {\n      self.$container.removeClass('select2-container--focus');\n    });\n\n    this.on('query', function (params) {\n      if (!self.isOpen()) {\n        self.trigger('open', {});\n      }\n\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:all', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('query:append', function (params) {\n      this.dataAdapter.query(params, function (data) {\n        self.trigger('results:append', {\n          data: data,\n          query: params\n        });\n      });\n    });\n\n    this.on('keypress', function (evt) {\n      var key = evt.which;\n\n      if (self.isOpen()) {\n        if (key === KEYS.ESC || key === KEYS.TAB ||\n            (key === KEYS.UP && evt.altKey)) {\n          self.close(evt);\n\n          evt.preventDefault();\n        } else if (key === KEYS.ENTER) {\n          self.trigger('results:select', {});\n\n          evt.preventDefault();\n        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n          self.trigger('results:toggle', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.UP) {\n          self.trigger('results:previous', {});\n\n          evt.preventDefault();\n        } else if (key === KEYS.DOWN) {\n          self.trigger('results:next', {});\n\n          evt.preventDefault();\n        }\n      } else {\n        if (key === KEYS.ENTER || key === KEYS.SPACE ||\n            (key === KEYS.DOWN && evt.altKey)) {\n          self.open();\n\n          evt.preventDefault();\n        }\n      }\n    });\n  };\n\n  Select2.prototype._syncAttributes = function () {\n    this.options.set('disabled', this.$element.prop('disabled'));\n\n    if (this.isDisabled()) {\n      if (this.isOpen()) {\n        this.close();\n      }\n\n      this.trigger('disable', {});\n    } else {\n      this.trigger('enable', {});\n    }\n  };\n\n  Select2.prototype._isChangeMutation = function (evt, mutations) {\n    var changed = false;\n    var self = this;\n\n    // Ignore any mutation events raised for elements that aren't options or\n    // optgroups. This handles the case when the select element is destroyed\n    if (\n      evt && evt.target && (\n        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'\n      )\n    ) {\n      return;\n    }\n\n    if (!mutations) {\n      // If mutation events aren't supported, then we can only assume that the\n      // change affected the selections\n      changed = true;\n    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n      for (var n = 0; n < mutations.addedNodes.length; n++) {\n        var node = mutations.addedNodes[n];\n\n        if (node.selected) {\n          changed = true;\n        }\n      }\n    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n      changed = true;\n    } else if ($.isArray(mutations)) {\n      $.each(mutations, function(evt, mutation) {\n        if (self._isChangeMutation(evt, mutation)) {\n          // We've found a change mutation.\n          // Let's escape from the loop and continue\n          changed = true;\n          return false;\n        }\n      });\n    }\n    return changed;\n  };\n\n  Select2.prototype._syncSubtree = function (evt, mutations) {\n    var changed = this._isChangeMutation(evt, mutations);\n    var self = this;\n\n    // Only re-pull the data if we think there is a change\n    if (changed) {\n      this.dataAdapter.current(function (currentData) {\n        self.trigger('selection:update', {\n          data: currentData\n        });\n      });\n    }\n  };\n\n  /**\n   * Override the trigger method to automatically trigger pre-events when\n   * there are events that can be prevented.\n   */\n  Select2.prototype.trigger = function (name, args) {\n    var actualTrigger = Select2.__super__.trigger;\n    var preTriggerMap = {\n      'open': 'opening',\n      'close': 'closing',\n      'select': 'selecting',\n      'unselect': 'unselecting',\n      'clear': 'clearing'\n    };\n\n    if (args === undefined) {\n      args = {};\n    }\n\n    if (name in preTriggerMap) {\n      var preTriggerName = preTriggerMap[name];\n      var preTriggerArgs = {\n        prevented: false,\n        name: name,\n        args: args\n      };\n\n      actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n      if (preTriggerArgs.prevented) {\n        args.prevented = true;\n\n        return;\n      }\n    }\n\n    actualTrigger.call(this, name, args);\n  };\n\n  Select2.prototype.toggleDropdown = function () {\n    if (this.isDisabled()) {\n      return;\n    }\n\n    if (this.isOpen()) {\n      this.close();\n    } else {\n      this.open();\n    }\n  };\n\n  Select2.prototype.open = function () {\n    if (this.isOpen()) {\n      return;\n    }\n\n    if (this.isDisabled()) {\n      return;\n    }\n\n    this.trigger('query', {});\n  };\n\n  Select2.prototype.close = function (evt) {\n    if (!this.isOpen()) {\n      return;\n    }\n\n    this.trigger('close', { originalEvent : evt });\n  };\n\n  /**\n   * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n   * object.\n   *\n   * @return {true} if the instance is not disabled.\n   * @return {false} if the instance is disabled.\n   */\n  Select2.prototype.isEnabled = function () {\n    return !this.isDisabled();\n  };\n\n  /**\n   * Helper method to abstract the \"disabled\" state of this object.\n   *\n   * @return {true} if the disabled option is true.\n   * @return {false} if the disabled option is false.\n   */\n  Select2.prototype.isDisabled = function () {\n    return this.options.get('disabled');\n  };\n\n  Select2.prototype.isOpen = function () {\n    return this.$container.hasClass('select2-container--open');\n  };\n\n  Select2.prototype.hasFocus = function () {\n    return this.$container.hasClass('select2-container--focus');\n  };\n\n  Select2.prototype.focus = function (data) {\n    // No need to re-trigger focus events if we are already focused\n    if (this.hasFocus()) {\n      return;\n    }\n\n    this.$container.addClass('select2-container--focus');\n    this.trigger('focus', {});\n  };\n\n  Select2.prototype.enable = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n        ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n        ' instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      args = [true];\n    }\n\n    var disabled = !args[0];\n\n    this.$element.prop('disabled', disabled);\n  };\n\n  Select2.prototype.data = function () {\n    if (this.options.get('debug') &&\n        arguments.length > 0 && window.console && console.warn) {\n      console.warn(\n        'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n        'should consider setting the value instead using `$element.val()`.'\n      );\n    }\n\n    var data = [];\n\n    this.dataAdapter.current(function (currentData) {\n      data = currentData;\n    });\n\n    return data;\n  };\n\n  Select2.prototype.val = function (args) {\n    if (this.options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n        ' removed in later Select2 versions. Use $element.val() instead.'\n      );\n    }\n\n    if (args == null || args.length === 0) {\n      return this.$element.val();\n    }\n\n    var newVal = args[0];\n\n    if ($.isArray(newVal)) {\n      newVal = $.map(newVal, function (obj) {\n        return obj.toString();\n      });\n    }\n\n    this.$element.val(newVal).trigger('input').trigger('change');\n  };\n\n  Select2.prototype.destroy = function () {\n    this.$container.remove();\n\n    if (this.$element[0].detachEvent) {\n      this.$element[0].detachEvent('onpropertychange', this._syncA);\n    }\n\n    if (this._observer != null) {\n      this._observer.disconnect();\n      this._observer = null;\n    } else if (this.$element[0].removeEventListener) {\n      this.$element[0]\n        .removeEventListener('DOMAttrModified', this._syncA, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeInserted', this._syncS, false);\n      this.$element[0]\n        .removeEventListener('DOMNodeRemoved', this._syncS, false);\n    }\n\n    this._syncA = null;\n    this._syncS = null;\n\n    this.$element.off('.select2');\n    this.$element.attr('tabindex',\n    Utils.GetData(this.$element[0], 'old-tabindex'));\n\n    this.$element.removeClass('select2-hidden-accessible');\n    this.$element.attr('aria-hidden', 'false');\n    Utils.RemoveData(this.$element[0]);\n    this.$element.removeData('select2');\n\n    this.dataAdapter.destroy();\n    this.selection.destroy();\n    this.dropdown.destroy();\n    this.results.destroy();\n\n    this.dataAdapter = null;\n    this.selection = null;\n    this.dropdown = null;\n    this.results = null;\n  };\n\n  Select2.prototype.render = function () {\n    var $container = $(\n      '<span class=\"select2 select2-container\">' +\n        '<span class=\"selection\"></span>' +\n        '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n      '</span>'\n    );\n\n    $container.attr('dir', this.options.get('dir'));\n\n    this.$container = $container;\n\n    this.$container.addClass('select2-container--' + this.options.get('theme'));\n\n    Utils.StoreData($container[0], 'element', this.$element);\n\n    return $container;\n  };\n\n  return Select2;\n});\n\nS2.define('select2/compat/utils',[\n  'jquery'\n], function ($) {\n  function syncCssClasses ($dest, $src, adapter) {\n    var classes, replacements = [], adapted;\n\n    classes = $.trim($dest.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Save all Select2 classes\n        if (this.indexOf('select2-') === 0) {\n          replacements.push(this);\n        }\n      });\n    }\n\n    classes = $.trim($src.attr('class'));\n\n    if (classes) {\n      classes = '' + classes; // for IE which returns object\n\n      $(classes.split(/\\s+/)).each(function () {\n        // Only adapt non-Select2 classes\n        if (this.indexOf('select2-') !== 0) {\n          adapted = adapter(this);\n\n          if (adapted != null) {\n            replacements.push(adapted);\n          }\n        }\n      });\n    }\n\n    $dest.attr('class', replacements.join(' '));\n  }\n\n  return {\n    syncCssClasses: syncCssClasses\n  };\n});\n\nS2.define('select2/compat/containerCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _containerAdapter (clazz) {\n    return null;\n  }\n\n  function ContainerCSS () { }\n\n  ContainerCSS.prototype.render = function (decorated) {\n    var $container = decorated.call(this);\n\n    var containerCssClass = this.options.get('containerCssClass') || '';\n\n    if ($.isFunction(containerCssClass)) {\n      containerCssClass = containerCssClass(this.$element);\n    }\n\n    var containerCssAdapter = this.options.get('adaptContainerCssClass');\n    containerCssAdapter = containerCssAdapter || _containerAdapter;\n\n    if (containerCssClass.indexOf(':all:') !== -1) {\n      containerCssClass = containerCssClass.replace(':all:', '');\n\n      var _cssAdapter = containerCssAdapter;\n\n      containerCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var containerCss = this.options.get('containerCss') || {};\n\n    if ($.isFunction(containerCss)) {\n      containerCss = containerCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);\n\n    $container.css(containerCss);\n    $container.addClass(containerCssClass);\n\n    return $container;\n  };\n\n  return ContainerCSS;\n});\n\nS2.define('select2/compat/dropdownCss',[\n  'jquery',\n  './utils'\n], function ($, CompatUtils) {\n  // No-op CSS adapter that discards all classes by default\n  function _dropdownAdapter (clazz) {\n    return null;\n  }\n\n  function DropdownCSS () { }\n\n  DropdownCSS.prototype.render = function (decorated) {\n    var $dropdown = decorated.call(this);\n\n    var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n    if ($.isFunction(dropdownCssClass)) {\n      dropdownCssClass = dropdownCssClass(this.$element);\n    }\n\n    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');\n    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;\n\n    if (dropdownCssClass.indexOf(':all:') !== -1) {\n      dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n      var _cssAdapter = dropdownCssAdapter;\n\n      dropdownCssAdapter = function (clazz) {\n        var adapted = _cssAdapter(clazz);\n\n        if (adapted != null) {\n          // Append the old one along with the adapted one\n          return adapted + ' ' + clazz;\n        }\n\n        return clazz;\n      };\n    }\n\n    var dropdownCss = this.options.get('dropdownCss') || {};\n\n    if ($.isFunction(dropdownCss)) {\n      dropdownCss = dropdownCss(this.$element);\n    }\n\n    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);\n\n    $dropdown.css(dropdownCss);\n    $dropdown.addClass(dropdownCssClass);\n\n    return $dropdown;\n  };\n\n  return DropdownCSS;\n});\n\nS2.define('select2/compat/initSelection',[\n  'jquery'\n], function ($) {\n  function InitSelection (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `initSelection` option has been deprecated in favor' +\n        ' of a custom data adapter that overrides the `current` method. ' +\n        'This method is now called multiple times instead of a single ' +\n        'time when the instance is initialized. Support will be removed ' +\n        'for the `initSelection` option in future versions of Select2'\n      );\n    }\n\n    this.initSelection = options.get('initSelection');\n    this._isInitialized = false;\n\n    decorated.call(this, $element, options);\n  }\n\n  InitSelection.prototype.current = function (decorated, callback) {\n    var self = this;\n\n    if (this._isInitialized) {\n      decorated.call(this, callback);\n\n      return;\n    }\n\n    this.initSelection.call(null, this.$element, function (data) {\n      self._isInitialized = true;\n\n      if (!$.isArray(data)) {\n        data = [data];\n      }\n\n      callback(data);\n    });\n  };\n\n  return InitSelection;\n});\n\nS2.define('select2/compat/inputData',[\n  'jquery',\n  '../utils'\n], function ($, Utils) {\n  function InputData (decorated, $element, options) {\n    this._currentData = [];\n    this._valueSeparator = options.get('valueSeparator') || ',';\n\n    if ($element.prop('type') === 'hidden') {\n      if (options.get('debug') && console && console.warn) {\n        console.warn(\n          'Select2: Using a hidden input with Select2 is no longer ' +\n          'supported and may stop working in the future. It is recommended ' +\n          'to use a `<select>` element instead.'\n        );\n      }\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  InputData.prototype.current = function (_, callback) {\n    function getSelected (data, selectedIds) {\n      var selected = [];\n\n      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {\n        data.selected = true;\n        selected.push(data);\n      } else {\n        data.selected = false;\n      }\n\n      if (data.children) {\n        selected.push.apply(selected, getSelected(data.children, selectedIds));\n      }\n\n      return selected;\n    }\n\n    var selected = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      selected.push.apply(\n        selected,\n        getSelected(\n          data,\n          this.$element.val().split(\n            this._valueSeparator\n          )\n        )\n      );\n    }\n\n    callback(selected);\n  };\n\n  InputData.prototype.select = function (_, data) {\n    if (!this.options.get('multiple')) {\n      this.current(function (allData) {\n        $.map(allData, function (data) {\n          data.selected = false;\n        });\n      });\n\n      this.$element.val(data.id);\n      this.$element.trigger('input').trigger('change');\n    } else {\n      var value = this.$element.val();\n      value += this._valueSeparator + data.id;\n\n      this.$element.val(value);\n      this.$element.trigger('input').trigger('change');\n    }\n  };\n\n  InputData.prototype.unselect = function (_, data) {\n    var self = this;\n\n    data.selected = false;\n\n    this.current(function (allData) {\n      var values = [];\n\n      for (var d = 0; d < allData.length; d++) {\n        var item = allData[d];\n\n        if (data.id == item.id) {\n          continue;\n        }\n\n        values.push(item.id);\n      }\n\n      self.$element.val(values.join(self._valueSeparator));\n      self.$element.trigger('input').trigger('change');\n    });\n  };\n\n  InputData.prototype.query = function (_, params, callback) {\n    var results = [];\n\n    for (var d = 0; d < this._currentData.length; d++) {\n      var data = this._currentData[d];\n\n      var matches = this.matches(params, data);\n\n      if (matches !== null) {\n        results.push(matches);\n      }\n    }\n\n    callback({\n      results: results\n    });\n  };\n\n  InputData.prototype.addOptions = function (_, $options) {\n    var options = $.map($options, function ($option) {\n      return Utils.GetData($option[0], 'data');\n    });\n\n    this._currentData.push.apply(this._currentData, options);\n  };\n\n  return InputData;\n});\n\nS2.define('select2/compat/matcher',[\n  'jquery'\n], function ($) {\n  function oldMatcher (matcher) {\n    function wrappedMatcher (params, data) {\n      var match = $.extend(true, {}, data);\n\n      if (params.term == null || $.trim(params.term) === '') {\n        return match;\n      }\n\n      if (data.children) {\n        for (var c = data.children.length - 1; c >= 0; c--) {\n          var child = data.children[c];\n\n          // Check if the child object matches\n          // The old matcher returned a boolean true or false\n          var doesMatch = matcher(params.term, child.text, child);\n\n          // If the child didn't match, pop it off\n          if (!doesMatch) {\n            match.children.splice(c, 1);\n          }\n        }\n\n        if (match.children.length > 0) {\n          return match;\n        }\n      }\n\n      if (matcher(params.term, data.text, data)) {\n        return match;\n      }\n\n      return null;\n    }\n\n    return wrappedMatcher;\n  }\n\n  return oldMatcher;\n});\n\nS2.define('select2/compat/query',[\n\n], function () {\n  function Query (decorated, $element, options) {\n    if (options.get('debug') && window.console && console.warn) {\n      console.warn(\n        'Select2: The `query` option has been deprecated in favor of a ' +\n        'custom data adapter that overrides the `query` method. Support ' +\n        'will be removed for the `query` option in future versions of ' +\n        'Select2.'\n      );\n    }\n\n    decorated.call(this, $element, options);\n  }\n\n  Query.prototype.query = function (_, params, callback) {\n    params.callback = callback;\n\n    var query = this.options.get('query');\n\n    query.call(null, params);\n  };\n\n  return Query;\n});\n\nS2.define('select2/dropdown/attachContainer',[\n\n], function () {\n  function AttachContainer (decorated, $element, options) {\n    decorated.call(this, $element, options);\n  }\n\n  AttachContainer.prototype.position =\n    function (decorated, $dropdown, $container) {\n    var $dropdownContainer = $container.find('.dropdown-wrapper');\n    $dropdownContainer.append($dropdown);\n\n    $dropdown.addClass('select2-dropdown--below');\n    $container.addClass('select2-container--below');\n  };\n\n  return AttachContainer;\n});\n\nS2.define('select2/dropdown/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n    'blur',\n    'change',\n    'click',\n    'dblclick',\n    'focus',\n    'focusin',\n    'focusout',\n    'input',\n    'keydown',\n    'keyup',\n    'keypress',\n    'mousedown',\n    'mouseenter',\n    'mouseleave',\n    'mousemove',\n    'mouseover',\n    'mouseup',\n    'search',\n    'touchend',\n    'touchstart'\n    ];\n\n    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\nS2.define('select2/selection/stopPropagation',[\n\n], function () {\n  function StopPropagation () { }\n\n  StopPropagation.prototype.bind = function (decorated, container, $container) {\n    decorated.call(this, container, $container);\n\n    var stoppedEvents = [\n      'blur',\n      'change',\n      'click',\n      'dblclick',\n      'focus',\n      'focusin',\n      'focusout',\n      'input',\n      'keydown',\n      'keyup',\n      'keypress',\n      'mousedown',\n      'mouseenter',\n      'mouseleave',\n      'mousemove',\n      'mouseover',\n      'mouseup',\n      'search',\n      'touchend',\n      'touchstart'\n    ];\n\n    this.$selection.on(stoppedEvents.join(' '), function (evt) {\n      evt.stopPropagation();\n    });\n  };\n\n  return StopPropagation;\n});\n\n/*!\n * jQuery Mousewheel 3.1.13\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n */\n\n(function (factory) {\n    if ( typeof S2.define === 'function' && S2.define.amd ) {\n        // AMD. Register as an anonymous module.\n        S2.define('jquery-mousewheel',['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node/CommonJS style for Browserify\n        module.exports = factory;\n    } else {\n        // Browser globals\n        factory(jQuery);\n    }\n}(function ($) {\n\n    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\n        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\n                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\n        slice  = Array.prototype.slice,\n        nullLowestDeltaTimeout, lowestDelta;\n\n    if ( $.event.fixHooks ) {\n        for ( var i = toFix.length; i; ) {\n            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\n        }\n    }\n\n    var special = $.event.special.mousewheel = {\n        version: '3.1.12',\n\n        setup: function() {\n            if ( this.addEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.addEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = handler;\n            }\n            // Store the line height and page height for this particular element\n            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\n            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\n        },\n\n        teardown: function() {\n            if ( this.removeEventListener ) {\n                for ( var i = toBind.length; i; ) {\n                    this.removeEventListener( toBind[--i], handler, false );\n                }\n            } else {\n                this.onmousewheel = null;\n            }\n            // Clean up the data we added to the element\n            $.removeData(this, 'mousewheel-line-height');\n            $.removeData(this, 'mousewheel-page-height');\n        },\n\n        getLineHeight: function(elem) {\n            var $elem = $(elem),\n                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\n            if (!$parent.length) {\n                $parent = $('body');\n            }\n            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\n        },\n\n        getPageHeight: function(elem) {\n            return $(elem).height();\n        },\n\n        settings: {\n            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\n            normalizeOffset: true  // calls getBoundingClientRect for each event\n        }\n    };\n\n    $.fn.extend({\n        mousewheel: function(fn) {\n            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\n        },\n\n        unmousewheel: function(fn) {\n            return this.unbind('mousewheel', fn);\n        }\n    });\n\n\n    function handler(event) {\n        var orgEvent   = event || window.event,\n            args       = slice.call(arguments, 1),\n            delta      = 0,\n            deltaX     = 0,\n            deltaY     = 0,\n            absDelta   = 0,\n            offsetX    = 0,\n            offsetY    = 0;\n        event = $.event.fix(orgEvent);\n        event.type = 'mousewheel';\n\n        // Old school scrollwheel delta\n        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }\n        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }\n        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }\n        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\n\n        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\n        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\n            deltaX = deltaY * -1;\n            deltaY = 0;\n        }\n\n        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\n        delta = deltaY === 0 ? deltaX : deltaY;\n\n        // New school wheel delta (wheel event)\n        if ( 'deltaY' in orgEvent ) {\n            deltaY = orgEvent.deltaY * -1;\n            delta  = deltaY;\n        }\n        if ( 'deltaX' in orgEvent ) {\n            deltaX = orgEvent.deltaX;\n            if ( deltaY === 0 ) { delta  = deltaX * -1; }\n        }\n\n        // No change actually happened, no reason to go any further\n        if ( deltaY === 0 && deltaX === 0 ) { return; }\n\n        // Need to convert lines and pages to pixels if we aren't already in pixels\n        // There are three delta modes:\n        //   * deltaMode 0 is by pixels, nothing to do\n        //   * deltaMode 1 is by lines\n        //   * deltaMode 2 is by pages\n        if ( orgEvent.deltaMode === 1 ) {\n            var lineHeight = $.data(this, 'mousewheel-line-height');\n            delta  *= lineHeight;\n            deltaY *= lineHeight;\n            deltaX *= lineHeight;\n        } else if ( orgEvent.deltaMode === 2 ) {\n            var pageHeight = $.data(this, 'mousewheel-page-height');\n            delta  *= pageHeight;\n            deltaY *= pageHeight;\n            deltaX *= pageHeight;\n        }\n\n        // Store lowest absolute delta to normalize the delta values\n        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\n\n        if ( !lowestDelta || absDelta < lowestDelta ) {\n            lowestDelta = absDelta;\n\n            // Adjust older deltas if necessary\n            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n                lowestDelta /= 40;\n            }\n        }\n\n        // Adjust older deltas if necessary\n        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\n            // Divide all the things by 40!\n            delta  /= 40;\n            deltaX /= 40;\n            deltaY /= 40;\n        }\n\n        // Get a whole, normalized value for the deltas\n        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);\n        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\n        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\n\n        // Normalise offsetX and offsetY properties\n        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\n            var boundingRect = this.getBoundingClientRect();\n            offsetX = event.clientX - boundingRect.left;\n            offsetY = event.clientY - boundingRect.top;\n        }\n\n        // Add information to the event object\n        event.deltaX = deltaX;\n        event.deltaY = deltaY;\n        event.deltaFactor = lowestDelta;\n        event.offsetX = offsetX;\n        event.offsetY = offsetY;\n        // Go ahead and set deltaMode to 0 since we converted to pixels\n        // Although this is a little odd since we overwrite the deltaX/Y\n        // properties with normalized deltas.\n        event.deltaMode = 0;\n\n        // Add event and delta to the front of the arguments\n        args.unshift(event, delta, deltaX, deltaY);\n\n        // Clearout lowestDelta after sometime to better\n        // handle multiple device types that give different\n        // a different lowestDelta\n        // Ex: trackpad = 3 and mouse wheel = 120\n        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\n        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\n\n        return ($.event.dispatch || $.event.handle).apply(this, args);\n    }\n\n    function nullLowestDelta() {\n        lowestDelta = null;\n    }\n\n    function shouldAdjustOldDeltas(orgEvent, absDelta) {\n        // If this is an older event and the delta is divisable by 120,\n        // then we are assuming that the browser is treating this as an\n        // older mouse wheel event and that we should divide the deltas\n        // by 40 to try and get a more usable deltaFactor.\n        // Side note, this actually impacts the reported scroll distance\n        // in older browsers and can cause scrolling to be slower than native.\n        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\n        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\n    }\n\n}));\n\nS2.define('jquery.select2',[\n  'jquery',\n  'jquery-mousewheel',\n\n  './select2/core',\n  './select2/defaults',\n  './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n  if ($.fn.select2 == null) {\n    // All methods that should return the element\n    var thisMethods = ['open', 'close', 'destroy'];\n\n    $.fn.select2 = function (options) {\n      options = options || {};\n\n      if (typeof options === 'object') {\n        this.each(function () {\n          var instanceOptions = $.extend(true, {}, options);\n\n          var instance = new Select2($(this), instanceOptions);\n        });\n\n        return this;\n      } else if (typeof options === 'string') {\n        var ret;\n        var args = Array.prototype.slice.call(arguments, 1);\n\n        this.each(function () {\n          var instance = Utils.GetData(this, 'select2');\n\n          if (instance == null && window.console && console.error) {\n            console.error(\n              'The select2(\\'' + options + '\\') method was called on an ' +\n              'element that is not using Select2.'\n            );\n          }\n\n          ret = instance[options].apply(instance, args);\n        });\n\n        // Check if we should be returning `this`\n        if ($.inArray(options, thisMethods) > -1) {\n          return this;\n        }\n\n        return ret;\n      } else {\n        throw new Error('Invalid arguments for Select2: ' + options);\n      }\n    };\n  }\n\n  if ($.fn.select2.defaults == null) {\n    $.fn.select2.defaults = Defaults;\n  }\n\n  return Select2;\n});\n\n  // Return the AMD loader configuration so it can be used outside of this file\n  return {\n    define: S2.define,\n    require: S2.require\n  };\n}());\n\n  // Autoload the jQuery bindings\n  // We know that all of the modules exist above this, so we're safe\n  var select2 = S2.require('jquery.select2');\n\n  // Hold the AMD module references on the jQuery function that was just loaded\n  // This allows Select2 to use the internal loader outside of this file, such\n  // as in the language files.\n  jQuery.fn.select2.amd = S2;\n\n  // Return the Select2 instance for anyone who is importing it.\n  return select2;\n}));\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js",
    "content": "/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */\n!function(n){\"function\"==typeof define&&define.amd?define([\"jquery\"],n):\"object\"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t=\"undefined\"!=typeof window?require(\"jquery\"):require(\"jquery\")(e)),n(t),t}:n(jQuery)}(function(d){var e=function(){if(d&&d.fn&&d.fn.select2&&d.fn.select2.amd)var e=d.fn.select2.amd;var t,n,i,h,o,s,f,g,m,v,y,_,r,a,w,l;function b(e,t){return r.call(e,t)}function c(e,t){var n,i,r,o,s,a,l,c,u,d,p,h=t&&t.split(\"/\"),f=y.map,g=f&&f[\"*\"]||{};if(e){for(s=(e=e.split(\"/\")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,\"\")),\".\"===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u<e.length;u++)if(\".\"===(p=e[u]))e.splice(u,1),u-=1;else if(\"..\"===p){if(0===u||1===u&&\"..\"===e[2]||\"..\"===e[u-1])continue;0<u&&(e.splice(u-1,2),u-=2)}e=e.join(\"/\")}if((h||g)&&f){for(u=(n=e.split(\"/\")).length;0<u;u-=1){if(i=n.slice(0,u).join(\"/\"),h)for(d=h.length;0<d;d-=1)if(r=(r=f[h.slice(0,d).join(\"/\")])&&r[i]){o=r,a=u;break}if(o)break;!l&&g&&g[i]&&(l=g[i],c=u)}!o&&l&&(o=l,a=c),o&&(n.splice(0,a,o),e=n.join(\"/\"))}return e}function A(t,n){return function(){var e=a.call(arguments,0);return\"string\"!=typeof e[0]&&1===e.length&&e.push(null),s.apply(h,e.concat([t,n]))}}function x(t){return function(e){m[t]=e}}function D(e){if(b(v,e)){var t=v[e];delete v[e],_[e]=!0,o.apply(h,t)}if(!b(m,e)&&!b(_,e))throw new Error(\"No \"+e);return m[e]}function u(e){var t,n=e?e.indexOf(\"!\"):-1;return-1<n&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function S(e){return e?u(e):[]}return e&&e.requirejs||(e?n=e:e={},m={},v={},y={},_={},r=Object.prototype.hasOwnProperty,a=[].slice,w=/\\.js$/,f=function(e,t){var n,i=u(e),r=i[0],o=t[1];return e=i[1],r&&(n=D(r=c(r,o))),r?e=n&&n.normalize?n.normalize(e,function(t){return function(e){return c(e,t)}}(o)):c(e,o):(r=(i=u(e=c(e,o)))[0],e=i[1],r&&(n=D(r))),{f:r?r+\"!\"+e:e,n:e,pr:r,p:n}},g={require:function(e){return A(e)},exports:function(e){var t=m[e];return void 0!==t?t:m[e]={}},module:function(e){return{id:e,uri:\"\",exports:m[e],config:function(e){return function(){return y&&y.config&&y.config[e]||{}}}(e)}}},o=function(e,t,n,i){var r,o,s,a,l,c,u,d=[],p=typeof n;if(c=S(i=i||e),\"undefined\"==p||\"function\"==p){for(t=!t.length&&n.length?[\"require\",\"exports\",\"module\"]:t,l=0;l<t.length;l+=1)if(\"require\"===(o=(a=f(t[l],c)).f))d[l]=g.require(e);else if(\"exports\"===o)d[l]=g.exports(e),u=!0;else if(\"module\"===o)r=d[l]=g.module(e);else if(b(m,o)||b(v,o)||b(_,o))d[l]=D(o);else{if(!a.p)throw new Error(e+\" missing \"+o);a.p.load(a.n,A(i,!0),x(o),{}),d[l]=m[o]}s=n?n.apply(m[e],d):void 0,e&&(r&&r.exports!==h&&r.exports!==m[e]?m[e]=r.exports:s===h&&u||(m[e]=s))}else e&&(m[e]=n)},t=n=s=function(e,t,n,i,r){if(\"string\"==typeof e)return g[e]?g[e](t):D(f(e,S(t)).f);if(!e.splice){if((y=e).deps&&s(y.deps,y.callback),!t)return;t.splice?(e=t,t=n,n=null):e=h}return t=t||function(){},\"function\"==typeof n&&(n=i,i=r),i?o(h,e,t,n):setTimeout(function(){o(h,e,t,n)},4),s},s.config=function(e){return s(e)},t._defined=m,(i=function(e,t,n){if(\"string\"!=typeof e)throw new Error(\"See almond README: incorrect module build, no module name\");t.splice||(n=t,t=[]),b(m,e)||b(v,e)||(v[e]=[e,t,n])}).amd={jQuery:!0},e.requirejs=t,e.require=n,e.define=i),e.define(\"almond\",function(){}),e.define(\"jquery\",[],function(){var e=d||$;return null==e&&console&&console.error&&console.error(\"Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page.\"),e}),e.define(\"select2/utils\",[\"jquery\"],function(o){var r={};function u(e){var t=e.prototype,n=[];for(var i in t){\"function\"==typeof t[i]&&\"constructor\"!==i&&n.push(i)}return n}r.Extend=function(e,t){var n={}.hasOwnProperty;function i(){this.constructor=e}for(var r in t)n.call(t,r)&&(e[r]=t[r]);return i.prototype=t.prototype,e.prototype=new i,e.__super__=t.prototype,e},r.Decorate=function(i,r){var e=u(r),t=u(i);function o(){var e=Array.prototype.unshift,t=r.prototype.constructor.length,n=i.prototype.constructor;0<t&&(e.call(arguments,i.prototype.constructor),n=r.prototype.constructor),n.apply(this,arguments)}r.displayName=i.displayName,o.prototype=new function(){this.constructor=o};for(var n=0;n<t.length;n++){var s=t[n];o.prototype[s]=i.prototype[s]}function a(e){var t=function(){};e in o.prototype&&(t=o.prototype[e]);var n=r.prototype[e];return function(){return Array.prototype.unshift.call(arguments,t),n.apply(this,arguments)}}for(var l=0;l<e.length;l++){var c=e[l];o.prototype[c]=a(c)}return o};function e(){this.listeners={}}e.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},e.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),(n[0]._type=e)in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),\"*\"in this.listeners&&this.invoke(this.listeners[\"*\"],arguments)},e.prototype.invoke=function(e,t){for(var n=0,i=e.length;n<i;n++)e[n].apply(this,t)},r.Observable=e,r.generateChars=function(e){for(var t=\"\",n=0;n<e;n++){t+=Math.floor(36*Math.random()).toString(36)}return t},r.bind=function(e,t){return function(){e.apply(t,arguments)}},r._convertData=function(e){for(var t in e){var n=t.split(\"-\"),i=e;if(1!==n.length){for(var r=0;r<n.length;r++){var o=n[r];(o=o.substring(0,1).toLowerCase()+o.substring(1))in i||(i[o]={}),r==n.length-1&&(i[o]=e[t]),i=i[o]}delete e[t]}}return e},r.hasScroll=function(e,t){var n=o(t),i=t.style.overflowX,r=t.style.overflowY;return(i!==r||\"hidden\"!==r&&\"visible\"!==r)&&(\"scroll\"===i||\"scroll\"===r||(n.innerHeight()<t.scrollHeight||n.innerWidth()<t.scrollWidth))},r.escapeMarkup=function(e){var t={\"\\\\\":\"&#92;\",\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\",\"/\":\"&#47;\"};return\"string\"!=typeof e?e:String(e).replace(/[&<>\"'\\/\\\\]/g,function(e){return t[e]})},r.appendMany=function(e,t){if(\"1.7\"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},r.__cache={};var n=0;return r.GetUniqueElementId=function(e){var t=e.getAttribute(\"data-select2-id\");return null==t&&(e.id?(t=e.id,e.setAttribute(\"data-select2-id\",t)):(e.setAttribute(\"data-select2-id\",++n),t=n.toString())),t},r.StoreData=function(e,t,n){var i=r.GetUniqueElementId(e);r.__cache[i]||(r.__cache[i]={}),r.__cache[i][t]=n},r.GetData=function(e,t){var n=r.GetUniqueElementId(e);return t?r.__cache[n]&&null!=r.__cache[n][t]?r.__cache[n][t]:o(e).data(t):r.__cache[n]},r.RemoveData=function(e){var t=r.GetUniqueElementId(e);null!=r.__cache[t]&&delete r.__cache[t],e.removeAttribute(\"data-select2-id\")},r}),e.define(\"select2/results\",[\"jquery\",\"./utils\"],function(h,f){function i(e,t,n){this.$element=e,this.data=n,this.options=t,i.__super__.constructor.call(this)}return f.Extend(i,f.Observable),i.prototype.render=function(){var e=h('<ul class=\"select2-results__options\" role=\"listbox\"></ul>');return this.options.get(\"multiple\")&&e.attr(\"aria-multiselectable\",\"true\"),this.$results=e},i.prototype.clear=function(){this.$results.empty()},i.prototype.displayMessage=function(e){var t=this.options.get(\"escapeMarkup\");this.clear(),this.hideLoading();var n=h('<li role=\"alert\" aria-live=\"assertive\" class=\"select2-results__option\"></li>'),i=this.options.get(\"translations\").get(e.message);n.append(t(i(e.args))),n[0].className+=\" select2-results__message\",this.$results.append(n)},i.prototype.hideMessages=function(){this.$results.find(\".select2-results__message\").remove()},i.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var i=e.results[n],r=this.option(i);t.push(r)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger(\"results:message\",{message:\"noResults\"})},i.prototype.position=function(e,t){t.find(\".select2-results\").append(e)},i.prototype.sort=function(e){return this.options.get(\"sorter\")(e)},i.prototype.highlightFirstItem=function(){var e=this.$results.find(\".select2-results__option[aria-selected]\"),t=e.filter(\"[aria-selected=true]\");0<t.length?t.first().trigger(\"mouseenter\"):e.first().trigger(\"mouseenter\"),this.ensureHighlightVisible()},i.prototype.setClasses=function(){var t=this;this.data.current(function(e){var i=h.map(e,function(e){return e.id.toString()});t.$results.find(\".select2-results__option[aria-selected]\").each(function(){var e=h(this),t=f.GetData(this,\"data\"),n=\"\"+t.id;null!=t.element&&t.element.selected||null==t.element&&-1<h.inArray(n,i)?e.attr(\"aria-selected\",\"true\"):e.attr(\"aria-selected\",\"false\")})})},i.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get(\"translations\").get(\"searching\")(e)},n=this.option(t);n.className+=\" loading-results\",this.$results.prepend(n)},i.prototype.hideLoading=function(){this.$results.find(\".loading-results\").remove()},i.prototype.option=function(e){var t=document.createElement(\"li\");t.className=\"select2-results__option\";var n={role:\"option\",\"aria-selected\":\"false\"},i=window.Element.prototype.matches||window.Element.prototype.msMatchesSelector||window.Element.prototype.webkitMatchesSelector;for(var r in(null!=e.element&&i.call(e.element,\":disabled\")||null==e.element&&e.disabled)&&(delete n[\"aria-selected\"],n[\"aria-disabled\"]=\"true\"),null==e.id&&delete n[\"aria-selected\"],null!=e._resultId&&(t.id=e._resultId),e.title&&(t.title=e.title),e.children&&(n.role=\"group\",n[\"aria-label\"]=e.text,delete n[\"aria-selected\"]),n){var o=n[r];t.setAttribute(r,o)}if(e.children){var s=h(t),a=document.createElement(\"strong\");a.className=\"select2-results__group\";h(a);this.template(e,a);for(var l=[],c=0;c<e.children.length;c++){var u=e.children[c],d=this.option(u);l.push(d)}var p=h(\"<ul></ul>\",{class:\"select2-results__options select2-results__options--nested\"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,\"data\",e),t},i.prototype.bind=function(t,e){var l=this,n=t.id+\"-results\";this.$results.attr(\"id\",n),t.on(\"results:all\",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on(\"results:append\",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on(\"query\",function(e){l.hideMessages(),l.showLoading(e)}),t.on(\"select\",function(){t.isOpen()&&(l.setClasses(),l.options.get(\"scrollAfterSelect\")&&l.highlightFirstItem())}),t.on(\"unselect\",function(){t.isOpen()&&(l.setClasses(),l.options.get(\"scrollAfterSelect\")&&l.highlightFirstItem())}),t.on(\"open\",function(){l.$results.attr(\"aria-expanded\",\"true\"),l.$results.attr(\"aria-hidden\",\"false\"),l.setClasses(),l.ensureHighlightVisible()}),t.on(\"close\",function(){l.$results.attr(\"aria-expanded\",\"false\"),l.$results.attr(\"aria-hidden\",\"true\"),l.$results.removeAttr(\"aria-activedescendant\")}),t.on(\"results:toggle\",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger(\"mouseup\")}),t.on(\"results:select\",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],\"data\");\"true\"==e.attr(\"aria-selected\")?l.trigger(\"close\",{}):l.trigger(\"select\",{data:t})}}),t.on(\"results:previous\",function(){var e=l.getHighlightedResults(),t=l.$results.find(\"[aria-selected]\"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var r=t.eq(i);r.trigger(\"mouseenter\");var o=l.$results.offset().top,s=r.offset().top,a=l.$results.scrollTop()+(s-o);0===i?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on(\"results:next\",function(){var e=l.getHighlightedResults(),t=l.$results.find(\"[aria-selected]\"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger(\"mouseenter\");var r=l.$results.offset().top+l.$results.outerHeight(!1),o=i.offset().top+i.outerHeight(!1),s=l.$results.scrollTop()+o-r;0===n?l.$results.scrollTop(0):r<o&&l.$results.scrollTop(s)}}),t.on(\"results:focus\",function(e){e.element.addClass(\"select2-results__option--highlighted\")}),t.on(\"results:message\",function(e){l.displayMessage(e)}),h.fn.mousewheel&&this.$results.on(\"mousewheel\",function(e){var t=l.$results.scrollTop(),n=l.$results.get(0).scrollHeight-t+e.deltaY,i=0<e.deltaY&&t-e.deltaY<=0,r=e.deltaY<0&&n<=l.$results.height();i?(l.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):r&&(l.$results.scrollTop(l.$results.get(0).scrollHeight-l.$results.height()),e.preventDefault(),e.stopPropagation())}),this.$results.on(\"mouseup\",\".select2-results__option[aria-selected]\",function(e){var t=h(this),n=f.GetData(this,\"data\");\"true\"!==t.attr(\"aria-selected\")?l.trigger(\"select\",{originalEvent:e,data:n}):l.options.get(\"multiple\")?l.trigger(\"unselect\",{originalEvent:e,data:n}):l.trigger(\"close\",{})}),this.$results.on(\"mouseenter\",\".select2-results__option[aria-selected]\",function(e){var t=f.GetData(this,\"data\");l.getHighlightedResults().removeClass(\"select2-results__option--highlighted\"),l.trigger(\"results:focus\",{data:t,element:h(this)})})},i.prototype.getHighlightedResults=function(){return this.$results.find(\".select2-results__option--highlighted\")},i.prototype.destroy=function(){this.$results.remove()},i.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find(\"[aria-selected]\").index(e),n=this.$results.offset().top,i=e.offset().top,r=this.$results.scrollTop()+(i-n),o=i-n;r-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(o>this.$results.outerHeight()||o<0)&&this.$results.scrollTop(r)}},i.prototype.template=function(e,t){var n=this.options.get(\"templateResult\"),i=this.options.get(\"escapeMarkup\"),r=n(e,t);null==r?t.style.display=\"none\":\"string\"==typeof r?t.innerHTML=i(r):h(t).append(r)},i}),e.define(\"select2/keys\",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define(\"select2/selection/base\",[\"jquery\",\"../utils\",\"../keys\"],function(n,i,r){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return i.Extend(o,i.Observable),o.prototype.render=function(){var e=n('<span class=\"select2-selection\" role=\"combobox\"  aria-haspopup=\"true\" aria-expanded=\"false\"></span>');return this._tabindex=0,null!=i.GetData(this.$element[0],\"old-tabindex\")?this._tabindex=i.GetData(this.$element[0],\"old-tabindex\"):null!=this.$element.attr(\"tabindex\")&&(this._tabindex=this.$element.attr(\"tabindex\")),e.attr(\"title\",this.$element.attr(\"title\")),e.attr(\"tabindex\",this._tabindex),e.attr(\"aria-disabled\",\"false\"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,i=e.id+\"-results\";this.container=e,this.$selection.on(\"focus\",function(e){n.trigger(\"focus\",e)}),this.$selection.on(\"blur\",function(e){n._handleBlur(e)}),this.$selection.on(\"keydown\",function(e){n.trigger(\"keypress\",e),e.which===r.SPACE&&e.preventDefault()}),e.on(\"results:focus\",function(e){n.$selection.attr(\"aria-activedescendant\",e.data._resultId)}),e.on(\"selection:update\",function(e){n.update(e.data)}),e.on(\"open\",function(){n.$selection.attr(\"aria-expanded\",\"true\"),n.$selection.attr(\"aria-owns\",i),n._attachCloseHandler(e)}),e.on(\"close\",function(){n.$selection.attr(\"aria-expanded\",\"false\"),n.$selection.removeAttr(\"aria-activedescendant\"),n.$selection.removeAttr(\"aria-owns\"),n.$selection.trigger(\"focus\"),n._detachCloseHandler(e)}),e.on(\"enable\",function(){n.$selection.attr(\"tabindex\",n._tabindex),n.$selection.attr(\"aria-disabled\",\"false\")}),e.on(\"disable\",function(){n.$selection.attr(\"tabindex\",\"-1\"),n.$selection.attr(\"aria-disabled\",\"true\")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger(\"blur\",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on(\"mousedown.select2.\"+e.id,function(e){var t=n(e.target).closest(\".select2\");n(\".select2.select2-container--open\").each(function(){this!=t[0]&&i.GetData(this,\"element\").select2(\"close\")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off(\"mousedown.select2.\"+e.id)},o.prototype.position=function(e,t){t.find(\".selection\").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error(\"The `update` method must be defined in child classes.\")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get(\"disabled\")},o}),e.define(\"select2/selection/single\",[\"jquery\",\"./base\",\"../utils\",\"../keys\"],function(e,t,n,i){function r(){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,t),r.prototype.render=function(){var e=r.__super__.render.call(this);return e.addClass(\"select2-selection--single\"),e.html('<span class=\"select2-selection__rendered\"></span><span class=\"select2-selection__arrow\" role=\"presentation\"><b role=\"presentation\"></b></span>'),e},r.prototype.bind=function(t,e){var n=this;r.__super__.bind.apply(this,arguments);var i=t.id+\"-container\";this.$selection.find(\".select2-selection__rendered\").attr(\"id\",i).attr(\"role\",\"textbox\").attr(\"aria-readonly\",\"true\"),this.$selection.attr(\"aria-labelledby\",i),this.$selection.on(\"mousedown\",function(e){1===e.which&&n.trigger(\"toggle\",{originalEvent:e})}),this.$selection.on(\"focus\",function(e){}),this.$selection.on(\"blur\",function(e){}),t.on(\"focus\",function(e){t.isOpen()||n.$selection.trigger(\"focus\")})},r.prototype.clear=function(){var e=this.$selection.find(\".select2-selection__rendered\");e.empty(),e.removeAttr(\"title\")},r.prototype.display=function(e,t){var n=this.options.get(\"templateSelection\");return this.options.get(\"escapeMarkup\")(n(e,t))},r.prototype.selectionContainer=function(){return e(\"<span></span>\")},r.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(\".select2-selection__rendered\"),i=this.display(t,n);n.empty().append(i);var r=t.title||t.text;r?n.attr(\"title\",r):n.removeAttr(\"title\")}else this.clear()},r}),e.define(\"select2/selection/multiple\",[\"jquery\",\"./base\",\"../utils\"],function(r,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass(\"select2-selection--multiple\"),e.html('<ul class=\"select2-selection__rendered\"></ul>'),e},n.prototype.bind=function(e,t){var i=this;n.__super__.bind.apply(this,arguments),this.$selection.on(\"click\",function(e){i.trigger(\"toggle\",{originalEvent:e})}),this.$selection.on(\"click\",\".select2-selection__choice__remove\",function(e){if(!i.isDisabled()){var t=r(this).parent(),n=l.GetData(t[0],\"data\");i.trigger(\"unselect\",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(\".select2-selection__rendered\");e.empty(),e.removeAttr(\"title\")},n.prototype.display=function(e,t){var n=this.options.get(\"templateSelection\");return this.options.get(\"escapeMarkup\")(n(e,t))},n.prototype.selectionContainer=function(){return r('<li class=\"select2-selection__choice\"><span class=\"select2-selection__choice__remove\" role=\"presentation\">&times;</span></li>')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n<e.length;n++){var i=e[n],r=this.selectionContainer(),o=this.display(i,r);r.append(o);var s=i.title||i.text;s&&r.attr(\"title\",s),l.StoreData(r[0],\"data\",i),t.push(r)}var a=this.$selection.find(\".select2-selection__rendered\");l.appendMany(a,t)}},n}),e.define(\"select2/selection/placeholder\",[\"../utils\"],function(e){function t(e,t,n){this.placeholder=this.normalizePlaceholder(n.get(\"placeholder\")),e.call(this,t,n)}return t.prototype.normalizePlaceholder=function(e,t){return\"string\"==typeof t&&(t={id:\"\",text:t}),t},t.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();return n.html(this.display(t)),n.addClass(\"select2-selection__placeholder\").removeClass(\"select2-selection__choice\"),n},t.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(1<t.length||n)return e.call(this,t);this.clear();var i=this.createPlaceholder(this.placeholder);this.$selection.find(\".select2-selection__rendered\").append(i)},t}),e.define(\"select2/selection/allowClear\",[\"jquery\",\"../keys\",\"../utils\"],function(r,i,a){function e(){}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),null==this.placeholder&&this.options.get(\"debug\")&&window.console&&console.error&&console.error(\"Select2: The `allowClear` option should be used in combination with the `placeholder` option.\"),this.$selection.on(\"mousedown\",\".select2-selection__clear\",function(e){i._handleClear(e)}),t.on(\"keypress\",function(e){i._handleKeyboardClear(e,t)})},e.prototype._handleClear=function(e,t){if(!this.isDisabled()){var n=this.$selection.find(\".select2-selection__clear\");if(0!==n.length){t.stopPropagation();var i=a.GetData(n[0],\"data\"),r=this.$element.val();this.$element.val(this.placeholder.id);var o={data:i};if(this.trigger(\"clear\",o),o.prevented)this.$element.val(r);else{for(var s=0;s<i.length;s++)if(o={data:i[s]},this.trigger(\"unselect\",o),o.prevented)return void this.$element.val(r);this.$element.trigger(\"input\").trigger(\"change\"),this.trigger(\"toggle\",{})}}}},e.prototype._handleKeyboardClear=function(e,t,n){n.isOpen()||t.which!=i.DELETE&&t.which!=i.BACKSPACE||this._handleClear(t)},e.prototype.update=function(e,t){if(e.call(this,t),!(0<this.$selection.find(\".select2-selection__placeholder\").length||0===t.length)){var n=this.options.get(\"translations\").get(\"removeAllItems\"),i=r('<span class=\"select2-selection__clear\" title=\"'+n()+'\">&times;</span>');a.StoreData(i[0],\"data\",t),this.$selection.find(\".select2-selection__rendered\").prepend(i)}},e}),e.define(\"select2/selection/search\",[\"jquery\",\"../utils\",\"../keys\"],function(i,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=i('<li class=\"select2-search select2-search--inline\"><input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" /></li>');this.$searchContainer=t,this.$search=t.find(\"input\");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var i=this,r=t.id+\"-results\";e.call(this,t,n),t.on(\"open\",function(){i.$search.attr(\"aria-controls\",r),i.$search.trigger(\"focus\")}),t.on(\"close\",function(){i.$search.val(\"\"),i.$search.removeAttr(\"aria-controls\"),i.$search.removeAttr(\"aria-activedescendant\"),i.$search.trigger(\"focus\")}),t.on(\"enable\",function(){i.$search.prop(\"disabled\",!1),i._transferTabIndex()}),t.on(\"disable\",function(){i.$search.prop(\"disabled\",!0)}),t.on(\"focus\",function(e){i.$search.trigger(\"focus\")}),t.on(\"results:focus\",function(e){e.data._resultId?i.$search.attr(\"aria-activedescendant\",e.data._resultId):i.$search.removeAttr(\"aria-activedescendant\")}),this.$selection.on(\"focusin\",\".select2-search--inline\",function(e){i.trigger(\"focus\",e)}),this.$selection.on(\"focusout\",\".select2-search--inline\",function(e){i._handleBlur(e)}),this.$selection.on(\"keydown\",\".select2-search--inline\",function(e){if(e.stopPropagation(),i.trigger(\"keypress\",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&\"\"===i.$search.val()){var t=i.$searchContainer.prev(\".select2-selection__choice\");if(0<t.length){var n=a.GetData(t[0],\"data\");i.searchRemoveChoice(n),e.preventDefault()}}}),this.$selection.on(\"click\",\".select2-search--inline\",function(e){i.$search.val()&&e.stopPropagation()});var o=document.documentMode,s=o&&o<=11;this.$selection.on(\"input.searchcheck\",\".select2-search--inline\",function(e){s?i.$selection.off(\"input.search input.searchcheck\"):i.$selection.off(\"keyup.search\")}),this.$selection.on(\"keyup.search input.search\",\".select2-search--inline\",function(e){if(s&&\"input\"===e.type)i.$selection.off(\"input.search input.searchcheck\");else{var t=e.which;t!=l.SHIFT&&t!=l.CTRL&&t!=l.ALT&&t!=l.TAB&&i.handleSearch(e)}})},e.prototype._transferTabIndex=function(e){this.$search.attr(\"tabindex\",this.$selection.attr(\"tabindex\")),this.$selection.attr(\"tabindex\",\"-1\")},e.prototype.createPlaceholder=function(e,t){this.$search.attr(\"placeholder\",t.text)},e.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr(\"placeholder\",\"\"),e.call(this,t),this.$selection.find(\".select2-selection__rendered\").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.trigger(\"focus\")},e.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger(\"query\",{term:e})}this._keyUpPrevented=!1},e.prototype.searchRemoveChoice=function(e,t){this.trigger(\"unselect\",{data:t}),this.$search.val(t.text),this.handleSearch()},e.prototype.resizeSearch=function(){this.$search.css(\"width\",\"25px\");var e=\"\";\"\"!==this.$search.attr(\"placeholder\")?e=this.$selection.find(\".select2-selection__rendered\").width():e=.75*(this.$search.val().length+1)+\"em\";this.$search.css(\"width\",e)},e}),e.define(\"select2/selection/eventRelay\",[\"jquery\"],function(s){function e(){}return e.prototype.bind=function(e,t,n){var i=this,r=[\"open\",\"opening\",\"close\",\"closing\",\"select\",\"selecting\",\"unselect\",\"unselecting\",\"clear\",\"clearing\"],o=[\"opening\",\"closing\",\"selecting\",\"unselecting\",\"clearing\"];e.call(this,t,n),t.on(\"*\",function(e,t){if(-1!==s.inArray(e,r)){t=t||{};var n=s.Event(\"select2:\"+e,{params:t});i.$element.trigger(n),-1!==s.inArray(e,o)&&(t.prevented=n.isDefaultPrevented())}})},e}),e.define(\"select2/translation\",[\"jquery\",\"require\"],function(t,n){function i(e){this.dict=e||{}}return i.prototype.all=function(){return this.dict},i.prototype.get=function(e){return this.dict[e]},i.prototype.extend=function(e){this.dict=t.extend({},e.all(),this.dict)},i._cache={},i.loadPath=function(e){if(!(e in i._cache)){var t=n(e);i._cache[e]=t}return new i(i._cache[e])},i}),e.define(\"select2/diacritics\",[],function(){return{\"Ⓐ\":\"A\",\"Ａ\":\"A\",\"À\":\"A\",\"Á\":\"A\",\"Â\":\"A\",\"Ầ\":\"A\",\"Ấ\":\"A\",\"Ẫ\":\"A\",\"Ẩ\":\"A\",\"Ã\":\"A\",\"Ā\":\"A\",\"Ă\":\"A\",\"Ằ\":\"A\",\"Ắ\":\"A\",\"Ẵ\":\"A\",\"Ẳ\":\"A\",\"Ȧ\":\"A\",\"Ǡ\":\"A\",\"Ä\":\"A\",\"Ǟ\":\"A\",\"Ả\":\"A\",\"Å\":\"A\",\"Ǻ\":\"A\",\"Ǎ\":\"A\",\"Ȁ\":\"A\",\"Ȃ\":\"A\",\"Ạ\":\"A\",\"Ậ\":\"A\",\"Ặ\":\"A\",\"Ḁ\":\"A\",\"Ą\":\"A\",\"Ⱥ\":\"A\",\"Ɐ\":\"A\",\"Ꜳ\":\"AA\",\"Æ\":\"AE\",\"Ǽ\":\"AE\",\"Ǣ\":\"AE\",\"Ꜵ\":\"AO\",\"Ꜷ\":\"AU\",\"Ꜹ\":\"AV\",\"Ꜻ\":\"AV\",\"Ꜽ\":\"AY\",\"Ⓑ\":\"B\",\"Ｂ\":\"B\",\"Ḃ\":\"B\",\"Ḅ\":\"B\",\"Ḇ\":\"B\",\"Ƀ\":\"B\",\"Ƃ\":\"B\",\"Ɓ\":\"B\",\"Ⓒ\":\"C\",\"Ｃ\":\"C\",\"Ć\":\"C\",\"Ĉ\":\"C\",\"Ċ\":\"C\",\"Č\":\"C\",\"Ç\":\"C\",\"Ḉ\":\"C\",\"Ƈ\":\"C\",\"Ȼ\":\"C\",\"Ꜿ\":\"C\",\"Ⓓ\":\"D\",\"Ｄ\":\"D\",\"Ḋ\":\"D\",\"Ď\":\"D\",\"Ḍ\":\"D\",\"Ḑ\":\"D\",\"Ḓ\":\"D\",\"Ḏ\":\"D\",\"Đ\":\"D\",\"Ƌ\":\"D\",\"Ɗ\":\"D\",\"Ɖ\":\"D\",\"Ꝺ\":\"D\",\"Ǳ\":\"DZ\",\"Ǆ\":\"DZ\",\"ǲ\":\"Dz\",\"ǅ\":\"Dz\",\"Ⓔ\":\"E\",\"Ｅ\":\"E\",\"È\":\"E\",\"É\":\"E\",\"Ê\":\"E\",\"Ề\":\"E\",\"Ế\":\"E\",\"Ễ\":\"E\",\"Ể\":\"E\",\"Ẽ\":\"E\",\"Ē\":\"E\",\"Ḕ\":\"E\",\"Ḗ\":\"E\",\"Ĕ\":\"E\",\"Ė\":\"E\",\"Ë\":\"E\",\"Ẻ\":\"E\",\"Ě\":\"E\",\"Ȅ\":\"E\",\"Ȇ\":\"E\",\"Ẹ\":\"E\",\"Ệ\":\"E\",\"Ȩ\":\"E\",\"Ḝ\":\"E\",\"Ę\":\"E\",\"Ḙ\":\"E\",\"Ḛ\":\"E\",\"Ɛ\":\"E\",\"Ǝ\":\"E\",\"Ⓕ\":\"F\",\"Ｆ\":\"F\",\"Ḟ\":\"F\",\"Ƒ\":\"F\",\"Ꝼ\":\"F\",\"Ⓖ\":\"G\",\"Ｇ\":\"G\",\"Ǵ\":\"G\",\"Ĝ\":\"G\",\"Ḡ\":\"G\",\"Ğ\":\"G\",\"Ġ\":\"G\",\"Ǧ\":\"G\",\"Ģ\":\"G\",\"Ǥ\":\"G\",\"Ɠ\":\"G\",\"Ꞡ\":\"G\",\"Ᵹ\":\"G\",\"Ꝿ\":\"G\",\"Ⓗ\":\"H\",\"Ｈ\":\"H\",\"Ĥ\":\"H\",\"Ḣ\":\"H\",\"Ḧ\":\"H\",\"Ȟ\":\"H\",\"Ḥ\":\"H\",\"Ḩ\":\"H\",\"Ḫ\":\"H\",\"Ħ\":\"H\",\"Ⱨ\":\"H\",\"Ⱶ\":\"H\",\"Ɥ\":\"H\",\"Ⓘ\":\"I\",\"Ｉ\":\"I\",\"Ì\":\"I\",\"Í\":\"I\",\"Î\":\"I\",\"Ĩ\":\"I\",\"Ī\":\"I\",\"Ĭ\":\"I\",\"İ\":\"I\",\"Ï\":\"I\",\"Ḯ\":\"I\",\"Ỉ\":\"I\",\"Ǐ\":\"I\",\"Ȉ\":\"I\",\"Ȋ\":\"I\",\"Ị\":\"I\",\"Į\":\"I\",\"Ḭ\":\"I\",\"Ɨ\":\"I\",\"Ⓙ\":\"J\",\"Ｊ\":\"J\",\"Ĵ\":\"J\",\"Ɉ\":\"J\",\"Ⓚ\":\"K\",\"Ｋ\":\"K\",\"Ḱ\":\"K\",\"Ǩ\":\"K\",\"Ḳ\":\"K\",\"Ķ\":\"K\",\"Ḵ\":\"K\",\"Ƙ\":\"K\",\"Ⱪ\":\"K\",\"Ꝁ\":\"K\",\"Ꝃ\":\"K\",\"Ꝅ\":\"K\",\"Ꞣ\":\"K\",\"Ⓛ\":\"L\",\"Ｌ\":\"L\",\"Ŀ\":\"L\",\"Ĺ\":\"L\",\"Ľ\":\"L\",\"Ḷ\":\"L\",\"Ḹ\":\"L\",\"Ļ\":\"L\",\"Ḽ\":\"L\",\"Ḻ\":\"L\",\"Ł\":\"L\",\"Ƚ\":\"L\",\"Ɫ\":\"L\",\"Ⱡ\":\"L\",\"Ꝉ\":\"L\",\"Ꝇ\":\"L\",\"Ꞁ\":\"L\",\"Ǉ\":\"LJ\",\"ǈ\":\"Lj\",\"Ⓜ\":\"M\",\"Ｍ\":\"M\",\"Ḿ\":\"M\",\"Ṁ\":\"M\",\"Ṃ\":\"M\",\"Ɱ\":\"M\",\"Ɯ\":\"M\",\"Ⓝ\":\"N\",\"Ｎ\":\"N\",\"Ǹ\":\"N\",\"Ń\":\"N\",\"Ñ\":\"N\",\"Ṅ\":\"N\",\"Ň\":\"N\",\"Ṇ\":\"N\",\"Ņ\":\"N\",\"Ṋ\":\"N\",\"Ṉ\":\"N\",\"Ƞ\":\"N\",\"Ɲ\":\"N\",\"Ꞑ\":\"N\",\"Ꞥ\":\"N\",\"Ǌ\":\"NJ\",\"ǋ\":\"Nj\",\"Ⓞ\":\"O\",\"Ｏ\":\"O\",\"Ò\":\"O\",\"Ó\":\"O\",\"Ô\":\"O\",\"Ồ\":\"O\",\"Ố\":\"O\",\"Ỗ\":\"O\",\"Ổ\":\"O\",\"Õ\":\"O\",\"Ṍ\":\"O\",\"Ȭ\":\"O\",\"Ṏ\":\"O\",\"Ō\":\"O\",\"Ṑ\":\"O\",\"Ṓ\":\"O\",\"Ŏ\":\"O\",\"Ȯ\":\"O\",\"Ȱ\":\"O\",\"Ö\":\"O\",\"Ȫ\":\"O\",\"Ỏ\":\"O\",\"Ő\":\"O\",\"Ǒ\":\"O\",\"Ȍ\":\"O\",\"Ȏ\":\"O\",\"Ơ\":\"O\",\"Ờ\":\"O\",\"Ớ\":\"O\",\"Ỡ\":\"O\",\"Ở\":\"O\",\"Ợ\":\"O\",\"Ọ\":\"O\",\"Ộ\":\"O\",\"Ǫ\":\"O\",\"Ǭ\":\"O\",\"Ø\":\"O\",\"Ǿ\":\"O\",\"Ɔ\":\"O\",\"Ɵ\":\"O\",\"Ꝋ\":\"O\",\"Ꝍ\":\"O\",\"Œ\":\"OE\",\"Ƣ\":\"OI\",\"Ꝏ\":\"OO\",\"Ȣ\":\"OU\",\"Ⓟ\":\"P\",\"Ｐ\":\"P\",\"Ṕ\":\"P\",\"Ṗ\":\"P\",\"Ƥ\":\"P\",\"Ᵽ\":\"P\",\"Ꝑ\":\"P\",\"Ꝓ\":\"P\",\"Ꝕ\":\"P\",\"Ⓠ\":\"Q\",\"Ｑ\":\"Q\",\"Ꝗ\":\"Q\",\"Ꝙ\":\"Q\",\"Ɋ\":\"Q\",\"Ⓡ\":\"R\",\"Ｒ\":\"R\",\"Ŕ\":\"R\",\"Ṙ\":\"R\",\"Ř\":\"R\",\"Ȑ\":\"R\",\"Ȓ\":\"R\",\"Ṛ\":\"R\",\"Ṝ\":\"R\",\"Ŗ\":\"R\",\"Ṟ\":\"R\",\"Ɍ\":\"R\",\"Ɽ\":\"R\",\"Ꝛ\":\"R\",\"Ꞧ\":\"R\",\"Ꞃ\":\"R\",\"Ⓢ\":\"S\",\"Ｓ\":\"S\",\"ẞ\":\"S\",\"Ś\":\"S\",\"Ṥ\":\"S\",\"Ŝ\":\"S\",\"Ṡ\":\"S\",\"Š\":\"S\",\"Ṧ\":\"S\",\"Ṣ\":\"S\",\"Ṩ\":\"S\",\"Ș\":\"S\",\"Ş\":\"S\",\"Ȿ\":\"S\",\"Ꞩ\":\"S\",\"Ꞅ\":\"S\",\"Ⓣ\":\"T\",\"Ｔ\":\"T\",\"Ṫ\":\"T\",\"Ť\":\"T\",\"Ṭ\":\"T\",\"Ț\":\"T\",\"Ţ\":\"T\",\"Ṱ\":\"T\",\"Ṯ\":\"T\",\"Ŧ\":\"T\",\"Ƭ\":\"T\",\"Ʈ\":\"T\",\"Ⱦ\":\"T\",\"Ꞇ\":\"T\",\"Ꜩ\":\"TZ\",\"Ⓤ\":\"U\",\"Ｕ\":\"U\",\"Ù\":\"U\",\"Ú\":\"U\",\"Û\":\"U\",\"Ũ\":\"U\",\"Ṹ\":\"U\",\"Ū\":\"U\",\"Ṻ\":\"U\",\"Ŭ\":\"U\",\"Ü\":\"U\",\"Ǜ\":\"U\",\"Ǘ\":\"U\",\"Ǖ\":\"U\",\"Ǚ\":\"U\",\"Ủ\":\"U\",\"Ů\":\"U\",\"Ű\":\"U\",\"Ǔ\":\"U\",\"Ȕ\":\"U\",\"Ȗ\":\"U\",\"Ư\":\"U\",\"Ừ\":\"U\",\"Ứ\":\"U\",\"Ữ\":\"U\",\"Ử\":\"U\",\"Ự\":\"U\",\"Ụ\":\"U\",\"Ṳ\":\"U\",\"Ų\":\"U\",\"Ṷ\":\"U\",\"Ṵ\":\"U\",\"Ʉ\":\"U\",\"Ⓥ\":\"V\",\"Ｖ\":\"V\",\"Ṽ\":\"V\",\"Ṿ\":\"V\",\"Ʋ\":\"V\",\"Ꝟ\":\"V\",\"Ʌ\":\"V\",\"Ꝡ\":\"VY\",\"Ⓦ\":\"W\",\"Ｗ\":\"W\",\"Ẁ\":\"W\",\"Ẃ\":\"W\",\"Ŵ\":\"W\",\"Ẇ\":\"W\",\"Ẅ\":\"W\",\"Ẉ\":\"W\",\"Ⱳ\":\"W\",\"Ⓧ\":\"X\",\"Ｘ\":\"X\",\"Ẋ\":\"X\",\"Ẍ\":\"X\",\"Ⓨ\":\"Y\",\"Ｙ\":\"Y\",\"Ỳ\":\"Y\",\"Ý\":\"Y\",\"Ŷ\":\"Y\",\"Ỹ\":\"Y\",\"Ȳ\":\"Y\",\"Ẏ\":\"Y\",\"Ÿ\":\"Y\",\"Ỷ\":\"Y\",\"Ỵ\":\"Y\",\"Ƴ\":\"Y\",\"Ɏ\":\"Y\",\"Ỿ\":\"Y\",\"Ⓩ\":\"Z\",\"Ｚ\":\"Z\",\"Ź\":\"Z\",\"Ẑ\":\"Z\",\"Ż\":\"Z\",\"Ž\":\"Z\",\"Ẓ\":\"Z\",\"Ẕ\":\"Z\",\"Ƶ\":\"Z\",\"Ȥ\":\"Z\",\"Ɀ\":\"Z\",\"Ⱬ\":\"Z\",\"Ꝣ\":\"Z\",\"ⓐ\":\"a\",\"ａ\":\"a\",\"ẚ\":\"a\",\"à\":\"a\",\"á\":\"a\",\"â\":\"a\",\"ầ\":\"a\",\"ấ\":\"a\",\"ẫ\":\"a\",\"ẩ\":\"a\",\"ã\":\"a\",\"ā\":\"a\",\"ă\":\"a\",\"ằ\":\"a\",\"ắ\":\"a\",\"ẵ\":\"a\",\"ẳ\":\"a\",\"ȧ\":\"a\",\"ǡ\":\"a\",\"ä\":\"a\",\"ǟ\":\"a\",\"ả\":\"a\",\"å\":\"a\",\"ǻ\":\"a\",\"ǎ\":\"a\",\"ȁ\":\"a\",\"ȃ\":\"a\",\"ạ\":\"a\",\"ậ\":\"a\",\"ặ\":\"a\",\"ḁ\":\"a\",\"ą\":\"a\",\"ⱥ\":\"a\",\"ɐ\":\"a\",\"ꜳ\":\"aa\",\"æ\":\"ae\",\"ǽ\":\"ae\",\"ǣ\":\"ae\",\"ꜵ\":\"ao\",\"ꜷ\":\"au\",\"ꜹ\":\"av\",\"ꜻ\":\"av\",\"ꜽ\":\"ay\",\"ⓑ\":\"b\",\"ｂ\":\"b\",\"ḃ\":\"b\",\"ḅ\":\"b\",\"ḇ\":\"b\",\"ƀ\":\"b\",\"ƃ\":\"b\",\"ɓ\":\"b\",\"ⓒ\":\"c\",\"ｃ\":\"c\",\"ć\":\"c\",\"ĉ\":\"c\",\"ċ\":\"c\",\"č\":\"c\",\"ç\":\"c\",\"ḉ\":\"c\",\"ƈ\":\"c\",\"ȼ\":\"c\",\"ꜿ\":\"c\",\"ↄ\":\"c\",\"ⓓ\":\"d\",\"ｄ\":\"d\",\"ḋ\":\"d\",\"ď\":\"d\",\"ḍ\":\"d\",\"ḑ\":\"d\",\"ḓ\":\"d\",\"ḏ\":\"d\",\"đ\":\"d\",\"ƌ\":\"d\",\"ɖ\":\"d\",\"ɗ\":\"d\",\"ꝺ\":\"d\",\"ǳ\":\"dz\",\"ǆ\":\"dz\",\"ⓔ\":\"e\",\"ｅ\":\"e\",\"è\":\"e\",\"é\":\"e\",\"ê\":\"e\",\"ề\":\"e\",\"ế\":\"e\",\"ễ\":\"e\",\"ể\":\"e\",\"ẽ\":\"e\",\"ē\":\"e\",\"ḕ\":\"e\",\"ḗ\":\"e\",\"ĕ\":\"e\",\"ė\":\"e\",\"ë\":\"e\",\"ẻ\":\"e\",\"ě\":\"e\",\"ȅ\":\"e\",\"ȇ\":\"e\",\"ẹ\":\"e\",\"ệ\":\"e\",\"ȩ\":\"e\",\"ḝ\":\"e\",\"ę\":\"e\",\"ḙ\":\"e\",\"ḛ\":\"e\",\"ɇ\":\"e\",\"ɛ\":\"e\",\"ǝ\":\"e\",\"ⓕ\":\"f\",\"ｆ\":\"f\",\"ḟ\":\"f\",\"ƒ\":\"f\",\"ꝼ\":\"f\",\"ⓖ\":\"g\",\"ｇ\":\"g\",\"ǵ\":\"g\",\"ĝ\":\"g\",\"ḡ\":\"g\",\"ğ\":\"g\",\"ġ\":\"g\",\"ǧ\":\"g\",\"ģ\":\"g\",\"ǥ\":\"g\",\"ɠ\":\"g\",\"ꞡ\":\"g\",\"ᵹ\":\"g\",\"ꝿ\":\"g\",\"ⓗ\":\"h\",\"ｈ\":\"h\",\"ĥ\":\"h\",\"ḣ\":\"h\",\"ḧ\":\"h\",\"ȟ\":\"h\",\"ḥ\":\"h\",\"ḩ\":\"h\",\"ḫ\":\"h\",\"ẖ\":\"h\",\"ħ\":\"h\",\"ⱨ\":\"h\",\"ⱶ\":\"h\",\"ɥ\":\"h\",\"ƕ\":\"hv\",\"ⓘ\":\"i\",\"ｉ\":\"i\",\"ì\":\"i\",\"í\":\"i\",\"î\":\"i\",\"ĩ\":\"i\",\"ī\":\"i\",\"ĭ\":\"i\",\"ï\":\"i\",\"ḯ\":\"i\",\"ỉ\":\"i\",\"ǐ\":\"i\",\"ȉ\":\"i\",\"ȋ\":\"i\",\"ị\":\"i\",\"į\":\"i\",\"ḭ\":\"i\",\"ɨ\":\"i\",\"ı\":\"i\",\"ⓙ\":\"j\",\"ｊ\":\"j\",\"ĵ\":\"j\",\"ǰ\":\"j\",\"ɉ\":\"j\",\"ⓚ\":\"k\",\"ｋ\":\"k\",\"ḱ\":\"k\",\"ǩ\":\"k\",\"ḳ\":\"k\",\"ķ\":\"k\",\"ḵ\":\"k\",\"ƙ\":\"k\",\"ⱪ\":\"k\",\"ꝁ\":\"k\",\"ꝃ\":\"k\",\"ꝅ\":\"k\",\"ꞣ\":\"k\",\"ⓛ\":\"l\",\"ｌ\":\"l\",\"ŀ\":\"l\",\"ĺ\":\"l\",\"ľ\":\"l\",\"ḷ\":\"l\",\"ḹ\":\"l\",\"ļ\":\"l\",\"ḽ\":\"l\",\"ḻ\":\"l\",\"ſ\":\"l\",\"ł\":\"l\",\"ƚ\":\"l\",\"ɫ\":\"l\",\"ⱡ\":\"l\",\"ꝉ\":\"l\",\"ꞁ\":\"l\",\"ꝇ\":\"l\",\"ǉ\":\"lj\",\"ⓜ\":\"m\",\"ｍ\":\"m\",\"ḿ\":\"m\",\"ṁ\":\"m\",\"ṃ\":\"m\",\"ɱ\":\"m\",\"ɯ\":\"m\",\"ⓝ\":\"n\",\"ｎ\":\"n\",\"ǹ\":\"n\",\"ń\":\"n\",\"ñ\":\"n\",\"ṅ\":\"n\",\"ň\":\"n\",\"ṇ\":\"n\",\"ņ\":\"n\",\"ṋ\":\"n\",\"ṉ\":\"n\",\"ƞ\":\"n\",\"ɲ\":\"n\",\"ŉ\":\"n\",\"ꞑ\":\"n\",\"ꞥ\":\"n\",\"ǌ\":\"nj\",\"ⓞ\":\"o\",\"ｏ\":\"o\",\"ò\":\"o\",\"ó\":\"o\",\"ô\":\"o\",\"ồ\":\"o\",\"ố\":\"o\",\"ỗ\":\"o\",\"ổ\":\"o\",\"õ\":\"o\",\"ṍ\":\"o\",\"ȭ\":\"o\",\"ṏ\":\"o\",\"ō\":\"o\",\"ṑ\":\"o\",\"ṓ\":\"o\",\"ŏ\":\"o\",\"ȯ\":\"o\",\"ȱ\":\"o\",\"ö\":\"o\",\"ȫ\":\"o\",\"ỏ\":\"o\",\"ő\":\"o\",\"ǒ\":\"o\",\"ȍ\":\"o\",\"ȏ\":\"o\",\"ơ\":\"o\",\"ờ\":\"o\",\"ớ\":\"o\",\"ỡ\":\"o\",\"ở\":\"o\",\"ợ\":\"o\",\"ọ\":\"o\",\"ộ\":\"o\",\"ǫ\":\"o\",\"ǭ\":\"o\",\"ø\":\"o\",\"ǿ\":\"o\",\"ɔ\":\"o\",\"ꝋ\":\"o\",\"ꝍ\":\"o\",\"ɵ\":\"o\",\"œ\":\"oe\",\"ƣ\":\"oi\",\"ȣ\":\"ou\",\"ꝏ\":\"oo\",\"ⓟ\":\"p\",\"ｐ\":\"p\",\"ṕ\":\"p\",\"ṗ\":\"p\",\"ƥ\":\"p\",\"ᵽ\":\"p\",\"ꝑ\":\"p\",\"ꝓ\":\"p\",\"ꝕ\":\"p\",\"ⓠ\":\"q\",\"ｑ\":\"q\",\"ɋ\":\"q\",\"ꝗ\":\"q\",\"ꝙ\":\"q\",\"ⓡ\":\"r\",\"ｒ\":\"r\",\"ŕ\":\"r\",\"ṙ\":\"r\",\"ř\":\"r\",\"ȑ\":\"r\",\"ȓ\":\"r\",\"ṛ\":\"r\",\"ṝ\":\"r\",\"ŗ\":\"r\",\"ṟ\":\"r\",\"ɍ\":\"r\",\"ɽ\":\"r\",\"ꝛ\":\"r\",\"ꞧ\":\"r\",\"ꞃ\":\"r\",\"ⓢ\":\"s\",\"ｓ\":\"s\",\"ß\":\"s\",\"ś\":\"s\",\"ṥ\":\"s\",\"ŝ\":\"s\",\"ṡ\":\"s\",\"š\":\"s\",\"ṧ\":\"s\",\"ṣ\":\"s\",\"ṩ\":\"s\",\"ș\":\"s\",\"ş\":\"s\",\"ȿ\":\"s\",\"ꞩ\":\"s\",\"ꞅ\":\"s\",\"ẛ\":\"s\",\"ⓣ\":\"t\",\"ｔ\":\"t\",\"ṫ\":\"t\",\"ẗ\":\"t\",\"ť\":\"t\",\"ṭ\":\"t\",\"ț\":\"t\",\"ţ\":\"t\",\"ṱ\":\"t\",\"ṯ\":\"t\",\"ŧ\":\"t\",\"ƭ\":\"t\",\"ʈ\":\"t\",\"ⱦ\":\"t\",\"ꞇ\":\"t\",\"ꜩ\":\"tz\",\"ⓤ\":\"u\",\"ｕ\":\"u\",\"ù\":\"u\",\"ú\":\"u\",\"û\":\"u\",\"ũ\":\"u\",\"ṹ\":\"u\",\"ū\":\"u\",\"ṻ\":\"u\",\"ŭ\":\"u\",\"ü\":\"u\",\"ǜ\":\"u\",\"ǘ\":\"u\",\"ǖ\":\"u\",\"ǚ\":\"u\",\"ủ\":\"u\",\"ů\":\"u\",\"ű\":\"u\",\"ǔ\":\"u\",\"ȕ\":\"u\",\"ȗ\":\"u\",\"ư\":\"u\",\"ừ\":\"u\",\"ứ\":\"u\",\"ữ\":\"u\",\"ử\":\"u\",\"ự\":\"u\",\"ụ\":\"u\",\"ṳ\":\"u\",\"ų\":\"u\",\"ṷ\":\"u\",\"ṵ\":\"u\",\"ʉ\":\"u\",\"ⓥ\":\"v\",\"ｖ\":\"v\",\"ṽ\":\"v\",\"ṿ\":\"v\",\"ʋ\":\"v\",\"ꝟ\":\"v\",\"ʌ\":\"v\",\"ꝡ\":\"vy\",\"ⓦ\":\"w\",\"ｗ\":\"w\",\"ẁ\":\"w\",\"ẃ\":\"w\",\"ŵ\":\"w\",\"ẇ\":\"w\",\"ẅ\":\"w\",\"ẘ\":\"w\",\"ẉ\":\"w\",\"ⱳ\":\"w\",\"ⓧ\":\"x\",\"ｘ\":\"x\",\"ẋ\":\"x\",\"ẍ\":\"x\",\"ⓨ\":\"y\",\"ｙ\":\"y\",\"ỳ\":\"y\",\"ý\":\"y\",\"ŷ\":\"y\",\"ỹ\":\"y\",\"ȳ\":\"y\",\"ẏ\":\"y\",\"ÿ\":\"y\",\"ỷ\":\"y\",\"ẙ\":\"y\",\"ỵ\":\"y\",\"ƴ\":\"y\",\"ɏ\":\"y\",\"ỿ\":\"y\",\"ⓩ\":\"z\",\"ｚ\":\"z\",\"ź\":\"z\",\"ẑ\":\"z\",\"ż\":\"z\",\"ž\":\"z\",\"ẓ\":\"z\",\"ẕ\":\"z\",\"ƶ\":\"z\",\"ȥ\":\"z\",\"ɀ\":\"z\",\"ⱬ\":\"z\",\"ꝣ\":\"z\",\"Ά\":\"Α\",\"Έ\":\"Ε\",\"Ή\":\"Η\",\"Ί\":\"Ι\",\"Ϊ\":\"Ι\",\"Ό\":\"Ο\",\"Ύ\":\"Υ\",\"Ϋ\":\"Υ\",\"Ώ\":\"Ω\",\"ά\":\"α\",\"έ\":\"ε\",\"ή\":\"η\",\"ί\":\"ι\",\"ϊ\":\"ι\",\"ΐ\":\"ι\",\"ό\":\"ο\",\"ύ\":\"υ\",\"ϋ\":\"υ\",\"ΰ\":\"υ\",\"ώ\":\"ω\",\"ς\":\"σ\",\"’\":\"'\"}}),e.define(\"select2/data/base\",[\"../utils\"],function(i){function n(e,t){n.__super__.constructor.call(this)}return i.Extend(n,i.Observable),n.prototype.current=function(e){throw new Error(\"The `current` method must be defined in child classes.\")},n.prototype.query=function(e,t){throw new Error(\"The `query` method must be defined in child classes.\")},n.prototype.bind=function(e,t){},n.prototype.destroy=function(){},n.prototype.generateResultId=function(e,t){var n=e.id+\"-result-\";return n+=i.generateChars(4),null!=t.id?n+=\"-\"+t.id.toString():n+=\"-\"+i.generateChars(4),n},n}),e.define(\"select2/data/select\",[\"./base\",\"../utils\",\"jquery\"],function(e,a,l){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return a.Extend(n,e),n.prototype.current=function(e){var n=[],i=this;this.$element.find(\":selected\").each(function(){var e=l(this),t=i.item(e);n.push(t)}),e(n)},n.prototype.select=function(r){var o=this;if(r.selected=!0,l(r.element).is(\"option\"))return r.element.selected=!0,void this.$element.trigger(\"input\").trigger(\"change\");if(this.$element.prop(\"multiple\"))this.current(function(e){var t=[];(r=[r]).push.apply(r,e);for(var n=0;n<r.length;n++){var i=r[n].id;-1===l.inArray(i,t)&&t.push(i)}o.$element.val(t),o.$element.trigger(\"input\").trigger(\"change\")});else{var e=r.id;this.$element.val(e),this.$element.trigger(\"input\").trigger(\"change\")}},n.prototype.unselect=function(r){var o=this;if(this.$element.prop(\"multiple\")){if(r.selected=!1,l(r.element).is(\"option\"))return r.element.selected=!1,void this.$element.trigger(\"input\").trigger(\"change\");this.current(function(e){for(var t=[],n=0;n<e.length;n++){var i=e[n].id;i!==r.id&&-1===l.inArray(i,t)&&t.push(i)}o.$element.val(t),o.$element.trigger(\"input\").trigger(\"change\")})}},n.prototype.bind=function(e,t){var n=this;(this.container=e).on(\"select\",function(e){n.select(e.data)}),e.on(\"unselect\",function(e){n.unselect(e.data)})},n.prototype.destroy=function(){this.$element.find(\"*\").each(function(){a.RemoveData(this)})},n.prototype.query=function(i,e){var r=[],o=this;this.$element.children().each(function(){var e=l(this);if(e.is(\"option\")||e.is(\"optgroup\")){var t=o.item(e),n=o.matches(i,t);null!==n&&r.push(n)}}),e({results:r})},n.prototype.addOptions=function(e){a.appendMany(this.$element,e)},n.prototype.option=function(e){var t;e.children?(t=document.createElement(\"optgroup\")).label=e.text:void 0!==(t=document.createElement(\"option\")).textContent?t.textContent=e.text:t.innerText=e.text,void 0!==e.id&&(t.value=e.id),e.disabled&&(t.disabled=!0),e.selected&&(t.selected=!0),e.title&&(t.title=e.title);var n=l(t),i=this._normalizeItem(e);return i.element=t,a.StoreData(t,\"data\",i),n},n.prototype.item=function(e){var t={};if(null!=(t=a.GetData(e[0],\"data\")))return t;if(e.is(\"option\"))t={id:e.val(),text:e.text(),disabled:e.prop(\"disabled\"),selected:e.prop(\"selected\"),title:e.prop(\"title\")};else if(e.is(\"optgroup\")){t={text:e.prop(\"label\"),children:[],title:e.prop(\"title\")};for(var n=e.children(\"option\"),i=[],r=0;r<n.length;r++){var o=l(n[r]),s=this.item(o);i.push(s)}t.children=i}return(t=this._normalizeItem(t)).element=e[0],a.StoreData(e[0],\"data\",t),t},n.prototype._normalizeItem=function(e){e!==Object(e)&&(e={id:e,text:e});return null!=(e=l.extend({},{text:\"\"},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&null!=this.container&&(e._resultId=this.generateResultId(this.container,e)),l.extend({},{selected:!1,disabled:!1},e)},n.prototype.matches=function(e,t){return this.options.get(\"matcher\")(e,t)},n}),e.define(\"select2/data/array\",[\"./select\",\"../utils\",\"jquery\"],function(e,f,g){function i(e,t){this._dataToConvert=t.get(\"data\")||[],i.__super__.constructor.call(this,e,t)}return f.Extend(i,e),i.prototype.bind=function(e,t){i.__super__.bind.call(this,e,t),this.addOptions(this.convertToOptions(this._dataToConvert))},i.prototype.select=function(n){var e=this.$element.find(\"option\").filter(function(e,t){return t.value==n.id.toString()});0===e.length&&(e=this.option(n),this.addOptions(e)),i.__super__.select.call(this,n)},i.prototype.convertToOptions=function(e){var t=this,n=this.$element.find(\"option\"),i=n.map(function(){return t.item(g(this)).id}).get(),r=[];function o(e){return function(){return g(this).val()==e.id}}for(var s=0;s<e.length;s++){var a=this._normalizeItem(e[s]);if(0<=g.inArray(a.id,i)){var l=n.filter(o(a)),c=this.item(l),u=g.extend(!0,{},a,c),d=this.option(u);l.replaceWith(d)}else{var p=this.option(a);if(a.children){var h=this.convertToOptions(a.children);f.appendMany(p,h)}r.push(p)}}return r},i}),e.define(\"select2/data/ajax\",[\"./array\",\"../utils\",\"jquery\"],function(e,t,o){function n(e,t){this.ajaxOptions=this._applyDefaults(t.get(\"ajax\")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),n.__super__.constructor.call(this,e,t)}return t.Extend(n,e),n.prototype._applyDefaults=function(e){var t={data:function(e){return o.extend({},e,{q:e.term})},transport:function(e,t,n){var i=o.ajax(e);return i.then(t),i.fail(n),i}};return o.extend({},t,e,!0)},n.prototype.processResults=function(e){return e},n.prototype.query=function(n,i){var r=this;null!=this._request&&(o.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var t=o.extend({type:\"GET\"},this.ajaxOptions);function e(){var e=t.transport(t,function(e){var t=r.processResults(e,n);r.options.get(\"debug\")&&window.console&&console.error&&(t&&t.results&&o.isArray(t.results)||console.error(\"Select2: The AJAX results did not return an array in the `results` key of the response.\")),i(t)},function(){\"status\"in e&&(0===e.status||\"0\"===e.status)||r.trigger(\"results:message\",{message:\"errorLoading\"})});r._request=e}\"function\"==typeof t.url&&(t.url=t.url.call(this.$element,n)),\"function\"==typeof t.data&&(t.data=t.data.call(this.$element,n)),this.ajaxOptions.delay&&null!=n.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(e,this.ajaxOptions.delay)):e()},n}),e.define(\"select2/data/tags\",[\"jquery\"],function(u){function e(e,t,n){var i=n.get(\"tags\"),r=n.get(\"createTag\");void 0!==r&&(this.createTag=r);var o=n.get(\"insertTag\");if(void 0!==o&&(this.insertTag=o),e.call(this,t,n),u.isArray(i))for(var s=0;s<i.length;s++){var a=i[s],l=this._normalizeItem(a),c=this.option(l);this.$element.append(c)}}return e.prototype.query=function(e,c,u){var d=this;this._removeOldTags(),null!=c.term&&null==c.page?e.call(this,c,function e(t,n){for(var i=t.results,r=0;r<i.length;r++){var o=i[r],s=null!=o.children&&!e({results:o.children},!0);if((o.text||\"\").toUpperCase()===(c.term||\"\").toUpperCase()||s)return!n&&(t.data=i,void u(t))}if(n)return!0;var a=d.createTag(c);if(null!=a){var l=d.option(a);l.attr(\"data-select2-tag\",!0),d.addOptions([l]),d.insertTag(i,a)}t.results=i,u(t)}):e.call(this,c,u)},e.prototype.createTag=function(e,t){var n=u.trim(t.term);return\"\"===n?null:{id:n,text:n}},e.prototype.insertTag=function(e,t,n){t.unshift(n)},e.prototype._removeOldTags=function(e){this.$element.find(\"option[data-select2-tag]\").each(function(){this.selected||u(this).remove()})},e}),e.define(\"select2/data/tokenizer\",[\"jquery\"],function(d){function e(e,t,n){var i=n.get(\"tokenizer\");void 0!==i&&(this.tokenizer=i),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(\".select2-search__field\")},e.prototype.query=function(e,t,n){var i=this;t.term=t.term||\"\";var r=this.tokenizer(t,this.options,function(e){var t=i._normalizeItem(e);if(!i.$element.find(\"option\").filter(function(){return d(this).val()===t.id}).length){var n=i.option(t);n.attr(\"data-select2-tag\",!0),i._removeOldTags(),i.addOptions([n])}!function(e){i.trigger(\"select\",{data:e})}(t)});r.term!==t.term&&(this.$search.length&&(this.$search.val(r.term),this.$search.trigger(\"focus\")),t.term=r.term),e.call(this,t,n)},e.prototype.tokenizer=function(e,t,n,i){for(var r=n.get(\"tokenSeparators\")||[],o=t.term,s=0,a=this.createTag||function(e){return{id:e.term,text:e.term}};s<o.length;){var l=o[s];if(-1!==d.inArray(l,r)){var c=o.substr(0,s),u=a(d.extend({},t,{term:c}));null!=u?(i(u),o=o.substr(s+1)||\"\",s=0):s++}else s++}return{term:o}},e}),e.define(\"select2/data/minimumInputLength\",[],function(){function e(e,t,n){this.minimumInputLength=n.get(\"minimumInputLength\"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||\"\",t.term.length<this.minimumInputLength?this.trigger(\"results:message\",{message:\"inputTooShort\",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define(\"select2/data/maximumInputLength\",[],function(){function e(e,t,n){this.maximumInputLength=n.get(\"maximumInputLength\"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||\"\",0<this.maximumInputLength&&t.term.length>this.maximumInputLength?this.trigger(\"results:message\",{message:\"inputTooLong\",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define(\"select2/data/maximumSelectionLength\",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get(\"maximumSelectionLength\"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on(\"select\",function(){i._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected(function(){e.call(i,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var i=this;this.current(function(e){var t=null!=e?e.length:0;0<i.maximumSelectionLength&&t>=i.maximumSelectionLength?i.trigger(\"results:message\",{message:\"maximumSelected\",args:{maximum:i.maximumSelectionLength}}):n&&n()})},e}),e.define(\"select2/dropdown\",[\"jquery\",\"./utils\"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('<span class=\"select2-dropdown\"><span class=\"select2-results\"></span></span>');return e.attr(\"dir\",this.options.get(\"dir\")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define(\"select2/dropdown/search\",[\"jquery\",\"../utils\"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('<span class=\"select2-search select2-search--dropdown\"><input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\" autocomplete=\"off\" autocorrect=\"off\" autocapitalize=\"none\" spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" /></span>');return this.$searchContainer=n,this.$search=n.find(\"input\"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var i=this,r=t.id+\"-results\";e.call(this,t,n),this.$search.on(\"keydown\",function(e){i.trigger(\"keypress\",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on(\"input\",function(e){o(this).off(\"keyup\")}),this.$search.on(\"keyup input\",function(e){i.handleSearch(e)}),t.on(\"open\",function(){i.$search.attr(\"tabindex\",0),i.$search.attr(\"aria-controls\",r),i.$search.trigger(\"focus\"),window.setTimeout(function(){i.$search.trigger(\"focus\")},0)}),t.on(\"close\",function(){i.$search.attr(\"tabindex\",-1),i.$search.removeAttr(\"aria-controls\"),i.$search.removeAttr(\"aria-activedescendant\"),i.$search.val(\"\"),i.$search.trigger(\"blur\")}),t.on(\"focus\",function(){t.isOpen()||i.$search.trigger(\"focus\")}),t.on(\"results:all\",function(e){null!=e.query.term&&\"\"!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass(\"select2-search--hide\"):i.$searchContainer.addClass(\"select2-search--hide\"))}),t.on(\"results:focus\",function(e){e.data._resultId?i.$search.attr(\"aria-activedescendant\",e.data._resultId):i.$search.removeAttr(\"aria-activedescendant\")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger(\"query\",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define(\"select2/dropdown/hidePlaceholder\",[],function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get(\"placeholder\")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return\"string\"==typeof t&&(t={id:\"\",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;0<=i;i--){var r=t[i];this.placeholder.id===r.id&&n.splice(i,1)}return n},e}),e.define(\"select2/dropdown/infiniteScroll\",[\"jquery\"],function(n){function e(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on(\"query\",function(e){i.lastParams=e,i.loading=!0}),t.on(\"query:append\",function(e){i.lastParams=e,i.loading=!0}),this.$results.on(\"scroll\",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger(\"query:append\",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('<li class=\"select2-results__option select2-results__option--load-more\"role=\"option\" aria-disabled=\"true\"></li>'),t=this.options.get(\"translations\").get(\"loadingMore\");return e.html(t(this.lastParams)),e},e}),e.define(\"select2/dropdown/attachBody\",[\"jquery\",\"../utils\"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get(\"dropdownParent\")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on(\"open\",function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)}),t.on(\"close\",function(){i._hideDropdown(),i._detachPositioningHandler(t)}),this.$dropdownContainer.on(\"mousedown\",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr(\"class\",n.attr(\"class\")),t.removeClass(\"select2\"),t.addClass(\"select2-container--open\"),t.css({position:\"absolute\",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(\"<span></span>\"),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on(\"results:all\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"results:append\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"results:message\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"select\",function(){n._positionDropdown(),n._resizeDropdown()}),t.on(\"unselect\",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,i=\"scroll.select2.\"+t.id,r=\"resize.select2.\"+t.id,o=\"orientationchange.select2.\"+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,\"select2-scroll-position\",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(i,function(e){var t=a.GetData(this,\"select2-scroll-position\");f(this).scrollTop(t.y)}),f(window).on(i+\" \"+r+\" \"+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n=\"scroll.select2.\"+t.id,i=\"resize.select2.\"+t.id,r=\"orientationchange.select2.\"+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+\" \"+i+\" \"+r)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass(\"select2-dropdown--above\"),n=this.$dropdown.hasClass(\"select2-dropdown--below\"),i=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=r.top,o.bottom=r.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=a<r.top-s,u=l>r.bottom+s,d={left:r.left,top:o.bottom},p=this.$dropdownParent;\"static\"===p.css(\"position\")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(i=\"below\"),u||!c||t?!c&&u&&t&&(i=\"below\"):i=\"above\",(\"above\"==i||t&&\"below\"!==i)&&(d.top=o.top-h.top-s),null!=i&&(this.$dropdown.removeClass(\"select2-dropdown--below select2-dropdown--above\").addClass(\"select2-dropdown--\"+i),this.$container.removeClass(\"select2-container--below select2-container--above\").addClass(\"select2-container--\"+i)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+\"px\"};this.options.get(\"dropdownAutoWidth\")&&(e.minWidth=e.width,e.position=\"relative\",e.width=\"auto\"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define(\"select2/dropdown/minimumResultsForSearch\",[],function(){function e(e,t,n,i){this.minimumResultsForSearch=n.get(\"minimumResultsForSearch\"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,i=0;i<t.length;i++){var r=t[i];r.children?n+=e(r.children):n++}return n}(t.data.results)<this.minimumResultsForSearch)&&e.call(this,t)},e}),e.define(\"select2/dropdown/selectOnClose\",[\"../utils\"],function(o){function e(){}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on(\"close\",function(e){i._handleSelectOnClose(e)})},e.prototype._handleSelectOnClose=function(e,t){if(t&&null!=t.originalSelect2Event){var n=t.originalSelect2Event;if(\"select\"===n._type||\"unselect\"===n._type)return}var i=this.getHighlightedResults();if(!(i.length<1)){var r=o.GetData(i[0],\"data\");null!=r.element&&r.element.selected||null==r.element&&r.selected||this.trigger(\"select\",{data:r})}},e}),e.define(\"select2/dropdown/closeOnSelect\",[],function(){function e(){}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on(\"select\",function(e){i._selectTriggered(e)}),t.on(\"unselect\",function(e){i._selectTriggered(e)})},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&(n.ctrlKey||n.metaKey)||this.trigger(\"close\",{originalEvent:n,originalSelect2Event:t})},e}),e.define(\"select2/i18n/en\",[],function(){return{errorLoading:function(){return\"The results could not be loaded.\"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=\"Please delete \"+t+\" character\";return 1!=t&&(n+=\"s\"),n},inputTooShort:function(e){return\"Please enter \"+(e.minimum-e.input.length)+\" or more characters\"},loadingMore:function(){return\"Loading more results…\"},maximumSelected:function(e){var t=\"You can only select \"+e.maximum+\" item\";return 1!=e.maximum&&(t+=\"s\"),t},noResults:function(){return\"No results found\"},searching:function(){return\"Searching…\"},removeAllItems:function(){return\"Remove all items\"}}}),e.define(\"select2/defaults\",[\"jquery\",\"require\",\"./results\",\"./selection/single\",\"./selection/multiple\",\"./selection/placeholder\",\"./selection/allowClear\",\"./selection/search\",\"./selection/eventRelay\",\"./utils\",\"./translation\",\"./diacritics\",\"./data/select\",\"./data/array\",\"./data/ajax\",\"./data/tags\",\"./data/tokenizer\",\"./data/minimumInputLength\",\"./data/maximumInputLength\",\"./data/maximumSelectionLength\",\"./dropdown\",\"./dropdown/search\",\"./dropdown/hidePlaceholder\",\"./dropdown/infiniteScroll\",\"./dropdown/attachBody\",\"./dropdown/minimumResultsForSearch\",\"./dropdown/selectOnClose\",\"./dropdown/closeOnSelect\",\"./i18n/en\"],function(c,u,d,p,h,f,g,m,v,y,s,t,_,w,$,b,A,x,D,S,C,E,O,T,q,j,L,I,e){function n(){this.reset()}return n.prototype.apply=function(e){if(null==(e=c.extend(!0,{},this.defaults,e)).dataAdapter){if(null!=e.ajax?e.dataAdapter=$:null!=e.data?e.dataAdapter=w:e.dataAdapter=_,0<e.minimumInputLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,x)),0<e.maximumInputLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,D)),0<e.maximumSelectionLength&&(e.dataAdapter=y.Decorate(e.dataAdapter,S)),e.tags&&(e.dataAdapter=y.Decorate(e.dataAdapter,b)),null==e.tokenSeparators&&null==e.tokenizer||(e.dataAdapter=y.Decorate(e.dataAdapter,A)),null!=e.query){var t=u(e.amdBase+\"compat/query\");e.dataAdapter=y.Decorate(e.dataAdapter,t)}if(null!=e.initSelection){var n=u(e.amdBase+\"compat/initSelection\");e.dataAdapter=y.Decorate(e.dataAdapter,n)}}if(null==e.resultsAdapter&&(e.resultsAdapter=d,null!=e.ajax&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,T)),null!=e.placeholder&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,O)),e.selectOnClose&&(e.resultsAdapter=y.Decorate(e.resultsAdapter,L))),null==e.dropdownAdapter){if(e.multiple)e.dropdownAdapter=C;else{var i=y.Decorate(C,E);e.dropdownAdapter=i}if(0!==e.minimumResultsForSearch&&(e.dropdownAdapter=y.Decorate(e.dropdownAdapter,j)),e.closeOnSelect&&(e.dropdownAdapter=y.Decorate(e.dropdownAdapter,I)),null!=e.dropdownCssClass||null!=e.dropdownCss||null!=e.adaptDropdownCssClass){var r=u(e.amdBase+\"compat/dropdownCss\");e.dropdownAdapter=y.Decorate(e.dropdownAdapter,r)}e.dropdownAdapter=y.Decorate(e.dropdownAdapter,q)}if(null==e.selectionAdapter){if(e.multiple?e.selectionAdapter=h:e.selectionAdapter=p,null!=e.placeholder&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,f)),e.allowClear&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,g)),e.multiple&&(e.selectionAdapter=y.Decorate(e.selectionAdapter,m)),null!=e.containerCssClass||null!=e.containerCss||null!=e.adaptContainerCssClass){var o=u(e.amdBase+\"compat/containerCss\");e.selectionAdapter=y.Decorate(e.selectionAdapter,o)}e.selectionAdapter=y.Decorate(e.selectionAdapter,v)}e.language=this._resolveLanguage(e.language),e.language.push(\"en\");for(var s=[],a=0;a<e.language.length;a++){var l=e.language[a];-1===s.indexOf(l)&&s.push(l)}return e.language=s,e.translations=this._processTranslations(e.language,e.debug),e},n.prototype.reset=function(){function a(e){return e.replace(/[^\\u0000-\\u007E]/g,function(e){return t[e]||e})}this.defaults={amdBase:\"./\",amdLanguageBase:\"./i18n/\",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:y.escapeMarkup,language:{},matcher:function e(t,n){if(\"\"===c.trim(t.term))return n;if(n.children&&0<n.children.length){for(var i=c.extend(!0,{},n),r=n.children.length-1;0<=r;r--)null==e(t,n.children[r])&&i.children.splice(r,1);return 0<i.children.length?i:e(t,i)}var o=a(n.text).toUpperCase(),s=a(t.term).toUpperCase();return-1<o.indexOf(s)?n:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,scrollAfterSelect:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:\"default\",width:\"resolve\"}},n.prototype.applyFromElement=function(e,t){var n=e.language,i=this.defaults.language,r=t.prop(\"lang\"),o=t.closest(\"[lang]\").prop(\"lang\"),s=Array.prototype.concat.call(this._resolveLanguage(r),this._resolveLanguage(n),this._resolveLanguage(i),this._resolveLanguage(o));return e.language=s,e},n.prototype._resolveLanguage=function(e){if(!e)return[];if(c.isEmptyObject(e))return[];if(c.isPlainObject(e))return[e];var t;t=c.isArray(e)?e:[e];for(var n=[],i=0;i<t.length;i++)if(n.push(t[i]),\"string\"==typeof t[i]&&0<t[i].indexOf(\"-\")){var r=t[i].split(\"-\")[0];n.push(r)}return n},n.prototype._processTranslations=function(e,t){for(var n=new s,i=0;i<e.length;i++){var r=new s,o=e[i];if(\"string\"==typeof o)try{r=s.loadPath(o)}catch(e){try{o=this.defaults.amdLanguageBase+o,r=s.loadPath(o)}catch(e){t&&window.console&&console.warn&&console.warn('Select2: The language file for \"'+o+'\" could not be automatically loaded. A fallback will be used instead.')}}else r=c.isPlainObject(o)?new s(o):o;n.extend(r)}return n},n.prototype.set=function(e,t){var n={};n[c.camelCase(e)]=t;var i=y._convertData(n);c.extend(!0,this.defaults,i)},new n}),e.define(\"select2/options\",[\"require\",\"jquery\",\"./defaults\",\"./utils\"],function(i,d,r,p){function e(e,t){if(this.options=e,null!=t&&this.fromElement(t),null!=t&&(this.options=r.applyFromElement(this.options,t)),this.options=r.apply(this.options),t&&t.is(\"input\")){var n=i(this.get(\"amdBase\")+\"compat/inputData\");this.options.dataAdapter=p.Decorate(this.options.dataAdapter,n)}}return e.prototype.fromElement=function(e){var t=[\"select2\"];null==this.options.multiple&&(this.options.multiple=e.prop(\"multiple\")),null==this.options.disabled&&(this.options.disabled=e.prop(\"disabled\")),null==this.options.dir&&(e.prop(\"dir\")?this.options.dir=e.prop(\"dir\"):e.closest(\"[dir]\").prop(\"dir\")?this.options.dir=e.closest(\"[dir]\").prop(\"dir\"):this.options.dir=\"ltr\"),e.prop(\"disabled\",this.options.disabled),e.prop(\"multiple\",this.options.multiple),p.GetData(e[0],\"select2Tags\")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags=\"true\"` attributes and will be removed in future versions of Select2.'),p.StoreData(e[0],\"data\",p.GetData(e[0],\"select2Tags\")),p.StoreData(e[0],\"tags\",!0)),p.GetData(e[0],\"ajaxUrl\")&&(this.options.debug&&window.console&&console.warn&&console.warn(\"Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2.\"),e.attr(\"ajax--url\",p.GetData(e[0],\"ajaxUrl\")),p.StoreData(e[0],\"ajax-Url\",p.GetData(e[0],\"ajaxUrl\")));var n={};function i(e,t){return t.toUpperCase()}for(var r=0;r<e[0].attributes.length;r++){var o=e[0].attributes[r].name,s=\"data-\";if(o.substr(0,s.length)==s){var a=o.substring(s.length),l=p.GetData(e[0],a);n[a.replace(/-([a-z])/g,i)]=l}}d.fn.jquery&&\"1.\"==d.fn.jquery.substr(0,2)&&e[0].dataset&&(n=d.extend(!0,{},e[0].dataset,n));var c=d.extend(!0,{},p.GetData(e[0]),n);for(var u in c=p._convertData(c))-1<d.inArray(u,t)||(d.isPlainObject(this.options[u])?d.extend(this.options[u],c[u]):this.options[u]=c[u]);return this},e.prototype.get=function(e){return this.options[e]},e.prototype.set=function(e,t){this.options[e]=t},e}),e.define(\"select2/core\",[\"jquery\",\"./options\",\"./utils\",\"./keys\"],function(o,c,u,i){var d=function(e,t){null!=u.GetData(e[0],\"select2\")&&u.GetData(e[0],\"select2\").destroy(),this.$element=e,this.id=this._generateId(e),t=t||{},this.options=new c(t,e),d.__super__.constructor.call(this);var n=e.attr(\"tabindex\")||0;u.StoreData(e[0],\"old-tabindex\",n),e.attr(\"tabindex\",\"-1\");var i=this.options.get(\"dataAdapter\");this.dataAdapter=new i(e,this.options);var r=this.render();this._placeContainer(r);var o=this.options.get(\"selectionAdapter\");this.selection=new o(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,r);var s=this.options.get(\"dropdownAdapter\");this.dropdown=new s(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,r);var a=this.options.get(\"resultsAdapter\");this.results=new a(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var l=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(e){l.trigger(\"selection:update\",{data:e})}),e.addClass(\"select2-hidden-accessible\"),e.attr(\"aria-hidden\",\"true\"),this._syncAttributes(),u.StoreData(e[0],\"select2\",this),e.data(\"select2\",this)};return u.Extend(d,u.Observable),d.prototype._generateId=function(e){return\"select2-\"+(null!=e.attr(\"id\")?e.attr(\"id\"):null!=e.attr(\"name\")?e.attr(\"name\")+\"-\"+u.generateChars(2):u.generateChars(4)).replace(/(:|\\.|\\[|\\]|,)/g,\"\")},d.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get(\"width\"));null!=t&&e.css(\"width\",t)},d.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if(\"resolve\"==t){var i=this._resolveWidth(e,\"style\");return null!=i?i:this._resolveWidth(e,\"element\")}if(\"element\"==t){var r=e.outerWidth(!1);return r<=0?\"auto\":r+\"px\"}if(\"style\"!=t)return\"computedstyle\"!=t?t:window.getComputedStyle(e[0]).width;var o=e.attr(\"style\");if(\"string\"!=typeof o)return null;for(var s=o.split(\";\"),a=0,l=s.length;a<l;a+=1){var c=s[a].replace(/\\s/g,\"\").match(n);if(null!==c&&1<=c.length)return c[1]}return null},d.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},d.prototype._registerDomEvents=function(){var t=this;this.$element.on(\"change.select2\",function(){t.dataAdapter.current(function(e){t.trigger(\"selection:update\",{data:e})})}),this.$element.on(\"focus.select2\",function(e){t.trigger(\"focus\",e)}),this._syncA=u.bind(this._syncAttributes,this),this._syncS=u.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent(\"onpropertychange\",this._syncA);var e=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=e?(this._observer=new e(function(e){t._syncA(),t._syncS(null,e)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener(\"DOMAttrModified\",t._syncA,!1),this.$element[0].addEventListener(\"DOMNodeInserted\",t._syncS,!1),this.$element[0].addEventListener(\"DOMNodeRemoved\",t._syncS,!1))},d.prototype._registerDataEvents=function(){var n=this;this.dataAdapter.on(\"*\",function(e,t){n.trigger(e,t)})},d.prototype._registerSelectionEvents=function(){var n=this,i=[\"toggle\",\"focus\"];this.selection.on(\"toggle\",function(){n.toggleDropdown()}),this.selection.on(\"focus\",function(e){n.focus(e)}),this.selection.on(\"*\",function(e,t){-1===o.inArray(e,i)&&n.trigger(e,t)})},d.prototype._registerDropdownEvents=function(){var n=this;this.dropdown.on(\"*\",function(e,t){n.trigger(e,t)})},d.prototype._registerResultsEvents=function(){var n=this;this.results.on(\"*\",function(e,t){n.trigger(e,t)})},d.prototype._registerEvents=function(){var n=this;this.on(\"open\",function(){n.$container.addClass(\"select2-container--open\")}),this.on(\"close\",function(){n.$container.removeClass(\"select2-container--open\")}),this.on(\"enable\",function(){n.$container.removeClass(\"select2-container--disabled\")}),this.on(\"disable\",function(){n.$container.addClass(\"select2-container--disabled\")}),this.on(\"blur\",function(){n.$container.removeClass(\"select2-container--focus\")}),this.on(\"query\",function(t){n.isOpen()||n.trigger(\"open\",{}),this.dataAdapter.query(t,function(e){n.trigger(\"results:all\",{data:e,query:t})})}),this.on(\"query:append\",function(t){this.dataAdapter.query(t,function(e){n.trigger(\"results:append\",{data:e,query:t})})}),this.on(\"keypress\",function(e){var t=e.which;n.isOpen()?t===i.ESC||t===i.TAB||t===i.UP&&e.altKey?(n.close(e),e.preventDefault()):t===i.ENTER?(n.trigger(\"results:select\",{}),e.preventDefault()):t===i.SPACE&&e.ctrlKey?(n.trigger(\"results:toggle\",{}),e.preventDefault()):t===i.UP?(n.trigger(\"results:previous\",{}),e.preventDefault()):t===i.DOWN&&(n.trigger(\"results:next\",{}),e.preventDefault()):(t===i.ENTER||t===i.SPACE||t===i.DOWN&&e.altKey)&&(n.open(),e.preventDefault())})},d.prototype._syncAttributes=function(){this.options.set(\"disabled\",this.$element.prop(\"disabled\")),this.isDisabled()?(this.isOpen()&&this.close(),this.trigger(\"disable\",{})):this.trigger(\"enable\",{})},d.prototype._isChangeMutation=function(e,t){var n=!1,i=this;if(!e||!e.target||\"OPTION\"===e.target.nodeName||\"OPTGROUP\"===e.target.nodeName){if(t)if(t.addedNodes&&0<t.addedNodes.length)for(var r=0;r<t.addedNodes.length;r++){t.addedNodes[r].selected&&(n=!0)}else t.removedNodes&&0<t.removedNodes.length?n=!0:o.isArray(t)&&o.each(t,function(e,t){if(i._isChangeMutation(e,t))return!(n=!0)});else n=!0;return n}},d.prototype._syncSubtree=function(e,t){var n=this._isChangeMutation(e,t),i=this;n&&this.dataAdapter.current(function(e){i.trigger(\"selection:update\",{data:e})})},d.prototype.trigger=function(e,t){var n=d.__super__.trigger,i={open:\"opening\",close:\"closing\",select:\"selecting\",unselect:\"unselecting\",clear:\"clearing\"};if(void 0===t&&(t={}),e in i){var r=i[e],o={prevented:!1,name:e,args:t};if(n.call(this,r,o),o.prevented)return void(t.prevented=!0)}n.call(this,e,t)},d.prototype.toggleDropdown=function(){this.isDisabled()||(this.isOpen()?this.close():this.open())},d.prototype.open=function(){this.isOpen()||this.isDisabled()||this.trigger(\"query\",{})},d.prototype.close=function(e){this.isOpen()&&this.trigger(\"close\",{originalEvent:e})},d.prototype.isEnabled=function(){return!this.isDisabled()},d.prototype.isDisabled=function(){return this.options.get(\"disabled\")},d.prototype.isOpen=function(){return this.$container.hasClass(\"select2-container--open\")},d.prototype.hasFocus=function(){return this.$container.hasClass(\"select2-container--focus\")},d.prototype.focus=function(e){this.hasFocus()||(this.$container.addClass(\"select2-container--focus\"),this.trigger(\"focus\",{}))},d.prototype.enable=function(e){this.options.get(\"debug\")&&window.console&&console.warn&&console.warn('Select2: The `select2(\"enable\")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop(\"disabled\") instead.'),null!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop(\"disabled\",t)},d.prototype.data=function(){this.options.get(\"debug\")&&0<arguments.length&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2(\"data\")`. You should consider setting the value instead using `$element.val()`.');var t=[];return this.dataAdapter.current(function(e){t=e}),t},d.prototype.val=function(e){if(this.options.get(\"debug\")&&window.console&&console.warn&&console.warn('Select2: The `select2(\"val\")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==e||0===e.length)return this.$element.val();var t=e[0];o.isArray(t)&&(t=o.map(t,function(e){return e.toString()})),this.$element.val(t).trigger(\"input\").trigger(\"change\")},d.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent(\"onpropertychange\",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener(\"DOMAttrModified\",this._syncA,!1),this.$element[0].removeEventListener(\"DOMNodeInserted\",this._syncS,!1),this.$element[0].removeEventListener(\"DOMNodeRemoved\",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(\".select2\"),this.$element.attr(\"tabindex\",u.GetData(this.$element[0],\"old-tabindex\")),this.$element.removeClass(\"select2-hidden-accessible\"),this.$element.attr(\"aria-hidden\",\"false\"),u.RemoveData(this.$element[0]),this.$element.removeData(\"select2\"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},d.prototype.render=function(){var e=o('<span class=\"select2 select2-container\"><span class=\"selection\"></span><span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span></span>');return e.attr(\"dir\",this.options.get(\"dir\")),this.$container=e,this.$container.addClass(\"select2-container--\"+this.options.get(\"theme\")),u.StoreData(e[0],\"element\",this.$element),e},d}),e.define(\"select2/compat/utils\",[\"jquery\"],function(s){return{syncCssClasses:function(e,t,n){var i,r,o=[];(i=s.trim(e.attr(\"class\")))&&s((i=\"\"+i).split(/\\s+/)).each(function(){0===this.indexOf(\"select2-\")&&o.push(this)}),(i=s.trim(t.attr(\"class\")))&&s((i=\"\"+i).split(/\\s+/)).each(function(){0!==this.indexOf(\"select2-\")&&null!=(r=n(this))&&o.push(r)}),e.attr(\"class\",o.join(\" \"))}}}),e.define(\"select2/compat/containerCss\",[\"jquery\",\"./utils\"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get(\"containerCssClass\")||\"\";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get(\"adaptContainerCssClass\");if(i=i||l,-1!==n.indexOf(\":all:\")){n=n.replace(\":all:\",\"\");var r=i;i=function(e){var t=r(e);return null!=t?t+\" \"+e:e}}var o=this.options.get(\"containerCss\")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define(\"select2/compat/dropdownCss\",[\"jquery\",\"./utils\"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get(\"dropdownCssClass\")||\"\";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get(\"adaptDropdownCssClass\");if(i=i||l,-1!==n.indexOf(\":all:\")){n=n.replace(\":all:\",\"\");var r=i;i=function(e){var t=r(e);return null!=t?t+\" \"+e:e}}var o=this.options.get(\"dropdownCss\")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define(\"select2/compat/initSelection\",[\"jquery\"],function(i){function e(e,t,n){n.get(\"debug\")&&window.console&&console.warn&&console.warn(\"Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2\"),this.initSelection=n.get(\"initSelection\"),this._isInitialized=!1,e.call(this,t,n)}return e.prototype.current=function(e,t){var n=this;this._isInitialized?e.call(this,t):this.initSelection.call(null,this.$element,function(e){n._isInitialized=!0,i.isArray(e)||(e=[e]),t(e)})},e}),e.define(\"select2/compat/inputData\",[\"jquery\",\"../utils\"],function(s,i){function e(e,t,n){this._currentData=[],this._valueSeparator=n.get(\"valueSeparator\")||\",\",\"hidden\"===t.prop(\"type\")&&n.get(\"debug\")&&console&&console.warn&&console.warn(\"Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a `<select>` element instead.\"),e.call(this,t,n)}return e.prototype.current=function(e,t){function i(e,t){var n=[];return e.selected||-1!==s.inArray(e.id,t)?(e.selected=!0,n.push(e)):e.selected=!1,e.children&&n.push.apply(n,i(e.children,t)),n}for(var n=[],r=0;r<this._currentData.length;r++){var o=this._currentData[r];n.push.apply(n,i(o,this.$element.val().split(this._valueSeparator)))}t(n)},e.prototype.select=function(e,t){if(this.options.get(\"multiple\")){var n=this.$element.val();n+=this._valueSeparator+t.id,this.$element.val(n),this.$element.trigger(\"input\").trigger(\"change\")}else this.current(function(e){s.map(e,function(e){e.selected=!1})}),this.$element.val(t.id),this.$element.trigger(\"input\").trigger(\"change\")},e.prototype.unselect=function(e,r){var o=this;r.selected=!1,this.current(function(e){for(var t=[],n=0;n<e.length;n++){var i=e[n];r.id!=i.id&&t.push(i.id)}o.$element.val(t.join(o._valueSeparator)),o.$element.trigger(\"input\").trigger(\"change\")})},e.prototype.query=function(e,t,n){for(var i=[],r=0;r<this._currentData.length;r++){var o=this._currentData[r],s=this.matches(t,o);null!==s&&i.push(s)}n({results:i})},e.prototype.addOptions=function(e,t){var n=s.map(t,function(e){return i.GetData(e[0],\"data\")});this._currentData.push.apply(this._currentData,n)},e}),e.define(\"select2/compat/matcher\",[\"jquery\"],function(s){return function(o){return function(e,t){var n=s.extend(!0,{},t);if(null==e.term||\"\"===s.trim(e.term))return n;if(t.children){for(var i=t.children.length-1;0<=i;i--){var r=t.children[i];o(e.term,r.text,r)||n.children.splice(i,1)}if(0<n.children.length)return n}return o(e.term,t.text,t)?n:null}}}),e.define(\"select2/compat/query\",[],function(){function e(e,t,n){n.get(\"debug\")&&window.console&&console.warn&&console.warn(\"Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2.\"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.callback=n,this.options.get(\"query\").call(null,t)},e}),e.define(\"select2/dropdown/attachContainer\",[],function(){function e(e,t,n){e.call(this,t,n)}return e.prototype.position=function(e,t,n){n.find(\".dropdown-wrapper\").append(t),t.addClass(\"select2-dropdown--below\"),n.addClass(\"select2-container--below\")},e}),e.define(\"select2/dropdown/stopPropagation\",[],function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);this.$dropdown.on([\"blur\",\"change\",\"click\",\"dblclick\",\"focus\",\"focusin\",\"focusout\",\"input\",\"keydown\",\"keyup\",\"keypress\",\"mousedown\",\"mouseenter\",\"mouseleave\",\"mousemove\",\"mouseover\",\"mouseup\",\"search\",\"touchend\",\"touchstart\"].join(\" \"),function(e){e.stopPropagation()})},e}),e.define(\"select2/selection/stopPropagation\",[],function(){function e(){}return e.prototype.bind=function(e,t,n){e.call(this,t,n);this.$selection.on([\"blur\",\"change\",\"click\",\"dblclick\",\"focus\",\"focusin\",\"focusout\",\"input\",\"keydown\",\"keyup\",\"keypress\",\"mousedown\",\"mouseenter\",\"mouseleave\",\"mousemove\",\"mouseover\",\"mouseup\",\"search\",\"touchend\",\"touchstart\"].join(\" \"),function(e){e.stopPropagation()})},e}),l=function(p){var h,f,e=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],t=\"onwheel\"in document||9<=document.documentMode?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],g=Array.prototype.slice;if(p.event.fixHooks)for(var n=e.length;n;)p.event.fixHooks[e[--n]]=p.event.mouseHooks;var m=p.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var e=t.length;e;)this.addEventListener(t[--e],i,!1);else this.onmousewheel=i;p.data(this,\"mousewheel-line-height\",m.getLineHeight(this)),p.data(this,\"mousewheel-page-height\",m.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var e=t.length;e;)this.removeEventListener(t[--e],i,!1);else this.onmousewheel=null;p.removeData(this,\"mousewheel-line-height\"),p.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(e){var t=p(e),n=t[\"offsetParent\"in p.fn?\"offsetParent\":\"parent\"]();return n.length||(n=p(\"body\")),parseInt(n.css(\"fontSize\"),10)||parseInt(t.css(\"fontSize\"),10)||16},getPageHeight:function(e){return p(e).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};function i(e){var t,n=e||window.event,i=g.call(arguments,1),r=0,o=0,s=0,a=0,l=0;if((e=p.event.fix(n)).type=\"mousewheel\",\"detail\"in n&&(s=-1*n.detail),\"wheelDelta\"in n&&(s=n.wheelDelta),\"wheelDeltaY\"in n&&(s=n.wheelDeltaY),\"wheelDeltaX\"in n&&(o=-1*n.wheelDeltaX),\"axis\"in n&&n.axis===n.HORIZONTAL_AXIS&&(o=-1*s,s=0),r=0===s?o:s,\"deltaY\"in n&&(r=s=-1*n.deltaY),\"deltaX\"in n&&(o=n.deltaX,0===s&&(r=-1*o)),0!==s||0!==o){if(1===n.deltaMode){var c=p.data(this,\"mousewheel-line-height\");r*=c,s*=c,o*=c}else if(2===n.deltaMode){var u=p.data(this,\"mousewheel-page-height\");r*=u,s*=u,o*=u}if(t=Math.max(Math.abs(s),Math.abs(o)),(!f||t<f)&&y(n,f=t)&&(f/=40),y(n,t)&&(r/=40,o/=40,s/=40),r=Math[1<=r?\"floor\":\"ceil\"](r/f),o=Math[1<=o?\"floor\":\"ceil\"](o/f),s=Math[1<=s?\"floor\":\"ceil\"](s/f),m.settings.normalizeOffset&&this.getBoundingClientRect){var d=this.getBoundingClientRect();a=e.clientX-d.left,l=e.clientY-d.top}return e.deltaX=o,e.deltaY=s,e.deltaFactor=f,e.offsetX=a,e.offsetY=l,e.deltaMode=0,i.unshift(e,r,o,s),h&&clearTimeout(h),h=setTimeout(v,200),(p.event.dispatch||p.event.handle).apply(this,i)}}function v(){f=null}function y(e,t){return m.settings.adjustOldDeltas&&\"mousewheel\"===e.type&&t%120==0}p.fn.extend({mousewheel:function(e){return e?this.bind(\"mousewheel\",e):this.trigger(\"mousewheel\")},unmousewheel:function(e){return this.unbind(\"mousewheel\",e)}})},\"function\"==typeof e.define&&e.define.amd?e.define(\"jquery-mousewheel\",[\"jquery\"],l):\"object\"==typeof exports?module.exports=l:l(d),e.define(\"jquery.select2\",[\"jquery\",\"jquery-mousewheel\",\"./select2/core\",\"./select2/defaults\",\"./select2/utils\"],function(r,e,o,t,s){if(null==r.fn.select2){var a=[\"open\",\"close\",\"destroy\"];r.fn.select2=function(t){if(\"object\"==typeof(t=t||{}))return this.each(function(){var e=r.extend(!0,{},t);new o(r(this),e)}),this;if(\"string\"!=typeof t)throw new Error(\"Invalid arguments for Select2: \"+t);var n,i=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,\"select2\");null==e&&window.console&&console.error&&console.error(\"The select2('\"+t+\"') method was called on an element that is not using Select2.\"),n=e[t].apply(e,i)}),-1<r.inArray(t,a)?this:n}}return null==r.fn.select2.defaults&&(r.fn.select2.defaults=t),o}),{define:e.define,require:e.require}}(),t=e.require(\"jquery.select2\");return d.fn.select2.amd=e,t});"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/xregexp/LICENSE.b6fd2ceea8d3.txt",
    "content": "The MIT License\n\nCopyright (c) 2007-present Steven Levithan <http://xregexp.com/>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/xregexp/LICENSE.txt",
    "content": "The MIT License\n\nCopyright (c) 2007-present Steven Levithan <http://xregexp.com/>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/xregexp/xregexp.a7e08b0ce686.js",
    "content": "(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.XRegExp = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\n\nvar _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js-stable/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js-stable/array/from\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js-stable/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nvar _Array$isArray = require(\"@babel/runtime-corejs3/core-js-stable/array/is-array\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/helpers/slicedToArray\"));\n\nvar _forEach = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/for-each\"));\n\nvar _concat = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/concat\"));\n\nvar _indexOf = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/index-of\"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { var _context4; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context4 = Object.prototype.toString.call(o)).call(_context4, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*!\n * XRegExp Unicode Base 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2008-present MIT License\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds base support for Unicode matching:\n   * - Adds syntax `\\p{..}` for matching Unicode tokens. Tokens can be inverted using `\\P{..}` or\n   *   `\\p{^..}`. Token names ignore case, spaces, hyphens, and underscores. You can omit the\n   *   braces for token names that are a single letter (e.g. `\\pL` or `PL`).\n   * - Adds flag A (astral), which enables 21-bit Unicode support.\n   * - Adds the `XRegExp.addUnicodeData` method used by other addons to provide character data.\n   *\n   * Unicode Base relies on externally provided Unicode character data. Official addons are\n   * available to provide data for Unicode categories, scripts, and properties.\n   *\n   * @requires XRegExp\n   */\n  // ==--------------------------==\n  // Private stuff\n  // ==--------------------------==\n  // Storage for Unicode data\n  var unicode = {};\n  var unicodeTypes = {}; // Reuse utils\n\n  var dec = XRegExp._dec;\n  var hex = XRegExp._hex;\n  var pad4 = XRegExp._pad4; // Generates a token lookup name: lowercase, with hyphens, spaces, and underscores removed\n\n  function normalize(name) {\n    return name.replace(/[- _]+/g, '').toLowerCase();\n  } // Gets the decimal code of a literal code unit, \\xHH, \\uHHHH, or a backslash-escaped literal\n\n\n  function charCode(chr) {\n    var esc = /^\\\\[xu](.+)/.exec(chr);\n    return esc ? dec(esc[1]) : chr.charCodeAt(chr[0] === '\\\\' ? 1 : 0);\n  } // Inverts a list of ordered BMP characters and ranges\n\n\n  function invertBmp(range) {\n    var output = '';\n    var lastEnd = -1;\n    (0, _forEach[\"default\"])(XRegExp).call(XRegExp, range, /(\\\\x..|\\\\u....|\\\\?[\\s\\S])(?:-(\\\\x..|\\\\u....|\\\\?[\\s\\S]))?/, function (m) {\n      var start = charCode(m[1]);\n\n      if (start > lastEnd + 1) {\n        output += \"\\\\u\".concat(pad4(hex(lastEnd + 1)));\n\n        if (start > lastEnd + 2) {\n          output += \"-\\\\u\".concat(pad4(hex(start - 1)));\n        }\n      }\n\n      lastEnd = charCode(m[2] || m[1]);\n    });\n\n    if (lastEnd < 0xFFFF) {\n      output += \"\\\\u\".concat(pad4(hex(lastEnd + 1)));\n\n      if (lastEnd < 0xFFFE) {\n        output += '-\\\\uFFFF';\n      }\n    }\n\n    return output;\n  } // Generates an inverted BMP range on first use\n\n\n  function cacheInvertedBmp(slug) {\n    var prop = 'b!';\n    return unicode[slug][prop] || (unicode[slug][prop] = invertBmp(unicode[slug].bmp));\n  } // Combines and optionally negates BMP and astral data\n\n\n  function buildAstral(slug, isNegated) {\n    var item = unicode[slug];\n    var combined = '';\n\n    if (item.bmp && !item.isBmpLast) {\n      var _context;\n\n      combined = (0, _concat[\"default\"])(_context = \"[\".concat(item.bmp, \"]\")).call(_context, item.astral ? '|' : '');\n    }\n\n    if (item.astral) {\n      combined += item.astral;\n    }\n\n    if (item.isBmpLast && item.bmp) {\n      var _context2;\n\n      combined += (0, _concat[\"default\"])(_context2 = \"\".concat(item.astral ? '|' : '', \"[\")).call(_context2, item.bmp, \"]\");\n    } // Astral Unicode tokens always match a code point, never a code unit\n\n\n    return isNegated ? \"(?:(?!\".concat(combined, \")(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\0-\\uFFFF]))\") : \"(?:\".concat(combined, \")\");\n  } // Builds a complete astral pattern on first use\n\n\n  function cacheAstral(slug, isNegated) {\n    var prop = isNegated ? 'a!' : 'a=';\n    return unicode[slug][prop] || (unicode[slug][prop] = buildAstral(slug, isNegated));\n  } // ==--------------------------==\n  // Core functionality\n  // ==--------------------------==\n\n  /*\n   * Add astral mode (flag A) and Unicode token syntax: `\\p{..}`, `\\P{..}`, `\\p{^..}`, `\\pC`.\n   */\n\n\n  XRegExp.addToken( // Use `*` instead of `+` to avoid capturing `^` as the token name in `\\p{^}`\n  /\\\\([pP])(?:{(\\^?)(?:(\\w+)=)?([^}]*)}|([A-Za-z]))/, function (match, scope, flags) {\n    var ERR_DOUBLE_NEG = 'Invalid double negation ';\n    var ERR_UNKNOWN_NAME = 'Unknown Unicode token ';\n    var ERR_UNKNOWN_REF = 'Unicode token missing data ';\n    var ERR_ASTRAL_ONLY = 'Astral mode required for Unicode token ';\n    var ERR_ASTRAL_IN_CLASS = 'Astral mode does not support Unicode tokens within character classes';\n\n    var _match = (0, _slicedToArray2[\"default\"])(match, 6),\n        fullToken = _match[0],\n        pPrefix = _match[1],\n        caretNegation = _match[2],\n        typePrefix = _match[3],\n        tokenName = _match[4],\n        tokenSingleCharName = _match[5]; // Negated via \\P{..} or \\p{^..}\n\n\n    var isNegated = pPrefix === 'P' || !!caretNegation; // Switch from BMP (0-FFFF) to astral (0-10FFFF) mode via flag A\n\n    var isAstralMode = (0, _indexOf[\"default\"])(flags).call(flags, 'A') !== -1; // Token lookup name. Check `tokenSingleCharName` first to avoid passing `undefined`\n    // via `\\p{}`\n\n    var slug = normalize(tokenSingleCharName || tokenName); // Token data object\n\n    var item = unicode[slug];\n\n    if (pPrefix === 'P' && caretNegation) {\n      throw new SyntaxError(ERR_DOUBLE_NEG + fullToken);\n    }\n\n    if (!unicode.hasOwnProperty(slug)) {\n      throw new SyntaxError(ERR_UNKNOWN_NAME + fullToken);\n    }\n\n    if (typePrefix) {\n      if (!(unicodeTypes[typePrefix] && unicodeTypes[typePrefix][slug])) {\n        throw new SyntaxError(ERR_UNKNOWN_NAME + fullToken);\n      }\n    } // Switch to the negated form of the referenced Unicode token\n\n\n    if (item.inverseOf) {\n      slug = normalize(item.inverseOf);\n\n      if (!unicode.hasOwnProperty(slug)) {\n        var _context3;\n\n        throw new ReferenceError((0, _concat[\"default\"])(_context3 = \"\".concat(ERR_UNKNOWN_REF + fullToken, \" -> \")).call(_context3, item.inverseOf));\n      }\n\n      item = unicode[slug];\n      isNegated = !isNegated;\n    }\n\n    if (!(item.bmp || isAstralMode)) {\n      throw new SyntaxError(ERR_ASTRAL_ONLY + fullToken);\n    }\n\n    if (isAstralMode) {\n      if (scope === 'class') {\n        throw new SyntaxError(ERR_ASTRAL_IN_CLASS);\n      }\n\n      return cacheAstral(slug, isNegated);\n    }\n\n    return scope === 'class' ? isNegated ? cacheInvertedBmp(slug) : item.bmp : \"\".concat((isNegated ? '[^' : '[') + item.bmp, \"]\");\n  }, {\n    scope: 'all',\n    optionalFlags: 'A',\n    leadChar: '\\\\'\n  });\n  /**\n   * Adds to the list of Unicode tokens that XRegExp regexes can match via `\\p` or `\\P`.\n   *\n   * @memberOf XRegExp\n   * @param {Array} data Objects with named character ranges. Each object may have properties\n   *   `name`, `alias`, `isBmpLast`, `inverseOf`, `bmp`, and `astral`. All but `name` are\n   *   optional, although one of `bmp` or `astral` is required (unless `inverseOf` is set). If\n   *   `astral` is absent, the `bmp` data is used for BMP and astral modes. If `bmp` is absent,\n   *   the name errors in BMP mode but works in astral mode. If both `bmp` and `astral` are\n   *   provided, the `bmp` data only is used in BMP mode, and the combination of `bmp` and\n   *   `astral` data is used in astral mode. `isBmpLast` is needed when a token matches orphan\n   *   high surrogates *and* uses surrogate pairs to match astral code points. The `bmp` and\n   *   `astral` data should be a combination of literal characters and `\\xHH` or `\\uHHHH` escape\n   *   sequences, with hyphens to create ranges. Any regex metacharacters in the data should be\n   *   escaped, apart from range-creating hyphens. The `astral` data can additionally use\n   *   character classes and alternation, and should use surrogate pairs to represent astral code\n   *   points. `inverseOf` can be used to avoid duplicating character data if a Unicode token is\n   *   defined as the exact inverse of another token.\n   * @param {String} [typePrefix] Enables optionally using this type as a prefix for all of the\n   *   provided Unicode tokens, e.g. if given `'Type'`, then `\\p{TokenName}` can also be written\n   *   as `\\p{Type=TokenName}`.\n   * @example\n   *\n   * // Basic use\n   * XRegExp.addUnicodeData([{\n   *   name: 'XDigit',\n   *   alias: 'Hexadecimal',\n   *   bmp: '0-9A-Fa-f'\n   * }]);\n   * XRegExp('\\\\p{XDigit}:\\\\p{Hexadecimal}+').test('0:3D'); // -> true\n   */\n\n  XRegExp.addUnicodeData = function (data, typePrefix) {\n    var ERR_NO_NAME = 'Unicode token requires name';\n    var ERR_NO_DATA = 'Unicode token has no character data ';\n\n    if (typePrefix) {\n      // Case sensitive to match ES2018\n      unicodeTypes[typePrefix] = {};\n    }\n\n    var _iterator = _createForOfIteratorHelper(data),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var item = _step.value;\n\n        if (!item.name) {\n          throw new Error(ERR_NO_NAME);\n        }\n\n        if (!(item.inverseOf || item.bmp || item.astral)) {\n          throw new Error(ERR_NO_DATA + item.name);\n        }\n\n        var normalizedName = normalize(item.name);\n        unicode[normalizedName] = item;\n\n        if (typePrefix) {\n          unicodeTypes[typePrefix][normalizedName] = true;\n        }\n\n        if (item.alias) {\n          var normalizedAlias = normalize(item.alias);\n          unicode[normalizedAlias] = item;\n\n          if (typePrefix) {\n            unicodeTypes[typePrefix][normalizedAlias] = true;\n          }\n        }\n      } // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and\n      // flags might now produce different results\n\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    XRegExp.cache.flush('patterns');\n  };\n  /**\n   * @ignore\n   *\n   * Return a reference to the internal Unicode definition structure for the given Unicode\n   * Property if the given name is a legal Unicode Property for use in XRegExp `\\p` or `\\P` regex\n   * constructs.\n   *\n   * @memberOf XRegExp\n   * @param {String} name Name by which the Unicode Property may be recognized (case-insensitive),\n   *   e.g. `'N'` or `'Number'`. The given name is matched against all registered Unicode\n   *   Properties and Property Aliases.\n   * @returns {Object} Reference to definition structure when the name matches a Unicode Property.\n   *\n   * @note\n   * For more info on Unicode Properties, see also http://unicode.org/reports/tr18/#Categories.\n   *\n   * @note\n   * This method is *not* part of the officially documented API and may change or be removed in\n   * the future. It is meant for userland code that wishes to reuse the (large) internal Unicode\n   * structures set up by XRegExp.\n   */\n\n\n  XRegExp._getUnicodeProperty = function (name) {\n    var slug = normalize(name);\n    return unicode[slug];\n  };\n};\n\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"@babel/runtime-corejs3/core-js-stable/array/from\":5,\"@babel/runtime-corejs3/core-js-stable/array/is-array\":6,\"@babel/runtime-corejs3/core-js-stable/instance/concat\":7,\"@babel/runtime-corejs3/core-js-stable/instance/for-each\":9,\"@babel/runtime-corejs3/core-js-stable/instance/index-of\":10,\"@babel/runtime-corejs3/core-js-stable/instance/slice\":11,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/core-js-stable/symbol\":16,\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24,\"@babel/runtime-corejs3/helpers/slicedToArray\":27}],2:[function(require,module,exports){\n\"use strict\";\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _categories = _interopRequireDefault(require(\"../../tools/output/categories\"));\n\n/*!\n * XRegExp Unicode Categories 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2010-present MIT License\n * Unicode data by Mathias Bynens <mathiasbynens.be>\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds support for Unicode's general categories. E.g., `\\p{Lu}` or `\\p{Uppercase Letter}`. See\n   * category descriptions in UAX #44 <http://unicode.org/reports/tr44/#GC_Values_Table>. Token\n   * names are case insensitive, and any spaces, hyphens, and underscores are ignored.\n   *\n   * Uses Unicode 14.0.0.\n   *\n   * @requires XRegExp, Unicode Base\n   */\n  if (!XRegExp.addUnicodeData) {\n    throw new ReferenceError('Unicode Base must be loaded before Unicode Categories');\n  }\n\n  XRegExp.addUnicodeData(_categories[\"default\"]);\n};\n\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"../../tools/output/categories\":222,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24}],3:[function(require,module,exports){\n\"use strict\";\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _xregexp = _interopRequireDefault(require(\"./xregexp\"));\n\nvar _unicodeBase = _interopRequireDefault(require(\"./addons/unicode-base\"));\n\nvar _unicodeCategories = _interopRequireDefault(require(\"./addons/unicode-categories\"));\n\n(0, _unicodeBase[\"default\"])(_xregexp[\"default\"]);\n(0, _unicodeCategories[\"default\"])(_xregexp[\"default\"]);\nvar _default = _xregexp[\"default\"];\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"./addons/unicode-base\":1,\"./addons/unicode-categories\":2,\"./xregexp\":4,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24}],4:[function(require,module,exports){\n\"use strict\";\n\nvar _sliceInstanceProperty2 = require(\"@babel/runtime-corejs3/core-js-stable/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js-stable/array/from\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js-stable/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nvar _Array$isArray = require(\"@babel/runtime-corejs3/core-js-stable/array/is-array\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/helpers/slicedToArray\"));\n\nvar _flags = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/flags\"));\n\nvar _sort = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/sort\"));\n\nvar _slice = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/slice\"));\n\nvar _parseInt2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/parse-int\"));\n\nvar _indexOf = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/index-of\"));\n\nvar _forEach = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/for-each\"));\n\nvar _create = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/object/create\"));\n\nvar _concat = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/concat\"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { var _context9; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context9 = Object.prototype.toString.call(o)).call(_context9, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*!\n * XRegExp 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2007-present MIT License\n */\n\n/**\n * XRegExp provides augmented, extensible regular expressions. You get additional regex syntax and\n * flags, beyond what browsers support natively. XRegExp is also a regex utility belt with tools to\n * make your client-side grepping simpler and more powerful, while freeing you from related\n * cross-browser inconsistencies.\n */\n// ==--------------------------==\n// Private stuff\n// ==--------------------------==\n// Property name used for extended regex instance data\nvar REGEX_DATA = 'xregexp'; // Optional features that can be installed and uninstalled\n\nvar features = {\n  astral: false,\n  namespacing: true\n}; // Storage for fixed/extended native methods\n\nvar fixed = {}; // Storage for regexes cached by `XRegExp.cache`\n\nvar regexCache = {}; // Storage for pattern details cached by the `XRegExp` constructor\n\nvar patternCache = {}; // Storage for regex syntax tokens added internally or by `XRegExp.addToken`\n\nvar tokens = []; // Token scopes\n\nvar defaultScope = 'default';\nvar classScope = 'class'; // Regexes that match native regex syntax, including octals\n\nvar nativeTokens = {\n  // Any native multicharacter token in default scope, or any single character\n  'default': /\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|\\(\\?(?:[:=!]|<[=!])|[?*+]\\?|{\\d+(?:,\\d*)?}\\??|[\\s\\S]/,\n  // Any native multicharacter token in character class scope, or any single character\n  'class': /\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|[\\s\\S]/\n}; // Any backreference or dollar-prefixed character in replacement strings\n\nvar replacementToken = /\\$(?:\\{([^\\}]+)\\}|<([^>]+)>|(\\d\\d?|[\\s\\S]?))/g; // Check for correct `exec` handling of nonparticipating capturing groups\n\nvar correctExecNpcg = /()??/.exec('')[1] === undefined; // Check for ES6 `flags` prop support\n\nvar hasFlagsProp = (0, _flags[\"default\"])(/x/) !== undefined;\n\nfunction hasNativeFlag(flag) {\n  // Can't check based on the presence of properties/getters since browsers might support such\n  // properties even when they don't support the corresponding flag in regex construction (tested\n  // in Chrome 48, where `'unicode' in /x/` is true but trying to construct a regex with flag `u`\n  // throws an error)\n  var isSupported = true;\n\n  try {\n    // Can't use regex literals for testing even in a `try` because regex literals with\n    // unsupported flags cause a compilation error in IE\n    new RegExp('', flag); // Work around a broken/incomplete IE11 polyfill for sticky introduced in core-js 3.6.0\n\n    if (flag === 'y') {\n      // Using function to avoid babel transform to regex literal\n      var gy = function () {\n        return 'gy';\n      }();\n\n      var incompleteY = '.a'.replace(new RegExp('a', gy), '.') === '..';\n\n      if (incompleteY) {\n        isSupported = false;\n      }\n    }\n  } catch (exception) {\n    isSupported = false;\n  }\n\n  return isSupported;\n} // Check for ES2021 `d` flag support\n\n\nvar hasNativeD = hasNativeFlag('d'); // Check for ES2018 `s` flag support\n\nvar hasNativeS = hasNativeFlag('s'); // Check for ES6 `u` flag support\n\nvar hasNativeU = hasNativeFlag('u'); // Check for ES6 `y` flag support\n\nvar hasNativeY = hasNativeFlag('y'); // Tracker for known flags, including addon flags\n\nvar registeredFlags = {\n  d: hasNativeD,\n  g: true,\n  i: true,\n  m: true,\n  s: hasNativeS,\n  u: hasNativeU,\n  y: hasNativeY\n}; // Flags to remove when passing to native `RegExp` constructor\n\nvar nonnativeFlags = hasNativeS ? /[^dgimsuy]+/g : /[^dgimuy]+/g;\n/**\n * Attaches extended data and `XRegExp.prototype` properties to a regex object.\n *\n * @private\n * @param {RegExp} regex Regex to augment.\n * @param {Array} captureNames Array with capture names, or `null`.\n * @param {String} xSource XRegExp pattern used to generate `regex`, or `null` if N/A.\n * @param {String} xFlags XRegExp flags used to generate `regex`, or `null` if N/A.\n * @param {Boolean} [isInternalOnly=false] Whether the regex will be used only for internal\n *   operations, and never exposed to users. For internal-only regexes, we can improve perf by\n *   skipping some operations like attaching `XRegExp.prototype` properties.\n * @returns {!RegExp} Augmented regex.\n */\n\nfunction augment(regex, captureNames, xSource, xFlags, isInternalOnly) {\n  var _context;\n\n  regex[REGEX_DATA] = {\n    captureNames: captureNames\n  };\n\n  if (isInternalOnly) {\n    return regex;\n  } // Can't auto-inherit these since the XRegExp constructor returns a nonprimitive value\n\n\n  if (regex.__proto__) {\n    regex.__proto__ = XRegExp.prototype;\n  } else {\n    for (var p in XRegExp.prototype) {\n      // An `XRegExp.prototype.hasOwnProperty(p)` check wouldn't be worth it here, since this\n      // is performance sensitive, and enumerable `Object.prototype` or `RegExp.prototype`\n      // extensions exist on `regex.prototype` anyway\n      regex[p] = XRegExp.prototype[p];\n    }\n  }\n\n  regex[REGEX_DATA].source = xSource; // Emulate the ES6 `flags` prop by ensuring flags are in alphabetical order\n\n  regex[REGEX_DATA].flags = xFlags ? (0, _sort[\"default\"])(_context = xFlags.split('')).call(_context).join('') : xFlags;\n  return regex;\n}\n/**\n * Removes any duplicate characters from the provided string.\n *\n * @private\n * @param {String} str String to remove duplicate characters from.\n * @returns {string} String with any duplicate characters removed.\n */\n\n\nfunction clipDuplicates(str) {\n  return str.replace(/([\\s\\S])(?=[\\s\\S]*\\1)/g, '');\n}\n/**\n * Copies a regex object while preserving extended data and augmenting with `XRegExp.prototype`\n * properties. The copy has a fresh `lastIndex` property (set to zero). Allows adding and removing\n * flags g and y while copying the regex.\n *\n * @private\n * @param {RegExp} regex Regex to copy.\n * @param {Object} [options] Options object with optional properties:\n *   - `addG` {Boolean} Add flag g while copying the regex.\n *   - `addY` {Boolean} Add flag y while copying the regex.\n *   - `removeG` {Boolean} Remove flag g while copying the regex.\n *   - `removeY` {Boolean} Remove flag y while copying the regex.\n *   - `isInternalOnly` {Boolean} Whether the copied regex will be used only for internal\n *     operations, and never exposed to users. For internal-only regexes, we can improve perf by\n *     skipping some operations like attaching `XRegExp.prototype` properties.\n *   - `source` {String} Overrides `<regex>.source`, for special cases.\n * @returns {RegExp} Copy of the provided regex, possibly with modified flags.\n */\n\n\nfunction copyRegex(regex, options) {\n  var _context2;\n\n  if (!XRegExp.isRegExp(regex)) {\n    throw new TypeError('Type RegExp expected');\n  }\n\n  var xData = regex[REGEX_DATA] || {};\n  var flags = getNativeFlags(regex);\n  var flagsToAdd = '';\n  var flagsToRemove = '';\n  var xregexpSource = null;\n  var xregexpFlags = null;\n  options = options || {};\n\n  if (options.removeG) {\n    flagsToRemove += 'g';\n  }\n\n  if (options.removeY) {\n    flagsToRemove += 'y';\n  }\n\n  if (flagsToRemove) {\n    flags = flags.replace(new RegExp(\"[\".concat(flagsToRemove, \"]+\"), 'g'), '');\n  }\n\n  if (options.addG) {\n    flagsToAdd += 'g';\n  }\n\n  if (options.addY) {\n    flagsToAdd += 'y';\n  }\n\n  if (flagsToAdd) {\n    flags = clipDuplicates(flags + flagsToAdd);\n  }\n\n  if (!options.isInternalOnly) {\n    if (xData.source !== undefined) {\n      xregexpSource = xData.source;\n    } // null or undefined; don't want to add to `flags` if the previous value was null, since\n    // that indicates we're not tracking original precompilation flags\n\n\n    if ((0, _flags[\"default\"])(xData) != null) {\n      // Flags are only added for non-internal regexes by `XRegExp.globalize`. Flags are never\n      // removed for non-internal regexes, so don't need to handle it\n      xregexpFlags = flagsToAdd ? clipDuplicates((0, _flags[\"default\"])(xData) + flagsToAdd) : (0, _flags[\"default\"])(xData);\n    }\n  } // Augment with `XRegExp.prototype` properties, but use the native `RegExp` constructor to avoid\n  // searching for special tokens. That would be wrong for regexes constructed by `RegExp`, and\n  // unnecessary for regexes constructed by `XRegExp` because the regex has already undergone the\n  // translation to native regex syntax\n\n\n  regex = augment(new RegExp(options.source || regex.source, flags), hasNamedCapture(regex) ? (0, _slice[\"default\"])(_context2 = xData.captureNames).call(_context2, 0) : null, xregexpSource, xregexpFlags, options.isInternalOnly);\n  return regex;\n}\n/**\n * Converts hexadecimal to decimal.\n *\n * @private\n * @param {String} hex\n * @returns {number}\n */\n\n\nfunction dec(hex) {\n  return (0, _parseInt2[\"default\"])(hex, 16);\n}\n/**\n * Returns a pattern that can be used in a native RegExp in place of an ignorable token such as an\n * inline comment or whitespace with flag x. This is used directly as a token handler function\n * passed to `XRegExp.addToken`.\n *\n * @private\n * @param {String} match Match arg of `XRegExp.addToken` handler\n * @param {String} scope Scope arg of `XRegExp.addToken` handler\n * @param {String} flags Flags arg of `XRegExp.addToken` handler\n * @returns {string} Either '' or '(?:)', depending on which is needed in the context of the match.\n */\n\n\nfunction getContextualTokenSeparator(match, scope, flags) {\n  var matchEndPos = match.index + match[0].length;\n  var precedingChar = match.input[match.index - 1];\n  var followingChar = match.input[matchEndPos];\n\n  if ( // No need to separate tokens if at the beginning or end of a group, before or after a\n  // group, or before or after a `|`\n  /^[()|]$/.test(precedingChar) || /^[()|]$/.test(followingChar) || // No need to separate tokens if at the beginning or end of the pattern\n  match.index === 0 || matchEndPos === match.input.length || // No need to separate tokens if at the beginning of a noncapturing group or lookaround.\n  // Looks only at the last 4 chars (at most) for perf when constructing long regexes.\n  /\\(\\?(?:[:=!]|<[=!])$/.test(match.input.substring(match.index - 4, match.index)) || // Avoid separating tokens when the following token is a quantifier\n  isQuantifierNext(match.input, matchEndPos, flags)) {\n    return '';\n  } // Keep tokens separated. This avoids e.g. inadvertedly changing `\\1 1` or `\\1(?#)1` to `\\11`.\n  // This also ensures all tokens remain as discrete atoms, e.g. it prevents converting the\n  // syntax error `(? :` into `(?:`.\n\n\n  return '(?:)';\n}\n/**\n * Returns native `RegExp` flags used by a regex object.\n *\n * @private\n * @param {RegExp} regex Regex to check.\n * @returns {string} Native flags in use.\n */\n\n\nfunction getNativeFlags(regex) {\n  return hasFlagsProp ? (0, _flags[\"default\"])(regex) : // Explicitly using `RegExp.prototype.toString` (rather than e.g. `String` or concatenation\n  // with an empty string) allows this to continue working predictably when\n  // `XRegExp.proptotype.toString` is overridden\n  /\\/([a-z]*)$/i.exec(RegExp.prototype.toString.call(regex))[1];\n}\n/**\n * Determines whether a regex has extended instance data used to track capture names.\n *\n * @private\n * @param {RegExp} regex Regex to check.\n * @returns {boolean} Whether the regex uses named capture.\n */\n\n\nfunction hasNamedCapture(regex) {\n  return !!(regex[REGEX_DATA] && regex[REGEX_DATA].captureNames);\n}\n/**\n * Converts decimal to hexadecimal.\n *\n * @private\n * @param {Number|String} dec\n * @returns {string}\n */\n\n\nfunction hex(dec) {\n  return (0, _parseInt2[\"default\"])(dec, 10).toString(16);\n}\n/**\n * Checks whether the next nonignorable token after the specified position is a quantifier.\n *\n * @private\n * @param {String} pattern Pattern to search within.\n * @param {Number} pos Index in `pattern` to search at.\n * @param {String} flags Flags used by the pattern.\n * @returns {Boolean} Whether the next nonignorable token is a quantifier.\n */\n\n\nfunction isQuantifierNext(pattern, pos, flags) {\n  var inlineCommentPattern = '\\\\(\\\\?#[^)]*\\\\)';\n  var lineCommentPattern = '#[^#\\\\n]*';\n  var quantifierPattern = '[?*+]|{\\\\d+(?:,\\\\d*)?}';\n  var regex = (0, _indexOf[\"default\"])(flags).call(flags, 'x') !== -1 ? // Ignore any leading whitespace, line comments, and inline comments\n  /^(?:\\s|#[^#\\n]*|\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/ : // Ignore any leading inline comments\n  /^(?:\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/;\n  return regex.test((0, _slice[\"default\"])(pattern).call(pattern, pos));\n}\n/**\n * Determines whether a value is of the specified type, by resolving its internal [[Class]].\n *\n * @private\n * @param {*} value Object to check.\n * @param {String} type Type to check for, in TitleCase.\n * @returns {boolean} Whether the object matches the type.\n */\n\n\nfunction isType(value, type) {\n  return Object.prototype.toString.call(value) === \"[object \".concat(type, \"]\");\n}\n/**\n * Returns the object, or throws an error if it is `null` or `undefined`. This is used to follow\n * the ES5 abstract operation `ToObject`.\n *\n * @private\n * @param {*} value Object to check and return.\n * @returns {*} The provided object.\n */\n\n\nfunction nullThrows(value) {\n  // null or undefined\n  if (value == null) {\n    throw new TypeError('Cannot convert null or undefined to object');\n  }\n\n  return value;\n}\n/**\n * Adds leading zeros if shorter than four characters. Used for fixed-length hexadecimal values.\n *\n * @private\n * @param {String} str\n * @returns {string}\n */\n\n\nfunction pad4(str) {\n  while (str.length < 4) {\n    str = \"0\".concat(str);\n  }\n\n  return str;\n}\n/**\n * Checks for flag-related errors, and strips/applies flags in a leading mode modifier. Offloads\n * the flag preparation logic from the `XRegExp` constructor.\n *\n * @private\n * @param {String} pattern Regex pattern, possibly with a leading mode modifier.\n * @param {String} flags Any combination of flags.\n * @returns {!Object} Object with properties `pattern` and `flags`.\n */\n\n\nfunction prepareFlags(pattern, flags) {\n  // Recent browsers throw on duplicate flags, so copy this behavior for nonnative flags\n  if (clipDuplicates(flags) !== flags) {\n    throw new SyntaxError(\"Invalid duplicate regex flag \".concat(flags));\n  } // Strip and apply a leading mode modifier with any combination of flags except `dgy`\n\n\n  pattern = pattern.replace(/^\\(\\?([\\w$]+)\\)/, function ($0, $1) {\n    if (/[dgy]/.test($1)) {\n      throw new SyntaxError(\"Cannot use flags dgy in mode modifier \".concat($0));\n    } // Allow duplicate flags within the mode modifier\n\n\n    flags = clipDuplicates(flags + $1);\n    return '';\n  }); // Throw on unknown native or nonnative flags\n\n  var _iterator = _createForOfIteratorHelper(flags),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var flag = _step.value;\n\n      if (!registeredFlags[flag]) {\n        throw new SyntaxError(\"Unknown regex flag \".concat(flag));\n      }\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  return {\n    pattern: pattern,\n    flags: flags\n  };\n}\n/**\n * Prepares an options object from the given value.\n *\n * @private\n * @param {String|Object} value Value to convert to an options object.\n * @returns {Object} Options object.\n */\n\n\nfunction prepareOptions(value) {\n  var options = {};\n\n  if (isType(value, 'String')) {\n    (0, _forEach[\"default\"])(XRegExp).call(XRegExp, value, /[^\\s,]+/, function (match) {\n      options[match] = true;\n    });\n    return options;\n  }\n\n  return value;\n}\n/**\n * Registers a flag so it doesn't throw an 'unknown flag' error.\n *\n * @private\n * @param {String} flag Single-character flag to register.\n */\n\n\nfunction registerFlag(flag) {\n  if (!/^[\\w$]$/.test(flag)) {\n    throw new Error('Flag must be a single character A-Za-z0-9_$');\n  }\n\n  registeredFlags[flag] = true;\n}\n/**\n * Runs built-in and custom regex syntax tokens in reverse insertion order at the specified\n * position, until a match is found.\n *\n * @private\n * @param {String} pattern Original pattern from which an XRegExp object is being built.\n * @param {String} flags Flags being used to construct the regex.\n * @param {Number} pos Position to search for tokens within `pattern`.\n * @param {Number} scope Regex scope to apply: 'default' or 'class'.\n * @param {Object} context Context object to use for token handler functions.\n * @returns {Object} Object with properties `matchLength`, `output`, and `reparse`; or `null`.\n */\n\n\nfunction runTokens(pattern, flags, pos, scope, context) {\n  var i = tokens.length;\n  var leadChar = pattern[pos];\n  var result = null;\n  var match;\n  var t; // Run in reverse insertion order\n\n  while (i--) {\n    t = tokens[i];\n\n    if (t.leadChar && t.leadChar !== leadChar || t.scope !== scope && t.scope !== 'all' || t.flag && !((0, _indexOf[\"default\"])(flags).call(flags, t.flag) !== -1)) {\n      continue;\n    }\n\n    match = XRegExp.exec(pattern, t.regex, pos, 'sticky');\n\n    if (match) {\n      result = {\n        matchLength: match[0].length,\n        output: t.handler.call(context, match, scope, flags),\n        reparse: t.reparse\n      }; // Finished with token tests\n\n      break;\n    }\n  }\n\n  return result;\n}\n/**\n * Enables or disables implicit astral mode opt-in. When enabled, flag A is automatically added to\n * all new regexes created by XRegExp. This causes an error to be thrown when creating regexes if\n * the Unicode Base addon is not available, since flag A is registered by that addon.\n *\n * @private\n * @param {Boolean} on `true` to enable; `false` to disable.\n */\n\n\nfunction setAstral(on) {\n  features.astral = on;\n}\n/**\n * Adds named capture groups to the `groups` property of match arrays. See here for details:\n * https://github.com/tc39/proposal-regexp-named-groups\n *\n * @private\n * @param {Boolean} on `true` to enable; `false` to disable.\n */\n\n\nfunction setNamespacing(on) {\n  features.namespacing = on;\n} // ==--------------------------==\n// Constructor\n// ==--------------------------==\n\n/**\n * Creates an extended regular expression object for matching text with a pattern. Differs from a\n * native regular expression in that additional syntax and flags are supported. The returned object\n * is in fact a native `RegExp` and works with all native methods.\n *\n * @class XRegExp\n * @constructor\n * @param {String|RegExp} pattern Regex pattern string, or an existing regex object to copy.\n * @param {String} [flags] Any combination of flags.\n *   Native flags:\n *     - `d` - indices for capturing groups (ES2021)\n *     - `g` - global\n *     - `i` - ignore case\n *     - `m` - multiline anchors\n *     - `u` - unicode (ES6)\n *     - `y` - sticky (Firefox 3+, ES6)\n *   Additional XRegExp flags:\n *     - `n` - named capture only\n *     - `s` - dot matches all (aka singleline) - works even when not natively supported\n *     - `x` - free-spacing and line comments (aka extended)\n *     - `A` - 21-bit Unicode properties (aka astral) - requires the Unicode Base addon\n *   Flags cannot be provided when constructing one `RegExp` from another.\n * @returns {RegExp} Extended regular expression object.\n * @example\n *\n * // With named capture and flag x\n * XRegExp(`(?<year>  [0-9]{4} ) -?  # year\n *          (?<month> [0-9]{2} ) -?  # month\n *          (?<day>   [0-9]{2} )     # day`, 'x');\n *\n * // Providing a regex object copies it. Native regexes are recompiled using native (not XRegExp)\n * // syntax. Copies maintain extended data, are augmented with `XRegExp.prototype` properties, and\n * // have fresh `lastIndex` properties (set to zero).\n * XRegExp(/regex/);\n */\n\n\nfunction XRegExp(pattern, flags) {\n  if (XRegExp.isRegExp(pattern)) {\n    if (flags !== undefined) {\n      throw new TypeError('Cannot supply flags when copying a RegExp');\n    }\n\n    return copyRegex(pattern);\n  } // Copy the argument behavior of `RegExp`\n\n\n  pattern = pattern === undefined ? '' : String(pattern);\n  flags = flags === undefined ? '' : String(flags);\n\n  if (XRegExp.isInstalled('astral') && !((0, _indexOf[\"default\"])(flags).call(flags, 'A') !== -1)) {\n    // This causes an error to be thrown if the Unicode Base addon is not available\n    flags += 'A';\n  }\n\n  if (!patternCache[pattern]) {\n    patternCache[pattern] = {};\n  }\n\n  if (!patternCache[pattern][flags]) {\n    var context = {\n      hasNamedCapture: false,\n      captureNames: []\n    };\n    var scope = defaultScope;\n    var output = '';\n    var pos = 0;\n    var result; // Check for flag-related errors, and strip/apply flags in a leading mode modifier\n\n    var applied = prepareFlags(pattern, flags);\n    var appliedPattern = applied.pattern;\n    var appliedFlags = (0, _flags[\"default\"])(applied); // Use XRegExp's tokens to translate the pattern to a native regex pattern.\n    // `appliedPattern.length` may change on each iteration if tokens use `reparse`\n\n    while (pos < appliedPattern.length) {\n      do {\n        // Check for custom tokens at the current position\n        result = runTokens(appliedPattern, appliedFlags, pos, scope, context); // If the matched token used the `reparse` option, splice its output into the\n        // pattern before running tokens again at the same position\n\n        if (result && result.reparse) {\n          appliedPattern = (0, _slice[\"default\"])(appliedPattern).call(appliedPattern, 0, pos) + result.output + (0, _slice[\"default\"])(appliedPattern).call(appliedPattern, pos + result.matchLength);\n        }\n      } while (result && result.reparse);\n\n      if (result) {\n        output += result.output;\n        pos += result.matchLength || 1;\n      } else {\n        // Get the native token at the current position\n        var _XRegExp$exec = XRegExp.exec(appliedPattern, nativeTokens[scope], pos, 'sticky'),\n            _XRegExp$exec2 = (0, _slicedToArray2[\"default\"])(_XRegExp$exec, 1),\n            token = _XRegExp$exec2[0];\n\n        output += token;\n        pos += token.length;\n\n        if (token === '[' && scope === defaultScope) {\n          scope = classScope;\n        } else if (token === ']' && scope === classScope) {\n          scope = defaultScope;\n        }\n      }\n    }\n\n    patternCache[pattern][flags] = {\n      // Use basic cleanup to collapse repeated empty groups like `(?:)(?:)` to `(?:)`. Empty\n      // groups are sometimes inserted during regex transpilation in order to keep tokens\n      // separated. However, more than one empty group in a row is never needed.\n      pattern: output.replace(/(?:\\(\\?:\\))+/g, '(?:)'),\n      // Strip all but native flags\n      flags: appliedFlags.replace(nonnativeFlags, ''),\n      // `context.captureNames` has an item for each capturing group, even if unnamed\n      captures: context.hasNamedCapture ? context.captureNames : null\n    };\n  }\n\n  var generated = patternCache[pattern][flags];\n  return augment(new RegExp(generated.pattern, (0, _flags[\"default\"])(generated)), generated.captures, pattern, flags);\n} // Add `RegExp.prototype` to the prototype chain\n\n\nXRegExp.prototype = /(?:)/; // ==--------------------------==\n// Public properties\n// ==--------------------------==\n\n/**\n * The XRegExp version number as a string containing three dot-separated parts. For example,\n * '2.0.0-beta-3'.\n *\n * @static\n * @memberOf XRegExp\n * @type String\n */\n\nXRegExp.version = '5.1.1'; // ==--------------------------==\n// Public methods\n// ==--------------------------==\n// Intentionally undocumented; used in tests and addons\n\nXRegExp._clipDuplicates = clipDuplicates;\nXRegExp._hasNativeFlag = hasNativeFlag;\nXRegExp._dec = dec;\nXRegExp._hex = hex;\nXRegExp._pad4 = pad4;\n/**\n * Extends XRegExp syntax and allows custom flags. This is used internally and can be used to\n * create XRegExp addons. If more than one token can match the same string, the last added wins.\n *\n * @memberOf XRegExp\n * @param {RegExp} regex Regex object that matches the new token.\n * @param {Function} handler Function that returns a new pattern string (using native regex syntax)\n *   to replace the matched token within all future XRegExp regexes. Has access to persistent\n *   properties of the regex being built, through `this`. Invoked with three arguments:\n *   - The match array, with named backreference properties.\n *   - The regex scope where the match was found: 'default' or 'class'.\n *   - The flags used by the regex, including any flags in a leading mode modifier.\n *   The handler function becomes part of the XRegExp construction process, so be careful not to\n *   construct XRegExps within the function or you will trigger infinite recursion.\n * @param {Object} [options] Options object with optional properties:\n *   - `scope` {String} Scope where the token applies: 'default', 'class', or 'all'.\n *   - `flag` {String} Single-character flag that triggers the token. This also registers the\n *     flag, which prevents XRegExp from throwing an 'unknown flag' error when the flag is used.\n *   - `optionalFlags` {String} Any custom flags checked for within the token `handler` that are\n *     not required to trigger the token. This registers the flags, to prevent XRegExp from\n *     throwing an 'unknown flag' error when any of the flags are used.\n *   - `reparse` {Boolean} Whether the `handler` function's output should not be treated as\n *     final, and instead be reparseable by other tokens (including the current token). Allows\n *     token chaining or deferring.\n *   - `leadChar` {String} Single character that occurs at the beginning of any successful match\n *     of the token (not always applicable). This doesn't change the behavior of the token unless\n *     you provide an erroneous value. However, providing it can increase the token's performance\n *     since the token can be skipped at any positions where this character doesn't appear.\n * @example\n *\n * // Basic usage: Add \\a for the ALERT control code\n * XRegExp.addToken(\n *   /\\\\a/,\n *   () => '\\\\x07',\n *   {scope: 'all'}\n * );\n * XRegExp('\\\\a[\\\\a-\\\\n]+').test('\\x07\\n\\x07'); // -> true\n *\n * // Add the U (ungreedy) flag from PCRE and RE2, which reverses greedy and lazy quantifiers.\n * // Since `scope` is not specified, it uses 'default' (i.e., transformations apply outside of\n * // character classes only)\n * XRegExp.addToken(\n *   /([?*+]|{\\d+(?:,\\d*)?})(\\??)/,\n *   (match) => `${match[1]}${match[2] ? '' : '?'}`,\n *   {flag: 'U'}\n * );\n * XRegExp('a+', 'U').exec('aaa')[0]; // -> 'a'\n * XRegExp('a+?', 'U').exec('aaa')[0]; // -> 'aaa'\n */\n\nXRegExp.addToken = function (regex, handler, options) {\n  options = options || {};\n  var _options = options,\n      optionalFlags = _options.optionalFlags;\n\n  if (options.flag) {\n    registerFlag(options.flag);\n  }\n\n  if (optionalFlags) {\n    optionalFlags = optionalFlags.split('');\n\n    var _iterator2 = _createForOfIteratorHelper(optionalFlags),\n        _step2;\n\n    try {\n      for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n        var flag = _step2.value;\n        registerFlag(flag);\n      }\n    } catch (err) {\n      _iterator2.e(err);\n    } finally {\n      _iterator2.f();\n    }\n  } // Add to the private list of syntax tokens\n\n\n  tokens.push({\n    regex: copyRegex(regex, {\n      addG: true,\n      addY: hasNativeY,\n      isInternalOnly: true\n    }),\n    handler: handler,\n    scope: options.scope || defaultScope,\n    flag: options.flag,\n    reparse: options.reparse,\n    leadChar: options.leadChar\n  }); // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and flags\n  // might now produce different results\n\n  XRegExp.cache.flush('patterns');\n};\n/**\n * Caches and returns the result of calling `XRegExp(pattern, flags)`. On any subsequent call with\n * the same pattern and flag combination, the cached copy of the regex is returned.\n *\n * @memberOf XRegExp\n * @param {String} pattern Regex pattern string.\n * @param {String} [flags] Any combination of XRegExp flags.\n * @returns {RegExp} Cached XRegExp object.\n * @example\n *\n * let match;\n * while (match = XRegExp.cache('.', 'gs').exec('abc')) {\n *   // The regex is compiled once only\n * }\n */\n\n\nXRegExp.cache = function (pattern, flags) {\n  if (!regexCache[pattern]) {\n    regexCache[pattern] = {};\n  }\n\n  return regexCache[pattern][flags] || (regexCache[pattern][flags] = XRegExp(pattern, flags));\n}; // Intentionally undocumented; used in tests\n\n\nXRegExp.cache.flush = function (cacheName) {\n  if (cacheName === 'patterns') {\n    // Flush the pattern cache used by the `XRegExp` constructor\n    patternCache = {};\n  } else {\n    // Flush the regex cache populated by `XRegExp.cache`\n    regexCache = {};\n  }\n};\n/**\n * Escapes any regular expression metacharacters, for use when matching literal strings. The result\n * can safely be used at any position within a regex that uses any flags.\n *\n * @memberOf XRegExp\n * @param {String} str String to escape.\n * @returns {string} String with regex metacharacters escaped.\n * @example\n *\n * XRegExp.escape('Escaped? <.>');\n * // -> 'Escaped\\?\\u0020<\\.>'\n */\n// Following are the contexts where each metacharacter needs to be escaped because it would\n// otherwise have a special meaning, change the meaning of surrounding characters, or cause an\n// error. Context 'default' means outside character classes only.\n// - `\\` - context: all\n// - `[()*+?.$|` - context: default\n// - `]` - context: default with flag u or if forming the end of a character class\n// - `{}` - context: default with flag u or if part of a valid/complete quantifier pattern\n// - `,` - context: default if in a position that causes an unescaped `{` to turn into a quantifier.\n//   Ex: `/^a{1\\,2}$/` matches `'a{1,2}'`, but `/^a{1,2}$/` matches `'a'` or `'aa'`\n// - `#` and <whitespace> - context: default with flag x\n// - `^` - context: default, and context: class if it's the first character in the class\n// - `-` - context: class if part of a valid character class range\n\n\nXRegExp.escape = function (str) {\n  return String(nullThrows(str)). // Escape most special chars with a backslash\n  replace(/[\\\\\\[\\]{}()*+?.^$|]/g, '\\\\$&'). // Convert to \\uNNNN for special chars that can't be escaped when used with ES6 flag `u`\n  replace(/[\\s#\\-,]/g, function (match) {\n    return \"\\\\u\".concat(pad4(hex(match.charCodeAt(0))));\n  });\n};\n/**\n * Executes a regex search in a specified string. Returns a match array or `null`. If the provided\n * regex uses named capture, named capture properties are included on the match array's `groups`\n * property. Optional `pos` and `sticky` arguments specify the search start position, and whether\n * the match must start at the specified position only. The `lastIndex` property of the provided\n * regex is not used, but is updated for compatibility. Also fixes browser bugs compared to the\n * native `RegExp.prototype.exec` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Number} [pos=0] Zero-based index at which to start the search.\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\n *   only. The string `'sticky'` is accepted as an alternative to `true`.\n * @returns {Array} Match array with named capture properties on the `groups` object, or `null`. If\n *   the `namespacing` feature is off, named capture properties are directly on the match array.\n * @example\n *\n * // Basic use, with named capturing group\n * let match = XRegExp.exec('U+2620', XRegExp('U\\\\+(?<hex>[0-9A-F]{4})'));\n * match.groups.hex; // -> '2620'\n *\n * // With pos and sticky, in a loop\n * let pos = 3, result = [], match;\n * while (match = XRegExp.exec('<1><2><3><4>5<6>', /<(\\d)>/, pos, 'sticky')) {\n *   result.push(match[1]);\n *   pos = match.index + match[0].length;\n * }\n * // result -> ['2', '3', '4']\n */\n\n\nXRegExp.exec = function (str, regex, pos, sticky) {\n  var cacheKey = 'g';\n  var addY = false;\n  var fakeY = false;\n  var match;\n  addY = hasNativeY && !!(sticky || regex.sticky && sticky !== false);\n\n  if (addY) {\n    cacheKey += 'y';\n  } else if (sticky) {\n    // Simulate sticky matching by appending an empty capture to the original regex. The\n    // resulting regex will succeed no matter what at the current index (set with `lastIndex`),\n    // and will not search the rest of the subject string. We'll know that the original regex\n    // has failed if that last capture is `''` rather than `undefined` (i.e., if that last\n    // capture participated in the match).\n    fakeY = true;\n    cacheKey += 'FakeY';\n  }\n\n  regex[REGEX_DATA] = regex[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.match`/`replace`\n\n  var r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\n    addG: true,\n    addY: addY,\n    source: fakeY ? \"\".concat(regex.source, \"|()\") : undefined,\n    removeY: sticky === false,\n    isInternalOnly: true\n  }));\n  pos = pos || 0;\n  r2.lastIndex = pos; // Fixed `exec` required for `lastIndex` fix, named backreferences, etc.\n\n  match = fixed.exec.call(r2, str); // Get rid of the capture added by the pseudo-sticky matcher if needed. An empty string means\n  // the original regexp failed (see above).\n\n  if (fakeY && match && match.pop() === '') {\n    match = null;\n  }\n\n  if (regex.global) {\n    regex.lastIndex = match ? r2.lastIndex : 0;\n  }\n\n  return match;\n};\n/**\n * Executes a provided function once per regex match. Searches always start at the beginning of the\n * string and continue until the end, regardless of the state of the regex's `global` property and\n * initial `lastIndex`.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Function} callback Function to execute for each match. Invoked with four arguments:\n *   - The match array, with named backreference properties.\n *   - The zero-based match index.\n *   - The string being traversed.\n *   - The regex object being used to traverse the string.\n * @example\n *\n * // Extracts every other digit from a string\n * const evens = [];\n * XRegExp.forEach('1a2345', /\\d/, (match, i) => {\n *   if (i % 2) evens.push(+match[0]);\n * });\n * // evens -> [2, 4]\n */\n\n\nXRegExp.forEach = function (str, regex, callback) {\n  var pos = 0;\n  var i = -1;\n  var match;\n\n  while (match = XRegExp.exec(str, regex, pos)) {\n    // Because `regex` is provided to `callback`, the function could use the deprecated/\n    // nonstandard `RegExp.prototype.compile` to mutate the regex. However, since `XRegExp.exec`\n    // doesn't use `lastIndex` to set the search position, this can't lead to an infinite loop,\n    // at least. Actually, because of the way `XRegExp.exec` caches globalized versions of\n    // regexes, mutating the regex will not have any effect on the iteration or matched strings,\n    // which is a nice side effect that brings extra safety.\n    callback(match, ++i, str, regex);\n    pos = match.index + (match[0].length || 1);\n  }\n};\n/**\n * Copies a regex object and adds flag `g`. The copy maintains extended data, is augmented with\n * `XRegExp.prototype` properties, and has a fresh `lastIndex` property (set to zero). Native\n * regexes are not recompiled using XRegExp syntax.\n *\n * @memberOf XRegExp\n * @param {RegExp} regex Regex to globalize.\n * @returns {RegExp} Copy of the provided regex with flag `g` added.\n * @example\n *\n * const globalCopy = XRegExp.globalize(/regex/);\n * globalCopy.global; // -> true\n */\n\n\nXRegExp.globalize = function (regex) {\n  return copyRegex(regex, {\n    addG: true\n  });\n};\n/**\n * Installs optional features according to the specified options. Can be undone using\n * `XRegExp.uninstall`.\n *\n * @memberOf XRegExp\n * @param {Object|String} options Options object or string.\n * @example\n *\n * // With an options object\n * XRegExp.install({\n *   // Enables support for astral code points in Unicode addons (implicitly sets flag A)\n *   astral: true,\n *\n *   // Adds named capture groups to the `groups` property of matches\n *   namespacing: true\n * });\n *\n * // With an options string\n * XRegExp.install('astral namespacing');\n */\n\n\nXRegExp.install = function (options) {\n  options = prepareOptions(options);\n\n  if (!features.astral && options.astral) {\n    setAstral(true);\n  }\n\n  if (!features.namespacing && options.namespacing) {\n    setNamespacing(true);\n  }\n};\n/**\n * Checks whether an individual optional feature is installed.\n *\n * @memberOf XRegExp\n * @param {String} feature Name of the feature to check. One of:\n *   - `astral`\n *   - `namespacing`\n * @returns {boolean} Whether the feature is installed.\n * @example\n *\n * XRegExp.isInstalled('astral');\n */\n\n\nXRegExp.isInstalled = function (feature) {\n  return !!features[feature];\n};\n/**\n * Returns `true` if an object is a regex; `false` if it isn't. This works correctly for regexes\n * created in another frame, when `instanceof` and `constructor` checks would fail.\n *\n * @memberOf XRegExp\n * @param {*} value Object to check.\n * @returns {boolean} Whether the object is a `RegExp` object.\n * @example\n *\n * XRegExp.isRegExp('string'); // -> false\n * XRegExp.isRegExp(/regex/i); // -> true\n * XRegExp.isRegExp(RegExp('^', 'm')); // -> true\n * XRegExp.isRegExp(XRegExp('(?s).')); // -> true\n */\n\n\nXRegExp.isRegExp = function (value) {\n  return Object.prototype.toString.call(value) === '[object RegExp]';\n}; // Same as `isType(value, 'RegExp')`, but avoiding that function call here for perf since\n// `isRegExp` is used heavily by internals including regex construction\n\n/**\n * Returns the first matched string, or in global mode, an array containing all matched strings.\n * This is essentially a more convenient re-implementation of `String.prototype.match` that gives\n * the result types you actually want (string instead of `exec`-style array in match-first mode,\n * and an empty array instead of `null` when no matches are found in match-all mode). It also lets\n * you override flag g and ignore `lastIndex`, and fixes browser bugs.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {String} [scope='one'] Use 'one' to return the first match as a string. Use 'all' to\n *   return an array of all matched strings. If not explicitly specified and `regex` uses flag g,\n *   `scope` is 'all'.\n * @returns {String|Array} In match-first mode: First match as a string, or `null`. In match-all\n *   mode: Array of all matched strings, or an empty array.\n * @example\n *\n * // Match first\n * XRegExp.match('abc', /\\w/); // -> 'a'\n * XRegExp.match('abc', /\\w/g, 'one'); // -> 'a'\n * XRegExp.match('abc', /x/g, 'one'); // -> null\n *\n * // Match all\n * XRegExp.match('abc', /\\w/g); // -> ['a', 'b', 'c']\n * XRegExp.match('abc', /\\w/, 'all'); // -> ['a', 'b', 'c']\n * XRegExp.match('abc', /x/, 'all'); // -> []\n */\n\n\nXRegExp.match = function (str, regex, scope) {\n  var global = regex.global && scope !== 'one' || scope === 'all';\n  var cacheKey = (global ? 'g' : '') + (regex.sticky ? 'y' : '') || 'noGY';\n  regex[REGEX_DATA] = regex[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.exec`/`replace`\n\n  var r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\n    addG: !!global,\n    removeG: scope === 'one',\n    isInternalOnly: true\n  }));\n  var result = String(nullThrows(str)).match(r2);\n\n  if (regex.global) {\n    regex.lastIndex = scope === 'one' && result ? // Can't use `r2.lastIndex` since `r2` is nonglobal in this case\n    result.index + result[0].length : 0;\n  }\n\n  return global ? result || [] : result && result[0];\n};\n/**\n * Retrieves the matches from searching a string using a chain of regexes that successively search\n * within previous matches. The provided `chain` array can contain regexes and or objects with\n * `regex` and `backref` properties. When a backreference is specified, the named or numbered\n * backreference is passed forward to the next regex or returned.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {Array} chain Regexes that each search for matches within preceding results.\n * @returns {Array} Matches by the last regex in the chain, or an empty array.\n * @example\n *\n * // Basic usage; matches numbers within <b> tags\n * XRegExp.matchChain('1 <b>2</b> 3 <b>4 a 56</b>', [\n *   XRegExp('(?is)<b>.*?</b>'),\n *   /\\d+/\n * ]);\n * // -> ['2', '4', '56']\n *\n * // Passing forward and returning specific backreferences\n * const html = `<a href=\"http://xregexp.com/api/\">XRegExp</a>\n *               <a href=\"http://www.google.com/\">Google</a>`;\n * XRegExp.matchChain(html, [\n *   {regex: /<a href=\"([^\"]+)\">/i, backref: 1},\n *   {regex: XRegExp('(?i)^https?://(?<domain>[^/?#]+)'), backref: 'domain'}\n * ]);\n * // -> ['xregexp.com', 'www.google.com']\n */\n\n\nXRegExp.matchChain = function (str, chain) {\n  return function recurseChain(values, level) {\n    var item = chain[level].regex ? chain[level] : {\n      regex: chain[level]\n    };\n    var matches = [];\n\n    function addMatch(match) {\n      if (item.backref) {\n        var ERR_UNDEFINED_GROUP = \"Backreference to undefined group: \".concat(item.backref);\n        var isNamedBackref = isNaN(item.backref);\n\n        if (isNamedBackref && XRegExp.isInstalled('namespacing')) {\n          // `groups` has `null` as prototype, so using `in` instead of `hasOwnProperty`\n          if (!(match.groups && item.backref in match.groups)) {\n            throw new ReferenceError(ERR_UNDEFINED_GROUP);\n          }\n        } else if (!match.hasOwnProperty(item.backref)) {\n          throw new ReferenceError(ERR_UNDEFINED_GROUP);\n        }\n\n        var backrefValue = isNamedBackref && XRegExp.isInstalled('namespacing') ? match.groups[item.backref] : match[item.backref];\n        matches.push(backrefValue || '');\n      } else {\n        matches.push(match[0]);\n      }\n    }\n\n    var _iterator3 = _createForOfIteratorHelper(values),\n        _step3;\n\n    try {\n      for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n        var value = _step3.value;\n        (0, _forEach[\"default\"])(XRegExp).call(XRegExp, value, item.regex, addMatch);\n      }\n    } catch (err) {\n      _iterator3.e(err);\n    } finally {\n      _iterator3.f();\n    }\n\n    return level === chain.length - 1 || !matches.length ? matches : recurseChain(matches, level + 1);\n  }([str], 0);\n};\n/**\n * Returns a new string with one or all matches of a pattern replaced. The pattern can be a string\n * or regex, and the replacement can be a string or a function to be called for each match. To\n * perform a global search and replace, use the optional `scope` argument or include flag g if using\n * a regex. Replacement strings can use `$<n>` or `${n}` for named and numbered backreferences.\n * Replacement functions can use named backreferences via the last argument. Also fixes browser bugs\n * compared to the native `String.prototype.replace` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp|String} search Search pattern to be replaced.\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\n *   Replacement strings can include special replacement syntax:\n *     - $$ - Inserts a literal $ character.\n *     - $&, $0 - Inserts the matched substring.\n *     - $` - Inserts the string that precedes the matched substring (left context).\n *     - $' - Inserts the string that follows the matched substring (right context).\n *     - $n, $nn - Where n/nn are digits referencing an existing capturing group, inserts\n *       backreference n/nn.\n *     - $<n>, ${n} - Where n is a name or any number of digits that reference an existing capturing\n *       group, inserts backreference n.\n *   Replacement functions are invoked with three or more arguments:\n *     - args[0] - The matched substring (corresponds to `$&` above). If the `namespacing` feature\n *       is off, named backreferences are accessible as properties of this argument.\n *     - args[1..n] - One argument for each backreference (corresponding to `$1`, `$2`, etc. above).\n *       If the regex has no capturing groups, no arguments appear in this position.\n *     - args[n+1] - The zero-based index of the match within the entire search string.\n *     - args[n+2] - The total string being searched.\n *     - args[n+3] - If the the search pattern is a regex with named capturing groups, the last\n *       argument is the groups object. Its keys are the backreference names and its values are the\n *       backreference values. If the `namespacing` feature is off, this argument is not present.\n * @param {String} [scope] Use 'one' to replace the first match only, or 'all'. Defaults to 'one'.\n *   Defaults to 'all' if using a regex with flag g.\n * @returns {String} New string with one or all matches replaced.\n * @example\n *\n * // Regex search, using named backreferences in replacement string\n * const name = XRegExp('(?<first>\\\\w+) (?<last>\\\\w+)');\n * XRegExp.replace('John Smith', name, '$<last>, $<first>');\n * // -> 'Smith, John'\n *\n * // Regex search, using named backreferences in replacement function\n * XRegExp.replace('John Smith', name, (...args) => {\n *   const groups = args[args.length - 1];\n *   return `${groups.last}, ${groups.first}`;\n * });\n * // -> 'Smith, John'\n *\n * // String search, with replace-all\n * XRegExp.replace('RegExp builds RegExps', 'RegExp', 'XRegExp', 'all');\n * // -> 'XRegExp builds XRegExps'\n */\n\n\nXRegExp.replace = function (str, search, replacement, scope) {\n  var isRegex = XRegExp.isRegExp(search);\n  var global = search.global && scope !== 'one' || scope === 'all';\n  var cacheKey = (global ? 'g' : '') + (search.sticky ? 'y' : '') || 'noGY';\n  var s2 = search;\n\n  if (isRegex) {\n    search[REGEX_DATA] = search[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.exec`/`match`. Since a copy is used, `search`'s\n    // `lastIndex` isn't updated *during* replacement iterations\n\n    s2 = search[REGEX_DATA][cacheKey] || (search[REGEX_DATA][cacheKey] = copyRegex(search, {\n      addG: !!global,\n      removeG: scope === 'one',\n      isInternalOnly: true\n    }));\n  } else if (global) {\n    s2 = new RegExp(XRegExp.escape(String(search)), 'g');\n  } // Fixed `replace` required for named backreferences, etc.\n\n\n  var result = fixed.replace.call(nullThrows(str), s2, replacement);\n\n  if (isRegex && search.global) {\n    // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\n    search.lastIndex = 0;\n  }\n\n  return result;\n};\n/**\n * Performs batch processing of string replacements. Used like `XRegExp.replace`, but accepts an\n * array of replacement details. Later replacements operate on the output of earlier replacements.\n * Replacement details are accepted as an array with a regex or string to search for, the\n * replacement string or function, and an optional scope of 'one' or 'all'. Uses the XRegExp\n * replacement text syntax, which supports named backreference properties via `$<name>` or\n * `${name}`.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {Array} replacements Array of replacement detail arrays.\n * @returns {String} New string with all replacements.\n * @example\n *\n * str = XRegExp.replaceEach(str, [\n *   [XRegExp('(?<name>a)'), 'z$<name>'],\n *   [/b/gi, 'y'],\n *   [/c/g, 'x', 'one'], // scope 'one' overrides /g\n *   [/d/, 'w', 'all'],  // scope 'all' overrides lack of /g\n *   ['e', 'v', 'all'],  // scope 'all' allows replace-all for strings\n *   [/f/g, (match) => match.toUpperCase()]\n * ]);\n */\n\n\nXRegExp.replaceEach = function (str, replacements) {\n  var _iterator4 = _createForOfIteratorHelper(replacements),\n      _step4;\n\n  try {\n    for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n      var r = _step4.value;\n      str = XRegExp.replace(str, r[0], r[1], r[2]);\n    }\n  } catch (err) {\n    _iterator4.e(err);\n  } finally {\n    _iterator4.f();\n  }\n\n  return str;\n};\n/**\n * Splits a string into an array of strings using a regex or string separator. Matches of the\n * separator are not included in the result array. However, if `separator` is a regex that contains\n * capturing groups, backreferences are spliced into the result each time `separator` is matched.\n * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably\n * cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to split.\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {Array} Array of substrings.\n * @example\n *\n * // Basic use\n * XRegExp.split('a b c', ' ');\n * // -> ['a', 'b', 'c']\n *\n * // With limit\n * XRegExp.split('a b c', ' ', 2);\n * // -> ['a', 'b']\n *\n * // Backreferences in result array\n * XRegExp.split('..word1..', /([a-z]+)(\\d+)/i);\n * // -> ['..', 'word', '1', '..']\n */\n\n\nXRegExp.split = function (str, separator, limit) {\n  return fixed.split.call(nullThrows(str), separator, limit);\n};\n/**\n * Executes a regex search in a specified string. Returns `true` or `false`. Optional `pos` and\n * `sticky` arguments specify the search start position, and whether the match must start at the\n * specified position only. The `lastIndex` property of the provided regex is not used, but is\n * updated for compatibility. Also fixes browser bugs compared to the native\n * `RegExp.prototype.test` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Number} [pos=0] Zero-based index at which to start the search.\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\n *   only. The string `'sticky'` is accepted as an alternative to `true`.\n * @returns {boolean} Whether the regex matched the provided value.\n * @example\n *\n * // Basic use\n * XRegExp.test('abc', /c/); // -> true\n *\n * // With pos and sticky\n * XRegExp.test('abc', /c/, 0, 'sticky'); // -> false\n * XRegExp.test('abc', /c/, 2, 'sticky'); // -> true\n */\n// Do this the easy way :-)\n\n\nXRegExp.test = function (str, regex, pos, sticky) {\n  return !!XRegExp.exec(str, regex, pos, sticky);\n};\n/**\n * Uninstalls optional features according to the specified options. Used to undo the actions of\n * `XRegExp.install`.\n *\n * @memberOf XRegExp\n * @param {Object|String} options Options object or string.\n * @example\n *\n * // With an options object\n * XRegExp.uninstall({\n *   // Disables support for astral code points in Unicode addons (unless enabled per regex)\n *   astral: true,\n *\n *   // Don't add named capture groups to the `groups` property of matches\n *   namespacing: true\n * });\n *\n * // With an options string\n * XRegExp.uninstall('astral namespacing');\n */\n\n\nXRegExp.uninstall = function (options) {\n  options = prepareOptions(options);\n\n  if (features.astral && options.astral) {\n    setAstral(false);\n  }\n\n  if (features.namespacing && options.namespacing) {\n    setNamespacing(false);\n  }\n};\n/**\n * Returns an XRegExp object that is the union of the given patterns. Patterns can be provided as\n * regex objects or strings. Metacharacters are escaped in patterns provided as strings.\n * Backreferences in provided regex objects are automatically renumbered to work correctly within\n * the larger combined pattern. Native flags used by provided regexes are ignored in favor of the\n * `flags` argument.\n *\n * @memberOf XRegExp\n * @param {Array} patterns Regexes and strings to combine.\n * @param {String} [flags] Any combination of XRegExp flags.\n * @param {Object} [options] Options object with optional properties:\n *   - `conjunction` {String} Type of conjunction to use: 'or' (default) or 'none'.\n * @returns {RegExp} Union of the provided regexes and strings.\n * @example\n *\n * XRegExp.union(['a+b*c', /(dogs)\\1/, /(cats)\\1/], 'i');\n * // -> /a\\+b\\*c|(dogs)\\1|(cats)\\2/i\n *\n * XRegExp.union([/man/, /bear/, /pig/], 'i', {conjunction: 'none'});\n * // -> /manbearpig/i\n */\n\n\nXRegExp.union = function (patterns, flags, options) {\n  options = options || {};\n  var conjunction = options.conjunction || 'or';\n  var numCaptures = 0;\n  var numPriorCaptures;\n  var captureNames;\n\n  function rewrite(match, paren, backref) {\n    var name = captureNames[numCaptures - numPriorCaptures]; // Capturing group\n\n    if (paren) {\n      ++numCaptures; // If the current capture has a name, preserve the name\n\n      if (name) {\n        return \"(?<\".concat(name, \">\");\n      } // Backreference\n\n    } else if (backref) {\n      // Rewrite the backreference\n      return \"\\\\\".concat(+backref + numPriorCaptures);\n    }\n\n    return match;\n  }\n\n  if (!(isType(patterns, 'Array') && patterns.length)) {\n    throw new TypeError('Must provide a nonempty array of patterns to merge');\n  }\n\n  var parts = /(\\()(?!\\?)|\\\\([1-9]\\d*)|\\\\[\\s\\S]|\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/g;\n  var output = [];\n\n  var _iterator5 = _createForOfIteratorHelper(patterns),\n      _step5;\n\n  try {\n    for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n      var pattern = _step5.value;\n\n      if (XRegExp.isRegExp(pattern)) {\n        numPriorCaptures = numCaptures;\n        captureNames = pattern[REGEX_DATA] && pattern[REGEX_DATA].captureNames || []; // Rewrite backreferences. Passing to XRegExp dies on octals and ensures patterns are\n        // independently valid; helps keep this simple. Named captures are put back\n\n        output.push(XRegExp(pattern.source).source.replace(parts, rewrite));\n      } else {\n        output.push(XRegExp.escape(pattern));\n      }\n    }\n  } catch (err) {\n    _iterator5.e(err);\n  } finally {\n    _iterator5.f();\n  }\n\n  var separator = conjunction === 'none' ? '' : '|';\n  return XRegExp(output.join(separator), flags);\n}; // ==--------------------------==\n// Fixed/extended native methods\n// ==--------------------------==\n\n/**\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\n * bugs in the native `RegExp.prototype.exec`. Use via `XRegExp.exec`.\n *\n * @memberOf RegExp\n * @param {String} str String to search.\n * @returns {Array} Match array with named backreference properties, or `null`.\n */\n\n\nfixed.exec = function (str) {\n  var origLastIndex = this.lastIndex;\n  var match = RegExp.prototype.exec.apply(this, arguments);\n\n  if (match) {\n    // Fix browsers whose `exec` methods don't return `undefined` for nonparticipating capturing\n    // groups. This fixes IE 5.5-8, but not IE 9's quirks mode or emulation of older IEs. IE 9\n    // in standards mode follows the spec.\n    if (!correctExecNpcg && match.length > 1 && (0, _indexOf[\"default\"])(match).call(match, '') !== -1) {\n      var _context3;\n\n      var r2 = copyRegex(this, {\n        removeG: true,\n        isInternalOnly: true\n      }); // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed\n      // matching due to characters outside the match\n\n      (0, _slice[\"default\"])(_context3 = String(str)).call(_context3, match.index).replace(r2, function () {\n        var len = arguments.length; // Skip index 0 and the last 2\n\n        for (var i = 1; i < len - 2; ++i) {\n          if ((i < 0 || arguments.length <= i ? undefined : arguments[i]) === undefined) {\n            match[i] = undefined;\n          }\n        }\n      });\n    } // Attach named capture properties\n\n\n    if (this[REGEX_DATA] && this[REGEX_DATA].captureNames) {\n      var groupsObject = match;\n\n      if (XRegExp.isInstalled('namespacing')) {\n        // https://tc39.github.io/proposal-regexp-named-groups/#sec-regexpbuiltinexec\n        match.groups = (0, _create[\"default\"])(null);\n        groupsObject = match.groups;\n      } // Skip index 0\n\n\n      for (var i = 1; i < match.length; ++i) {\n        var name = this[REGEX_DATA].captureNames[i - 1];\n\n        if (name) {\n          groupsObject[name] = match[i];\n        }\n      } // Preserve any existing `groups` obj that came from native ES2018 named capture\n\n    } else if (!match.groups && XRegExp.isInstalled('namespacing')) {\n      match.groups = undefined;\n    } // Fix browsers that increment `lastIndex` after zero-length matches\n\n\n    if (this.global && !match[0].length && this.lastIndex > match.index) {\n      this.lastIndex = match.index;\n    }\n  }\n\n  if (!this.global) {\n    // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\n    this.lastIndex = origLastIndex;\n  }\n\n  return match;\n};\n/**\n * Fixes browser bugs in the native `RegExp.prototype.test`.\n *\n * @memberOf RegExp\n * @param {String} str String to search.\n * @returns {boolean} Whether the regex matched the provided value.\n */\n\n\nfixed.test = function (str) {\n  // Do this the easy way :-)\n  return !!fixed.exec.call(this, str);\n};\n/**\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\n * bugs in the native `String.prototype.match`.\n *\n * @memberOf String\n * @param {RegExp|*} regex Regex to search with. If not a regex object, it is passed to `RegExp`.\n * @returns {Array} If `regex` uses flag g, an array of match strings or `null`. Without flag g,\n *   the result of calling `regex.exec(this)`.\n */\n\n\nfixed.match = function (regex) {\n  if (!XRegExp.isRegExp(regex)) {\n    // Use the native `RegExp` rather than `XRegExp`\n    regex = new RegExp(regex);\n  } else if (regex.global) {\n    var result = String.prototype.match.apply(this, arguments); // Fixes IE bug\n\n    regex.lastIndex = 0;\n    return result;\n  }\n\n  return fixed.exec.call(regex, nullThrows(this));\n};\n/**\n * Adds support for `${n}` (or `$<n>`) tokens for named and numbered backreferences in replacement\n * text, and provides named backreferences to replacement functions as `arguments[0].name`. Also\n * fixes browser bugs in replacement text syntax when performing a replacement using a nonregex\n * search value, and the value of a replacement regex's `lastIndex` property during replacement\n * iterations and upon completion. Note that this doesn't support SpiderMonkey's proprietary third\n * (`flags`) argument. Use via `XRegExp.replace`.\n *\n * @memberOf String\n * @param {RegExp|String} search Search pattern to be replaced.\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\n * @returns {string} New string with one or all matches replaced.\n */\n\n\nfixed.replace = function (search, replacement) {\n  var isRegex = XRegExp.isRegExp(search);\n  var origLastIndex;\n  var captureNames;\n  var result;\n\n  if (isRegex) {\n    if (search[REGEX_DATA]) {\n      captureNames = search[REGEX_DATA].captureNames;\n    } // Only needed if `search` is nonglobal\n\n\n    origLastIndex = search.lastIndex;\n  } else {\n    search += ''; // Type-convert\n  } // Don't use `typeof`; some older browsers return 'function' for regex objects\n\n\n  if (isType(replacement, 'Function')) {\n    // Stringifying `this` fixes a bug in IE < 9 where the last argument in replacement\n    // functions isn't type-converted to a string\n    result = String(this).replace(search, function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      if (captureNames) {\n        var groupsObject;\n\n        if (XRegExp.isInstalled('namespacing')) {\n          // https://tc39.github.io/proposal-regexp-named-groups/#sec-regexpbuiltinexec\n          groupsObject = (0, _create[\"default\"])(null);\n          args.push(groupsObject);\n        } else {\n          // Change the `args[0]` string primitive to a `String` object that can store\n          // properties. This really does need to use `String` as a constructor\n          args[0] = new String(args[0]);\n          groupsObject = args[0];\n        } // Store named backreferences\n\n\n        for (var i = 0; i < captureNames.length; ++i) {\n          if (captureNames[i]) {\n            groupsObject[captureNames[i]] = args[i + 1];\n          }\n        }\n      } // ES6 specs the context for replacement functions as `undefined`\n\n\n      return replacement.apply(void 0, args);\n    });\n  } else {\n    // Ensure that the last value of `args` will be a string when given nonstring `this`,\n    // while still throwing on null or undefined context\n    result = String(nullThrows(this)).replace(search, function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return String(replacement).replace(replacementToken, replacer);\n\n      function replacer($0, bracketed, angled, dollarToken) {\n        bracketed = bracketed || angled; // ES2018 added a new trailing `groups` arg that's passed to replacement functions\n        // when the search regex uses native named capture\n\n        var numNonCaptureArgs = isType(args[args.length - 1], 'Object') ? 4 : 3;\n        var numCaptures = args.length - numNonCaptureArgs; // Handle named or numbered backreference with curly or angled braces: ${n}, $<n>\n\n        if (bracketed) {\n          // Handle backreference to numbered capture, if `bracketed` is an integer. Use\n          // `0` for the entire match. Any number of leading zeros may be used.\n          if (/^\\d+$/.test(bracketed)) {\n            // Type-convert and drop leading zeros\n            var _n = +bracketed;\n\n            if (_n <= numCaptures) {\n              return args[_n] || '';\n            }\n          } // Handle backreference to named capture. If the name does not refer to an\n          // existing capturing group, it's an error. Also handles the error for numbered\n          // backference that does not refer to an existing group.\n          // Using `indexOf` since having groups with the same name is already an error,\n          // otherwise would need `lastIndexOf`.\n\n\n          var n = captureNames ? (0, _indexOf[\"default\"])(captureNames).call(captureNames, bracketed) : -1;\n\n          if (n < 0) {\n            throw new SyntaxError(\"Backreference to undefined group \".concat($0));\n          }\n\n          return args[n + 1] || '';\n        } // Handle `$`-prefixed variable\n        // Handle space/blank first because type conversion with `+` drops space padding\n        // and converts spaces and empty strings to `0`\n\n\n        if (dollarToken === '' || dollarToken === ' ') {\n          throw new SyntaxError(\"Invalid token \".concat($0));\n        }\n\n        if (dollarToken === '&' || +dollarToken === 0) {\n          // $&, $0 (not followed by 1-9), $00\n          return args[0];\n        }\n\n        if (dollarToken === '$') {\n          // $$\n          return '$';\n        }\n\n        if (dollarToken === '`') {\n          var _context4;\n\n          // $` (left context)\n          return (0, _slice[\"default\"])(_context4 = args[args.length - 1]).call(_context4, 0, args[args.length - 2]);\n        }\n\n        if (dollarToken === \"'\") {\n          var _context5;\n\n          // $' (right context)\n          return (0, _slice[\"default\"])(_context5 = args[args.length - 1]).call(_context5, args[args.length - 2] + args[0].length);\n        } // Handle numbered backreference without braces\n        // Type-convert and drop leading zero\n\n\n        dollarToken = +dollarToken; // XRegExp behavior for `$n` and `$nn`:\n        // - Backrefs end after 1 or 2 digits. Use `${..}` or `$<..>` for more digits.\n        // - `$1` is an error if no capturing groups.\n        // - `$10` is an error if less than 10 capturing groups. Use `${1}0` or `$<1>0`\n        //   instead.\n        // - `$01` is `$1` if at least one capturing group, else it's an error.\n        // - `$0` (not followed by 1-9) and `$00` are the entire match.\n        // Native behavior, for comparison:\n        // - Backrefs end after 1 or 2 digits. Cannot reference capturing group 100+.\n        // - `$1` is a literal `$1` if no capturing groups.\n        // - `$10` is `$1` followed by a literal `0` if less than 10 capturing groups.\n        // - `$01` is `$1` if at least one capturing group, else it's a literal `$01`.\n        // - `$0` is a literal `$0`.\n\n        if (!isNaN(dollarToken)) {\n          if (dollarToken > numCaptures) {\n            throw new SyntaxError(\"Backreference to undefined group \".concat($0));\n          }\n\n          return args[dollarToken] || '';\n        } // `$` followed by an unsupported char is an error, unlike native JS\n\n\n        throw new SyntaxError(\"Invalid token \".concat($0));\n      }\n    });\n  }\n\n  if (isRegex) {\n    if (search.global) {\n      // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\n      search.lastIndex = 0;\n    } else {\n      // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\n      search.lastIndex = origLastIndex;\n    }\n  }\n\n  return result;\n};\n/**\n * Fixes browser bugs in the native `String.prototype.split`. Use via `XRegExp.split`.\n *\n * @memberOf String\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {!Array} Array of substrings.\n */\n\n\nfixed.split = function (separator, limit) {\n  if (!XRegExp.isRegExp(separator)) {\n    // Browsers handle nonregex split correctly, so use the faster native method\n    return String.prototype.split.apply(this, arguments);\n  }\n\n  var str = String(this);\n  var output = [];\n  var origLastIndex = separator.lastIndex;\n  var lastLastIndex = 0;\n  var lastLength; // Values for `limit`, per the spec:\n  // If undefined: pow(2,32) - 1\n  // If 0, Infinity, or NaN: 0\n  // If positive number: limit = floor(limit); if (limit >= pow(2,32)) limit -= pow(2,32);\n  // If negative number: pow(2,32) - floor(abs(limit))\n  // If other: Type-convert, then use the above rules\n  // This line fails in very strange ways for some values of `limit` in Opera 10.5-10.63, unless\n  // Opera Dragonfly is open (go figure). It works in at least Opera 9.5-10.1 and 11+\n\n  limit = (limit === undefined ? -1 : limit) >>> 0;\n  (0, _forEach[\"default\"])(XRegExp).call(XRegExp, str, separator, function (match) {\n    // This condition is not the same as `if (match[0].length)`\n    if (match.index + match[0].length > lastLastIndex) {\n      output.push((0, _slice[\"default\"])(str).call(str, lastLastIndex, match.index));\n\n      if (match.length > 1 && match.index < str.length) {\n        Array.prototype.push.apply(output, (0, _slice[\"default\"])(match).call(match, 1));\n      }\n\n      lastLength = match[0].length;\n      lastLastIndex = match.index + lastLength;\n    }\n  });\n\n  if (lastLastIndex === str.length) {\n    if (!separator.test('') || lastLength) {\n      output.push('');\n    }\n  } else {\n    output.push((0, _slice[\"default\"])(str).call(str, lastLastIndex));\n  }\n\n  separator.lastIndex = origLastIndex;\n  return output.length > limit ? (0, _slice[\"default\"])(output).call(output, 0, limit) : output;\n}; // ==--------------------------==\n// Built-in syntax/flag tokens\n// ==--------------------------==\n\n/*\n * Letter escapes that natively match literal characters: `\\a`, `\\A`, etc. These should be\n * SyntaxErrors but are allowed in web reality. XRegExp makes them errors for cross-browser\n * consistency and to reserve their syntax, but lets them be superseded by addons.\n */\n\n\nXRegExp.addToken(/\\\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|x(?![\\dA-Fa-f]{2}))/, function (match, scope) {\n  // \\B is allowed in default scope only\n  if (match[1] === 'B' && scope === defaultScope) {\n    return match[0];\n  }\n\n  throw new SyntaxError(\"Invalid escape \".concat(match[0]));\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Unicode code point escape with curly braces: `\\u{N..}`. `N..` is any one or more digit\n * hexadecimal number from 0-10FFFF, and can include leading zeros. Requires the native ES6 `u` flag\n * to support code points greater than U+FFFF. Avoids converting code points above U+FFFF to\n * surrogate pairs (which could be done without flag `u`), since that could lead to broken behavior\n * if you follow a `\\u{N..}` token that references a code point above U+FFFF with a quantifier, or\n * if you use the same in a character class.\n */\n\nXRegExp.addToken(/\\\\u{([\\dA-Fa-f]+)}/, function (match, scope, flags) {\n  var code = dec(match[1]);\n\n  if (code > 0x10FFFF) {\n    throw new SyntaxError(\"Invalid Unicode code point \".concat(match[0]));\n  }\n\n  if (code <= 0xFFFF) {\n    // Converting to \\uNNNN avoids needing to escape the literal character and keep it\n    // separate from preceding tokens\n    return \"\\\\u\".concat(pad4(hex(code)));\n  } // If `code` is between 0xFFFF and 0x10FFFF, require and defer to native handling\n\n\n  if (hasNativeU && (0, _indexOf[\"default\"])(flags).call(flags, 'u') !== -1) {\n    return match[0];\n  }\n\n  throw new SyntaxError('Cannot use Unicode code point above \\\\u{FFFF} without flag u');\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Comment pattern: `(?# )`. Inline comments are an alternative to the line comments allowed in\n * free-spacing mode (flag x).\n */\n\nXRegExp.addToken(/\\(\\?#[^)]*\\)/, getContextualTokenSeparator, {\n  leadChar: '('\n});\n/*\n * Whitespace and line comments, in free-spacing mode (aka extended mode, flag x) only.\n */\n\nXRegExp.addToken(/\\s+|#[^\\n]*\\n?/, getContextualTokenSeparator, {\n  flag: 'x'\n});\n/*\n * Dot, in dotAll mode (aka singleline mode, flag s) only.\n */\n\nif (!hasNativeS) {\n  XRegExp.addToken(/\\./, function () {\n    return '[\\\\s\\\\S]';\n  }, {\n    flag: 's',\n    leadChar: '.'\n  });\n}\n/*\n * Named backreference: `\\k<name>`. Backreference names can use RegExpIdentifierName characters\n * only. Also allows numbered backreferences as `\\k<n>`.\n */\n\n\nXRegExp.addToken(/\\\\k<([^>]+)>/, function (match) {\n  var _context6, _context7;\n\n  // Groups with the same name is an error, else would need `lastIndexOf`\n  var index = isNaN(match[1]) ? (0, _indexOf[\"default\"])(_context6 = this.captureNames).call(_context6, match[1]) + 1 : +match[1];\n  var endIndex = match.index + match[0].length;\n\n  if (!index || index > this.captureNames.length) {\n    throw new SyntaxError(\"Backreference to undefined group \".concat(match[0]));\n  } // Keep backreferences separate from subsequent literal numbers. This avoids e.g.\n  // inadvertedly changing `(?<n>)\\k<n>1` to `()\\11`.\n\n\n  return (0, _concat[\"default\"])(_context7 = \"\\\\\".concat(index)).call(_context7, endIndex === match.input.length || isNaN(match.input[endIndex]) ? '' : '(?:)');\n}, {\n  leadChar: '\\\\'\n});\n/*\n * Numbered backreference or octal, plus any following digits: `\\0`, `\\11`, etc. Octals except `\\0`\n * not followed by 0-9 and backreferences to unopened capture groups throw an error. Other matches\n * are returned unaltered. IE < 9 doesn't support backreferences above `\\99` in regex syntax.\n */\n\nXRegExp.addToken(/\\\\(\\d+)/, function (match, scope) {\n  if (!(scope === defaultScope && /^[1-9]/.test(match[1]) && +match[1] <= this.captureNames.length) && match[1] !== '0') {\n    throw new SyntaxError(\"Cannot use octal escape or backreference to undefined group \".concat(match[0]));\n  }\n\n  return match[0];\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Named capturing group; match the opening delimiter only: `(?<name>`. Capture names can use the\n * RegExpIdentifierName characters only. Names can't be integers. Supports Python-style\n * `(?P<name>` as an alternate syntax to avoid issues in some older versions of Opera which natively\n * supported the Python-style syntax. Otherwise, XRegExp might treat numbered backreferences to\n * Python-style named capture as octals.\n */\n\nXRegExp.addToken(/\\(\\?P?<((?:[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])(?:[\\$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDF70-\\uDF85\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]|\\uDB40[\\uDD00-\\uDDEF])*)>/, function (match) {\n  var _context8;\n\n  if (!XRegExp.isInstalled('namespacing') && (match[1] === 'length' || match[1] === '__proto__')) {\n    throw new SyntaxError(\"Cannot use reserved word as capture name \".concat(match[0]));\n  }\n\n  if ((0, _indexOf[\"default\"])(_context8 = this.captureNames).call(_context8, match[1]) !== -1) {\n    throw new SyntaxError(\"Cannot use same name for multiple groups \".concat(match[0]));\n  }\n\n  this.captureNames.push(match[1]);\n  this.hasNamedCapture = true;\n  return '(';\n}, {\n  leadChar: '('\n});\n/*\n * Capturing group; match the opening parenthesis only. Required for support of named capturing\n * groups. Also adds named capture only mode (flag n).\n */\n\nXRegExp.addToken(/\\((?!\\?)/, function (match, scope, flags) {\n  if ((0, _indexOf[\"default\"])(flags).call(flags, 'n') !== -1) {\n    return '(?:';\n  }\n\n  this.captureNames.push(null);\n  return '(';\n}, {\n  optionalFlags: 'n',\n  leadChar: '('\n});\nvar _default = XRegExp;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"@babel/runtime-corejs3/core-js-stable/array/from\":5,\"@babel/runtime-corejs3/core-js-stable/array/is-array\":6,\"@babel/runtime-corejs3/core-js-stable/instance/concat\":7,\"@babel/runtime-corejs3/core-js-stable/instance/flags\":8,\"@babel/runtime-corejs3/core-js-stable/instance/for-each\":9,\"@babel/runtime-corejs3/core-js-stable/instance/index-of\":10,\"@babel/runtime-corejs3/core-js-stable/instance/slice\":11,\"@babel/runtime-corejs3/core-js-stable/instance/sort\":12,\"@babel/runtime-corejs3/core-js-stable/object/create\":13,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/core-js-stable/parse-int\":15,\"@babel/runtime-corejs3/core-js-stable/symbol\":16,\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24,\"@babel/runtime-corejs3/helpers/slicedToArray\":27}],5:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/array/from\");\n},{\"core-js-pure/stable/array/from\":208}],6:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/array/is-array\");\n},{\"core-js-pure/stable/array/is-array\":209}],7:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/concat\");\n},{\"core-js-pure/stable/instance/concat\":212}],8:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/flags\");\n},{\"core-js-pure/stable/instance/flags\":213}],9:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/for-each\");\n},{\"core-js-pure/stable/instance/for-each\":214}],10:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/index-of\");\n},{\"core-js-pure/stable/instance/index-of\":215}],11:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/slice\");\n},{\"core-js-pure/stable/instance/slice\":216}],12:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/sort\");\n},{\"core-js-pure/stable/instance/sort\":217}],13:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/object/create\");\n},{\"core-js-pure/stable/object/create\":218}],14:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/object/define-property\");\n},{\"core-js-pure/stable/object/define-property\":219}],15:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/parse-int\");\n},{\"core-js-pure/stable/parse-int\":220}],16:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/symbol\");\n},{\"core-js-pure/stable/symbol\":221}],17:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/array/from\");\n},{\"core-js-pure/features/array/from\":52}],18:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/array/is-array\");\n},{\"core-js-pure/features/array/is-array\":53}],19:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/get-iterator-method\");\n},{\"core-js-pure/features/get-iterator-method\":54}],20:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/instance/slice\");\n},{\"core-js-pure/features/instance/slice\":55}],21:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/symbol\");\n},{\"core-js-pure/features/symbol\":56}],22:[function(require,module,exports){\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{}],23:[function(require,module,exports){\nvar _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n  if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"@babel/runtime-corejs3/core-js/array/is-array\":18}],24:[function(require,module,exports){\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{}],25:[function(require,module,exports){\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/core-js/symbol\":21}],26:[function(require,module,exports){\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{}],27:[function(require,module,exports){\nvar arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"./arrayWithHoles.js\":23,\"./iterableToArrayLimit.js\":25,\"./nonIterableRest.js\":26,\"./unsupportedIterableToArray.js\":28}],28:[function(require,module,exports){\nvar _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  var _context;\n\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n  var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"./arrayLikeToArray.js\":22,\"@babel/runtime-corejs3/core-js/array/from\":17,\"@babel/runtime-corejs3/core-js/instance/slice\":20}],29:[function(require,module,exports){\nvar parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n\n},{\"../../stable/array/from\":208}],30:[function(require,module,exports){\nvar parent = require('../../stable/array/is-array');\n\nmodule.exports = parent;\n\n},{\"../../stable/array/is-array\":209}],31:[function(require,module,exports){\nvar parent = require('../stable/get-iterator-method');\n\nmodule.exports = parent;\n\n},{\"../stable/get-iterator-method\":211}],32:[function(require,module,exports){\nvar parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n\n},{\"../../stable/instance/slice\":216}],33:[function(require,module,exports){\nvar parent = require('../../stable/symbol');\n\nmodule.exports = parent;\n\n},{\"../../stable/symbol\":221}],34:[function(require,module,exports){\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n\n},{\"../../internals/path\":142,\"../../modules/es.array.from\":170,\"../../modules/es.string.iterator\":184}],35:[function(require,module,exports){\nrequire('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n\n},{\"../../internals/path\":142,\"../../modules/es.array.is-array\":172}],36:[function(require,module,exports){\nrequire('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.concat\":168}],37:[function(require,module,exports){\nrequire('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.for-each\":169}],38:[function(require,module,exports){\nrequire('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.index-of\":171}],39:[function(require,module,exports){\nrequire('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.slice\":174}],40:[function(require,module,exports){\nrequire('../../../modules/es.array.sort');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').sort;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.sort\":175}],41:[function(require,module,exports){\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n\n},{\"../internals/get-iterator-method\":101,\"../modules/es.array.iterator\":173,\"../modules/es.string.iterator\":184}],42:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.concat;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/concat\":36}],43:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar flags = require('../regexp/flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (it) {\n  return (it === RegExpPrototype || isPrototypeOf(RegExpPrototype, it)) ? flags(it) : it.flags;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../regexp/flags\":50}],44:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.indexOf;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/index-of\":38}],45:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.slice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/slice\":39}],46:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/sort');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.sort;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.sort) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/sort\":40}],47:[function(require,module,exports){\nrequire('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n  return Object.create(P, D);\n};\n\n},{\"../../internals/path\":142,\"../../modules/es.object.create\":178}],48:[function(require,module,exports){\nrequire('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n  return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n},{\"../../internals/path\":142,\"../../modules/es.object.define-property\":179}],49:[function(require,module,exports){\nrequire('../modules/es.parse-int');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseInt;\n\n},{\"../internals/path\":142,\"../modules/es.parse-int\":181}],50:[function(require,module,exports){\nrequire('../../modules/es.regexp.flags');\nvar uncurryThis = require('../../internals/function-uncurry-this');\nvar regExpFlags = require('../../internals/regexp-flags');\n\nmodule.exports = uncurryThis(regExpFlags);\n\n},{\"../../internals/function-uncurry-this\":99,\"../../internals/regexp-flags\":144,\"../../modules/es.regexp.flags\":183}],51:[function(require,module,exports){\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n\n},{\"../../internals/path\":142,\"../../modules/es.array.concat\":168,\"../../modules/es.json.to-string-tag\":176,\"../../modules/es.math.to-string-tag\":177,\"../../modules/es.object.to-string\":180,\"../../modules/es.reflect.to-string-tag\":182,\"../../modules/es.symbol\":190,\"../../modules/es.symbol.async-iterator\":185,\"../../modules/es.symbol.description\":186,\"../../modules/es.symbol.has-instance\":187,\"../../modules/es.symbol.is-concat-spreadable\":188,\"../../modules/es.symbol.iterator\":189,\"../../modules/es.symbol.match\":192,\"../../modules/es.symbol.match-all\":191,\"../../modules/es.symbol.replace\":193,\"../../modules/es.symbol.search\":194,\"../../modules/es.symbol.species\":195,\"../../modules/es.symbol.split\":196,\"../../modules/es.symbol.to-primitive\":197,\"../../modules/es.symbol.to-string-tag\":198,\"../../modules/es.symbol.unscopables\":199}],52:[function(require,module,exports){\nvar parent = require('../../actual/array/from');\n\nmodule.exports = parent;\n\n},{\"../../actual/array/from\":29}],53:[function(require,module,exports){\nvar parent = require('../../actual/array/is-array');\n\nmodule.exports = parent;\n\n},{\"../../actual/array/is-array\":30}],54:[function(require,module,exports){\nvar parent = require('../actual/get-iterator-method');\n\nmodule.exports = parent;\n\n},{\"../actual/get-iterator-method\":31}],55:[function(require,module,exports){\nvar parent = require('../../actual/instance/slice');\n\nmodule.exports = parent;\n\n},{\"../../actual/instance/slice\":32}],56:[function(require,module,exports){\nvar parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n\n},{\"../../actual/symbol\":33,\"../../modules/esnext.symbol.async-dispose\":200,\"../../modules/esnext.symbol.dispose\":201,\"../../modules/esnext.symbol.matcher\":202,\"../../modules/esnext.symbol.metadata\":203,\"../../modules/esnext.symbol.observable\":204,\"../../modules/esnext.symbol.pattern-match\":205,\"../../modules/esnext.symbol.replace-all\":206}],57:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n\n},{\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/try-to-string\":162}],58:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n\n},{\"../internals/global\":104,\"../internals/is-callable\":114}],59:[function(require,module,exports){\nmodule.exports = function () { /* empty */ };\n\n},{}],60:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n\n},{\"../internals/global\":104,\"../internals/is-object\":117}],61:[function(require,module,exports){\n'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n\n},{\"../internals/array-iteration\":64,\"../internals/array-method-is-strict\":66}],62:[function(require,module,exports){\n'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n},{\"../internals/call-with-safe-iteration-closing\":72,\"../internals/create-property\":80,\"../internals/function-bind-context\":96,\"../internals/function-call\":97,\"../internals/get-iterator\":102,\"../internals/get-iterator-method\":101,\"../internals/global\":104,\"../internals/is-array-iterator-method\":112,\"../internals/is-constructor\":115,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157}],63:[function(require,module,exports){\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n},{\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153,\"../internals/to-indexed-object\":154}],64:[function(require,module,exports){\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n\n},{\"../internals/array-species-create\":71,\"../internals/function-bind-context\":96,\"../internals/function-uncurry-this\":99,\"../internals/indexed-object\":109,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157}],65:[function(require,module,exports){\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\n},{\"../internals/engine-v8-version\":89,\"../internals/fails\":94,\"../internals/well-known-symbol\":166}],66:[function(require,module,exports){\n'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\n},{\"../internals/fails\":94}],67:[function(require,module,exports){\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n\n},{\"../internals/create-property\":80,\"../internals/global\":104,\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153}],68:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n\n},{\"../internals/function-uncurry-this\":99}],69:[function(require,module,exports){\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n\n},{\"../internals/array-slice-simple\":67}],70:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n\n},{\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-constructor\":115,\"../internals/is-object\":117,\"../internals/well-known-symbol\":166}],71:[function(require,module,exports){\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n},{\"../internals/array-species-constructor\":70}],72:[function(require,module,exports){\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n\n},{\"../internals/an-object\":60,\"../internals/iterator-close\":120}],73:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n},{\"../internals/well-known-symbol\":166}],74:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n\n},{\"../internals/function-uncurry-this\":99}],75:[function(require,module,exports){\nvar global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n},{\"../internals/classof-raw\":74,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/to-string-tag-support\":160,\"../internals/well-known-symbol\":166}],76:[function(require,module,exports){\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n},{\"../internals/fails\":94}],77:[function(require,module,exports){\n'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/iterators\":122,\"../internals/iterators-core\":121,\"../internals/object-create\":127,\"../internals/set-to-string-tag\":147}],78:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/descriptors\":83,\"../internals/object-define-property\":129}],79:[function(require,module,exports){\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n},{}],80:[function(require,module,exports){\n'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/object-define-property\":129,\"../internals/to-property-key\":159}],81:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n\n},{\"../internals/create-iterator-constructor\":77,\"../internals/create-non-enumerable-property\":78,\"../internals/export\":93,\"../internals/function-call\":97,\"../internals/function-name\":98,\"../internals/is-callable\":114,\"../internals/is-pure\":118,\"../internals/iterators\":122,\"../internals/iterators-core\":121,\"../internals/object-get-prototype-of\":134,\"../internals/object-set-prototype-of\":139,\"../internals/redefine\":143,\"../internals/set-to-string-tag\":147,\"../internals/well-known-symbol\":166}],82:[function(require,module,exports){\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n\n},{\"../internals/has-own-property\":105,\"../internals/object-define-property\":129,\"../internals/path\":142,\"../internals/well-known-symbol-wrapped\":165}],83:[function(require,module,exports){\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n},{\"../internals/fails\":94}],84:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n},{\"../internals/global\":104,\"../internals/is-object\":117}],85:[function(require,module,exports){\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n},{}],86:[function(require,module,exports){\nvar userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n\n},{\"../internals/engine-user-agent\":88}],87:[function(require,module,exports){\nvar UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n\n},{\"../internals/engine-user-agent\":88}],88:[function(require,module,exports){\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n},{\"../internals/get-built-in\":100}],89:[function(require,module,exports){\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n\n},{\"../internals/engine-user-agent\":88,\"../internals/global\":104}],90:[function(require,module,exports){\nvar userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n\n},{\"../internals/engine-user-agent\":88}],91:[function(require,module,exports){\nvar path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n  return path[CONSTRUCTOR + 'Prototype'];\n};\n\n},{\"../internals/path\":142}],92:[function(require,module,exports){\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n},{}],93:[function(require,module,exports){\n'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n  var Wrapper = function (a, b, c) {\n    if (this instanceof Wrapper) {\n      switch (arguments.length) {\n        case 0: return new NativeConstructor();\n        case 1: return new NativeConstructor(a);\n        case 2: return new NativeConstructor(a, b);\n      } return new NativeConstructor(a, b, c);\n    } return apply(NativeConstructor, this, arguments);\n  };\n  Wrapper.prototype = NativeConstructor.prototype;\n  return Wrapper;\n};\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var PROTO = options.proto;\n\n  var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n  var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n  var targetPrototype = target.prototype;\n\n  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n  var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n  for (key in source) {\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contains in native\n    USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n    targetProperty = target[key];\n\n    if (USE_NATIVE) if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(nativeSource, key);\n      nativeProperty = descriptor && descriptor.value;\n    } else nativeProperty = nativeSource[key];\n\n    // export native or implementation\n    sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n    if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n    // bind timers to global for call from export context\n    if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n    // wrap global constructors for prevent changs in this version\n    else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n    // make static versions for prototype methods\n    else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n    // default case\n    else resultProperty = sourceProperty;\n\n    // add a flag to not completely full polyfills\n    if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(resultProperty, 'sham', true);\n    }\n\n    createNonEnumerableProperty(target, key, resultProperty);\n\n    if (PROTO) {\n      VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n      if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n        createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n      }\n      // export virtual prototype methods\n      createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n      // export real prototype methods\n      if (options.real && targetPrototype && !targetPrototype[key]) {\n        createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n      }\n    }\n  }\n};\n\n},{\"../internals/create-non-enumerable-property\":78,\"../internals/function-apply\":95,\"../internals/function-bind-context\":96,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/is-callable\":114,\"../internals/is-forced\":116,\"../internals/object-get-own-property-descriptor\":130,\"../internals/path\":142}],94:[function(require,module,exports){\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n},{}],95:[function(require,module,exports){\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n\n},{}],96:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n},{\"../internals/a-callable\":57,\"../internals/function-uncurry-this\":99}],97:[function(require,module,exports){\nvar call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n\n},{}],98:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n\n},{\"../internals/descriptors\":83,\"../internals/has-own-property\":105}],99:[function(require,module,exports){\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n  return fn && callBind(call, fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n\n},{}],100:[function(require,module,exports){\nvar path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n  return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n},{\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/path\":142}],101:[function(require,module,exports){\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n\n},{\"../internals/classof\":75,\"../internals/get-method\":103,\"../internals/iterators\":122,\"../internals/well-known-symbol\":166}],102:[function(require,module,exports){\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw TypeError(tryToString(argument) + ' is not iterable');\n};\n\n},{\"../internals/a-callable\":57,\"../internals/an-object\":60,\"../internals/function-call\":97,\"../internals/get-iterator-method\":101,\"../internals/global\":104,\"../internals/try-to-string\":162}],103:[function(require,module,exports){\nvar aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n\n},{\"../internals/a-callable\":57}],104:[function(require,module,exports){\n(function (global){(function (){\nvar check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],105:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/to-object\":157}],106:[function(require,module,exports){\nmodule.exports = {};\n\n},{}],107:[function(require,module,exports){\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n},{\"../internals/get-built-in\":100}],108:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n},{\"../internals/descriptors\":83,\"../internals/document-create-element\":84,\"../internals/fails\":94}],109:[function(require,module,exports){\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n\n},{\"../internals/classof-raw\":74,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/global\":104}],110:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/is-callable\":114,\"../internals/shared-store\":149}],111:[function(require,module,exports){\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n},{\"../internals/create-non-enumerable-property\":78,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/is-object\":117,\"../internals/native-weak-map\":125,\"../internals/shared-key\":148,\"../internals/shared-store\":149}],112:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n},{\"../internals/iterators\":122,\"../internals/well-known-symbol\":166}],113:[function(require,module,exports){\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n\n},{\"../internals/classof-raw\":74}],114:[function(require,module,exports){\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n\n},{}],115:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n},{\"../internals/classof\":75,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/get-built-in\":100,\"../internals/inspect-source\":110,\"../internals/is-callable\":114}],116:[function(require,module,exports){\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n},{\"../internals/fails\":94,\"../internals/is-callable\":114}],117:[function(require,module,exports){\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n},{\"../internals/is-callable\":114}],118:[function(require,module,exports){\nmodule.exports = true;\n\n},{}],119:[function(require,module,exports){\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n\n},{\"../internals/get-built-in\":100,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/object-is-prototype-of\":135,\"../internals/use-symbol-as-uid\":164}],120:[function(require,module,exports){\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n\n},{\"../internals/an-object\":60,\"../internals/function-call\":97,\"../internals/get-method\":103}],121:[function(require,module,exports){\n'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  redefine(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n},{\"../internals/fails\":94,\"../internals/is-callable\":114,\"../internals/is-pure\":118,\"../internals/object-create\":127,\"../internals/object-get-prototype-of\":134,\"../internals/redefine\":143,\"../internals/well-known-symbol\":166}],122:[function(require,module,exports){\narguments[4][106][0].apply(exports,arguments)\n},{\"dup\":106}],123:[function(require,module,exports){\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n\n},{\"../internals/to-length\":156}],124:[function(require,module,exports){\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n},{\"../internals/engine-v8-version\":89,\"../internals/fails\":94}],125:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n},{\"../internals/global\":104,\"../internals/inspect-source\":110,\"../internals/is-callable\":114}],126:[function(require,module,exports){\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n\n},{\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/string-trim\":152,\"../internals/to-string\":161,\"../internals/whitespaces\":167}],127:[function(require,module,exports){\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n},{\"../internals/an-object\":60,\"../internals/document-create-element\":84,\"../internals/enum-bug-keys\":92,\"../internals/hidden-keys\":106,\"../internals/html\":107,\"../internals/object-define-properties\":128,\"../internals/shared-key\":148}],128:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n\n},{\"../internals/an-object\":60,\"../internals/descriptors\":83,\"../internals/object-define-property\":129,\"../internals/object-keys\":137,\"../internals/to-indexed-object\":154}],129:[function(require,module,exports){\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n},{\"../internals/an-object\":60,\"../internals/descriptors\":83,\"../internals/global\":104,\"../internals/ie8-dom-define\":108,\"../internals/to-property-key\":159}],130:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/descriptors\":83,\"../internals/function-call\":97,\"../internals/has-own-property\":105,\"../internals/ie8-dom-define\":108,\"../internals/object-property-is-enumerable\":138,\"../internals/to-indexed-object\":154,\"../internals/to-property-key\":159}],131:[function(require,module,exports){\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n},{\"../internals/array-slice-simple\":67,\"../internals/classof-raw\":74,\"../internals/object-get-own-property-names\":132,\"../internals/to-indexed-object\":154}],132:[function(require,module,exports){\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n},{\"../internals/enum-bug-keys\":92,\"../internals/object-keys-internal\":136}],133:[function(require,module,exports){\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n},{}],134:[function(require,module,exports){\nvar global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof Object ? ObjectPrototype : null;\n};\n\n},{\"../internals/correct-prototype-getter\":76,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/is-callable\":114,\"../internals/shared-key\":148,\"../internals/to-object\":157}],135:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n},{\"../internals/function-uncurry-this\":99}],136:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n\n},{\"../internals/array-includes\":63,\"../internals/function-uncurry-this\":99,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/to-indexed-object\":154}],137:[function(require,module,exports){\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n},{\"../internals/enum-bug-keys\":92,\"../internals/object-keys-internal\":136}],138:[function(require,module,exports){\n'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n},{}],139:[function(require,module,exports){\n/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n},{\"../internals/a-possible-prototype\":58,\"../internals/an-object\":60,\"../internals/function-uncurry-this\":99}],140:[function(require,module,exports){\n'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n},{\"../internals/classof\":75,\"../internals/to-string-tag-support\":160}],141:[function(require,module,exports){\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n},{\"../internals/function-call\":97,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/is-object\":117}],142:[function(require,module,exports){\narguments[4][106][0].apply(exports,arguments)\n},{\"dup\":106}],143:[function(require,module,exports){\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n  if (options && options.enumerable) target[key] = value;\n  else createNonEnumerableProperty(target, key, value);\n};\n\n},{\"../internals/create-non-enumerable-property\":78}],144:[function(require,module,exports){\n'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n},{\"../internals/an-object\":60}],145:[function(require,module,exports){\nvar global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n},{\"../internals/global\":104}],146:[function(require,module,exports){\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n},{\"../internals/global\":104}],147:[function(require,module,exports){\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n  if (it) {\n    var target = STATIC ? it : it.prototype;\n    if (!hasOwn(target, TO_STRING_TAG)) {\n      defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n    }\n    if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n      createNonEnumerableProperty(target, 'toString', toString);\n    }\n  }\n};\n\n},{\"../internals/create-non-enumerable-property\":78,\"../internals/has-own-property\":105,\"../internals/object-define-property\":129,\"../internals/object-to-string\":140,\"../internals/to-string-tag-support\":160,\"../internals/well-known-symbol\":166}],148:[function(require,module,exports){\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n},{\"../internals/shared\":150,\"../internals/uid\":163}],149:[function(require,module,exports){\nvar global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n},{\"../internals/global\":104,\"../internals/set-global\":146}],150:[function(require,module,exports){\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.20.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n},{\"../internals/is-pure\":118,\"../internals/shared-store\":149}],151:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/require-object-coercible\":145,\"../internals/to-integer-or-infinity\":155,\"../internals/to-string\":161}],152:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/require-object-coercible\":145,\"../internals/to-string\":161,\"../internals/whitespaces\":167}],153:[function(require,module,exports){\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n},{\"../internals/to-integer-or-infinity\":155}],154:[function(require,module,exports){\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n},{\"../internals/indexed-object\":109,\"../internals/require-object-coercible\":145}],155:[function(require,module,exports){\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n\n},{}],156:[function(require,module,exports){\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n},{\"../internals/to-integer-or-infinity\":155}],157:[function(require,module,exports){\nvar global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n},{\"../internals/global\":104,\"../internals/require-object-coercible\":145}],158:[function(require,module,exports){\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n\n},{\"../internals/function-call\":97,\"../internals/get-method\":103,\"../internals/global\":104,\"../internals/is-object\":117,\"../internals/is-symbol\":119,\"../internals/ordinary-to-primitive\":141,\"../internals/well-known-symbol\":166}],159:[function(require,module,exports){\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n\n},{\"../internals/is-symbol\":119,\"../internals/to-primitive\":158}],160:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n},{\"../internals/well-known-symbol\":166}],161:[function(require,module,exports){\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n\n},{\"../internals/classof\":75,\"../internals/global\":104}],162:[function(require,module,exports){\nvar global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n\n},{\"../internals/global\":104}],163:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n},{\"../internals/function-uncurry-this\":99}],164:[function(require,module,exports){\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n\n},{\"../internals/native-symbol\":124}],165:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n\n},{\"../internals/well-known-symbol\":166}],166:[function(require,module,exports){\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n\n},{\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/native-symbol\":124,\"../internals/shared\":150,\"../internals/uid\":163,\"../internals/use-symbol-as-uid\":164}],167:[function(require,module,exports){\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n},{}],168:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\n},{\"../internals/array-method-has-species-support\":65,\"../internals/array-species-create\":71,\"../internals/create-property\":80,\"../internals/engine-v8-version\":89,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-object\":117,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157,\"../internals/well-known-symbol\":166}],169:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n\n},{\"../internals/array-for-each\":61,\"../internals/export\":93}],170:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n\n},{\"../internals/array-from\":62,\"../internals/check-correctness-of-iteration\":73,\"../internals/export\":93}],171:[function(require,module,exports){\n'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? un$IndexOf(this, searchElement, fromIndex) || 0\n      : $IndexOf(this, searchElement, fromIndex);\n  }\n});\n\n},{\"../internals/array-includes\":63,\"../internals/array-method-is-strict\":66,\"../internals/export\":93,\"../internals/function-uncurry-this\":99}],172:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n\n},{\"../internals/export\":93,\"../internals/is-array\":113}],173:[function(require,module,exports){\n'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n},{\"../internals/add-to-unscopables\":59,\"../internals/define-iterator\":81,\"../internals/descriptors\":83,\"../internals/internal-state\":111,\"../internals/is-pure\":118,\"../internals/iterators\":122,\"../internals/object-define-property\":129,\"../internals/to-indexed-object\":154}],174:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return un$Slice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\n},{\"../internals/array-method-has-species-support\":65,\"../internals/array-slice\":68,\"../internals/create-property\":80,\"../internals/export\":93,\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-constructor\":115,\"../internals/is-object\":117,\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153,\"../internals/to-indexed-object\":154,\"../internals/well-known-symbol\":166}],175:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = items.length;\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) delete array[index++];\n\n    return array;\n  }\n});\n\n},{\"../internals/a-callable\":57,\"../internals/array-method-is-strict\":66,\"../internals/array-sort\":69,\"../internals/engine-ff-version\":86,\"../internals/engine-is-ie-or-edge\":87,\"../internals/engine-v8-version\":89,\"../internals/engine-webkit-version\":90,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157,\"../internals/to-string\":161}],176:[function(require,module,exports){\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n},{\"../internals/global\":104,\"../internals/set-to-string-tag\":147}],177:[function(require,module,exports){\n// empty\n\n},{}],178:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n\n},{\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/object-create\":127}],179:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n  defineProperty: objectDefinePropertyModile.f\n});\n\n},{\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/object-define-property\":129}],180:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],181:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n  parseInt: $parseInt\n});\n\n},{\"../internals/export\":93,\"../internals/number-parse-int\":126}],182:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],183:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],184:[function(require,module,exports){\n'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n},{\"../internals/define-iterator\":81,\"../internals/internal-state\":111,\"../internals/string-multibyte\":151,\"../internals/to-string\":161}],185:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n},{\"../internals/define-well-known-symbol\":82}],186:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],187:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n},{\"../internals/define-well-known-symbol\":82}],188:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n},{\"../internals/define-well-known-symbol\":82}],189:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n},{\"../internals/define-well-known-symbol\":82}],190:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar arraySlice = require('../internals/array-slice');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  redefine(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.es/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = $toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.es/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (isCallable($replacer)) value = call($replacer, this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return apply($stringify, null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n  var valueOf = SymbolPrototype.valueOf;\n  // eslint-disable-next-line no-unused-vars -- required for .length\n  redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n    // TODO: improve hint logic\n    return call(valueOf, this);\n  });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n},{\"../internals/an-object\":60,\"../internals/array-iteration\":64,\"../internals/array-slice\":68,\"../internals/create-property-descriptor\":79,\"../internals/define-well-known-symbol\":82,\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/function-apply\":95,\"../internals/function-call\":97,\"../internals/function-uncurry-this\":99,\"../internals/get-built-in\":100,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/internal-state\":111,\"../internals/is-array\":113,\"../internals/is-callable\":114,\"../internals/is-object\":117,\"../internals/is-pure\":118,\"../internals/is-symbol\":119,\"../internals/native-symbol\":124,\"../internals/object-create\":127,\"../internals/object-define-property\":129,\"../internals/object-get-own-property-descriptor\":130,\"../internals/object-get-own-property-names\":132,\"../internals/object-get-own-property-names-external\":131,\"../internals/object-get-own-property-symbols\":133,\"../internals/object-is-prototype-of\":135,\"../internals/object-keys\":137,\"../internals/object-property-is-enumerable\":138,\"../internals/redefine\":143,\"../internals/set-to-string-tag\":147,\"../internals/shared\":150,\"../internals/shared-key\":148,\"../internals/to-indexed-object\":154,\"../internals/to-object\":157,\"../internals/to-property-key\":159,\"../internals/to-string\":161,\"../internals/uid\":163,\"../internals/well-known-symbol\":166,\"../internals/well-known-symbol-wrapped\":165}],191:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n},{\"../internals/define-well-known-symbol\":82}],192:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n},{\"../internals/define-well-known-symbol\":82}],193:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n},{\"../internals/define-well-known-symbol\":82}],194:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n},{\"../internals/define-well-known-symbol\":82}],195:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n},{\"../internals/define-well-known-symbol\":82}],196:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n},{\"../internals/define-well-known-symbol\":82}],197:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n},{\"../internals/define-well-known-symbol\":82}],198:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n},{\"../internals/define-well-known-symbol\":82}],199:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n},{\"../internals/define-well-known-symbol\":82}],200:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n\n},{\"../internals/define-well-known-symbol\":82}],201:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n\n},{\"../internals/define-well-known-symbol\":82}],202:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n},{\"../internals/define-well-known-symbol\":82}],203:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n},{\"../internals/define-well-known-symbol\":82}],204:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n},{\"../internals/define-well-known-symbol\":82}],205:[function(require,module,exports){\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n},{\"../internals/define-well-known-symbol\":82}],206:[function(require,module,exports){\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n\n},{\"../internals/define-well-known-symbol\":82}],207:[function(require,module,exports){\nrequire('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n    createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n  }\n  Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n},{\"../internals/classof\":75,\"../internals/create-non-enumerable-property\":78,\"../internals/dom-iterables\":85,\"../internals/global\":104,\"../internals/iterators\":122,\"../internals/well-known-symbol\":166,\"../modules/es.array.iterator\":173}],208:[function(require,module,exports){\nvar parent = require('../../es/array/from');\n\nmodule.exports = parent;\n\n},{\"../../es/array/from\":34}],209:[function(require,module,exports){\nvar parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n\n},{\"../../es/array/is-array\":35}],210:[function(require,module,exports){\nvar parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n\n},{\"../../../es/array/virtual/for-each\":37}],211:[function(require,module,exports){\nvar parent = require('../es/get-iterator-method');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n},{\"../es/get-iterator-method\":41,\"../modules/web.dom-collections.iterator\":207}],212:[function(require,module,exports){\nvar parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/concat\":42}],213:[function(require,module,exports){\nvar parent = require('../../es/instance/flags');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/flags\":43}],214:[function(require,module,exports){\nrequire('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/for-each');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.forEach;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n},{\"../../internals/classof\":75,\"../../internals/has-own-property\":105,\"../../internals/object-is-prototype-of\":135,\"../../modules/web.dom-collections.iterator\":207,\"../array/virtual/for-each\":210}],215:[function(require,module,exports){\nvar parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/index-of\":44}],216:[function(require,module,exports){\nvar parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/slice\":45}],217:[function(require,module,exports){\nvar parent = require('../../es/instance/sort');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/sort\":46}],218:[function(require,module,exports){\nvar parent = require('../../es/object/create');\n\nmodule.exports = parent;\n\n},{\"../../es/object/create\":47}],219:[function(require,module,exports){\nvar parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n\n},{\"../../es/object/define-property\":48}],220:[function(require,module,exports){\nvar parent = require('../es/parse-int');\n\nmodule.exports = parent;\n\n},{\"../es/parse-int\":49}],221:[function(require,module,exports){\nvar parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n},{\"../../es/symbol\":51,\"../../modules/web.dom-collections.iterator\":207}],222:[function(require,module,exports){\nmodule.exports = [\n    {\n        'name': 'C',\n        'alias': 'Other',\n        'isBmpLast': true,\n        'bmp': '\\0-\\x1F\\x7F-\\x9F\\xAD\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F5-\\u0605\\u061C\\u06DD\\u070E\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07FB\\u07FC\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F\\u086B-\\u086F\\u088F-\\u0897\\u08E2\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A77-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A\\u0C3B\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B\\u0C5C\\u0C5E\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C76\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDC\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u1716-\\u171E\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180E\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ACF-\\u1AFF\\u1B4D-\\u1B4F\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC8-\\u1CCF\\u1CFB-\\u1CFF\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20C1-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E5E-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u3130\\u318F\\u31E4-\\u31EF\\u321F\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7CB-\\uA7CF\\uA7D2\\uA7D4\\uA7DA-\\uA7F1\\uA82D-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB6C-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC3-\\uFBD2\\uFD90\\uFD91\\uFDC8-\\uFDCE\\uFDD0-\\uFDEF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD-\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF',\n        'astral': '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD7B\\uDD8B\\uDD93\\uDD96\\uDDA2\\uDDB2\\uDDBA\\uDDBD-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDF7F\\uDF86\\uDFB1\\uDFBB-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE49-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD28-\\uDD2F\\uDD3A-\\uDE5F\\uDE7F\\uDEAA\\uDEAE\\uDEAF\\uDEB2-\\uDEFF\\uDF28-\\uDF2F\\uDF5A-\\uDF6F\\uDF8A-\\uDFAF\\uDFCC-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC76-\\uDC7E\\uDCBD\\uDCC3-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD48-\\uDD4F\\uDD77-\\uDD7F\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5C\\uDC62-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEBA-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF47-\\uDFFF]|\\uD806[\\uDC3C-\\uDC9F\\uDCF3-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD47-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE5-\\uDDFF\\uDE48-\\uDE4F\\uDEA3-\\uDEAF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF9-\\uDFAF\\uDFB1-\\uDFBF\\uDFF2-\\uDFFE]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82A\\uD82D\\uD82E\\uD830-\\uD832\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80B[\\uDC00-\\uDF8F\\uDFF3-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDEBF\\uDECA-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE9B-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82B[\\uDC00-\\uDFEF\\uDFF4\\uDFFC\\uDFFF]|\\uD82C[\\uDD23-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA0-\\uDFFF]|\\uD833[\\uDC00-\\uDEFF\\uDF2E\\uDF2F\\uDF47-\\uDF4F\\uDFC4-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD73-\\uDD7A\\uDDEB-\\uDDFF\\uDE46-\\uDEDF\\uDEF4-\\uDEFF\\uDF57-\\uDF5F\\uDF79-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD837[\\uDC00-\\uDEFF\\uDF1F-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD50-\\uDE8F\\uDEAF-\\uDEBF\\uDEFA-\\uDEFE\\uDF00-\\uDFFF]|\\uD839[\\uDC00-\\uDFDF\\uDFE7\\uDFEC\\uDFEF\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDC70\\uDCB5-\\uDD00\\uDD3E-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDC\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFEF\\uDFF1-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7D-\\uDE7F\\uDE87-\\uDE8F\\uDEAD-\\uDEAF\\uDEBB-\\uDEBF\\uDEC6-\\uDECF\\uDEDA-\\uDEDF\\uDEE8-\\uDEEF\\uDEF7-\\uDEFF\\uDF93\\uDFCB-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEE0-\\uDEFF]|\\uD86D[\\uDF39-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]'\n    },\n    {\n        'name': 'Cc',\n        'alias': 'Control',\n        'bmp': '\\0-\\x1F\\x7F-\\x9F'\n    },\n    {\n        'name': 'Cf',\n        'alias': 'Format',\n        'bmp': '\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB',\n        'astral': '\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC38]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]'\n    },\n    {\n        'name': 'Cn',\n        'alias': 'Unassigned',\n        'bmp': '\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F5-\\u05FF\\u070E\\u074B\\u074C\\u07B2-\\u07BF\\u07FB\\u07FC\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F\\u086B-\\u086F\\u088F\\u0892-\\u0897\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A77-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A\\u0C3B\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B\\u0C5C\\u0C5E\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C76\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDC\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u1716-\\u171E\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ACF-\\u1AFF\\u1B4D-\\u1B4F\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC8-\\u1CCF\\u1CFB-\\u1CFF\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u2065\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20C1-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E5E-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u3130\\u318F\\u31E4-\\u31EF\\u321F\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7CB-\\uA7CF\\uA7D2\\uA7D4\\uA7DA-\\uA7F1\\uA82D-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB6C-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC3-\\uFBD2\\uFD90\\uFD91\\uFDC8-\\uFDCE\\uFDD0-\\uFDEF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD\\uFEFE\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFF8\\uFFFE\\uFFFF',\n        'astral': '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD7B\\uDD8B\\uDD93\\uDD96\\uDDA2\\uDDB2\\uDDBA\\uDDBD-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDF7F\\uDF86\\uDFB1\\uDFBB-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE49-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD28-\\uDD2F\\uDD3A-\\uDE5F\\uDE7F\\uDEAA\\uDEAE\\uDEAF\\uDEB2-\\uDEFF\\uDF28-\\uDF2F\\uDF5A-\\uDF6F\\uDF8A-\\uDFAF\\uDFCC-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC76-\\uDC7E\\uDCC3-\\uDCCC\\uDCCE\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD48-\\uDD4F\\uDD77-\\uDD7F\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5C\\uDC62-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEBA-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF47-\\uDFFF]|\\uD806[\\uDC3C-\\uDC9F\\uDCF3-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD47-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE5-\\uDDFF\\uDE48-\\uDE4F\\uDEA3-\\uDEAF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF9-\\uDFAF\\uDFB1-\\uDFBF\\uDFF2-\\uDFFE]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82A\\uD82D\\uD82E\\uD830-\\uD832\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDB7F][\\uDC00-\\uDFFF]|\\uD80B[\\uDC00-\\uDF8F\\uDFF3-\\uDFFF]|\\uD80D[\\uDC2F\\uDC39-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDEBF\\uDECA-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE9B-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82B[\\uDC00-\\uDFEF\\uDFF4\\uDFFC\\uDFFF]|\\uD82C[\\uDD23-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA4-\\uDFFF]|\\uD833[\\uDC00-\\uDEFF\\uDF2E\\uDF2F\\uDF47-\\uDF4F\\uDFC4-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDDEB-\\uDDFF\\uDE46-\\uDEDF\\uDEF4-\\uDEFF\\uDF57-\\uDF5F\\uDF79-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD837[\\uDC00-\\uDEFF\\uDF1F-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD50-\\uDE8F\\uDEAF-\\uDEBF\\uDEFA-\\uDEFE\\uDF00-\\uDFFF]|\\uD839[\\uDC00-\\uDFDF\\uDFE7\\uDFEC\\uDFEF\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDC70\\uDCB5-\\uDD00\\uDD3E-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDC\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFEF\\uDFF1-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7D-\\uDE7F\\uDE87-\\uDE8F\\uDEAD-\\uDEAF\\uDEBB-\\uDEBF\\uDEC6-\\uDECF\\uDEDA-\\uDEDF\\uDEE8-\\uDEEF\\uDEF7-\\uDEFF\\uDF93\\uDFCB-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEE0-\\uDEFF]|\\uD86D[\\uDF39-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00\\uDC02-\\uDC1F\\uDC80-\\uDCFF\\uDDF0-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]'\n    },\n    {\n        'name': 'Co',\n        'alias': 'Private_Use',\n        'bmp': '\\uE000-\\uF8FF',\n        'astral': '[\\uDB80-\\uDBBE\\uDBC0-\\uDBFE][\\uDC00-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDC00-\\uDFFD]'\n    },\n    {\n        'name': 'Cs',\n        'alias': 'Surrogate',\n        'bmp': '\\uD800-\\uDFFF'\n    },\n    {\n        'name': 'L',\n        'alias': 'Letter',\n        'bmp': 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]'\n    },\n    {\n        'name': 'LC',\n        'alias': 'Cased_Letter',\n        'bmp': 'A-Za-z\\xB5\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BC-\\u01BF\\u01C4-\\u0293\\u0295-\\u02AF\\u0370-\\u0373\\u0376\\u0377\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0560-\\u0588\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C7B\\u2C7E-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA640-\\uA66D\\uA680-\\uA69B\\uA722-\\uA76F\\uA771-\\uA787\\uA78B-\\uA78E\\uA790-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F5\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A',\n        'astral': '\\uD801[\\uDC00-\\uDC4F\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC]|\\uD803[\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD806[\\uDCA0-\\uDCDF]|\\uD81B[\\uDE40-\\uDE7F]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF09\\uDF0B-\\uDF1E]|\\uD83A[\\uDD00-\\uDD43]'\n    },\n    {\n        'name': 'Ll',\n        'alias': 'Lowercase_Letter',\n        'bmp': 'a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5F\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7BB\\uA7BD\\uA7BF\\uA7C1\\uA7C3\\uA7C8\\uA7CA\\uA7D1\\uA7D3\\uA7D5\\uA7D7\\uA7D9\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A',\n        'astral': '\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD81B[\\uDE60-\\uDE7F]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD837[\\uDF00-\\uDF09\\uDF0B-\\uDF1E]|\\uD83A[\\uDD22-\\uDD43]'\n    },\n    {\n        'name': 'Lm',\n        'alias': 'Modifier_Letter',\n        'bmp': '\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u08C9\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA69C\\uA69D\\uA717-\\uA71F\\uA770\\uA788\\uA7F2-\\uA7F4\\uA7F8\\uA7F9\\uA9CF\\uA9E6\\uAA70\\uAADD\\uAAF3\\uAAF4\\uAB5C-\\uAB5F\\uAB69\\uFF70\\uFF9E\\uFF9F',\n        'astral': '\\uD801[\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD81A[\\uDF40-\\uDF43]|\\uD81B[\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD838[\\uDD37-\\uDD3D]|\\uD83A\\uDD4B'\n    },\n    {\n        'name': 'Lo',\n        'alias': 'Other_Letter',\n        'bmp': '\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C8\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA78F\\uA7F7\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9E0-\\uA9E4\\uA9E7-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC50-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF4A\\uDF50]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD837\\uDF0A|\\uD838[\\uDD00-\\uDD2C\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]'\n    },\n    {\n        'name': 'Lt',\n        'alias': 'Titlecase_Letter',\n        'bmp': '\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC'\n    },\n    {\n        'name': 'Lu',\n        'alias': 'Uppercase_Letter',\n        'bmp': 'A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2F\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uA7BA\\uA7BC\\uA7BE\\uA7C0\\uA7C2\\uA7C4-\\uA7C7\\uA7C9\\uA7D0\\uA7D6\\uA7D8\\uA7F5\\uFF21-\\uFF3A',\n        'astral': '\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD81B[\\uDE40-\\uDE5F]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21]'\n    },\n    {\n        'name': 'M',\n        'alias': 'Mark',\n        'bmp': '\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\n        'astral': '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD45\\uDD46\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDDC9-\\uDDCC\\uDDCE\\uDDCF\\uDE2C-\\uDE37\\uDE3E\\uDEDF-\\uDEEA\\uDF00-\\uDF03\\uDF3B\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC35-\\uDC46\\uDC5E\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDDDC\\uDDDD\\uDE30-\\uDE40\\uDEAB-\\uDEB7\\uDF1D-\\uDF2B]|\\uD806[\\uDC2C-\\uDC3A\\uDD30-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD3E\\uDD40\\uDD42\\uDD43\\uDDD1-\\uDDD7\\uDDDA-\\uDDE0\\uDDE4\\uDE01-\\uDE0A\\uDE33-\\uDE39\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE5B\\uDE8A-\\uDE99]|\\uD807[\\uDC2F-\\uDC36\\uDC38-\\uDC3F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD8A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD97\\uDEF3-\\uDEF6]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF51-\\uDF87\\uDF8F-\\uDF92\\uDFE4\\uDFF0\\uDFF1]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'Mc',\n        'alias': 'Spacing_Mark',\n        'bmp': '\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\u302E\\u302F\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uAA7D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC',\n        'astral': '\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3E\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB0-\\uDCB2\\uDCB9\\uDCBB-\\uDCBE\\uDCC1\\uDDAF-\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF20\\uDF21\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD30-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD65\\uDD66\\uDD6D-\\uDD72]'\n    },\n    {\n        'name': 'Me',\n        'alias': 'Enclosing_Mark',\n        'bmp': '\\u0488\\u0489\\u1ABE\\u20DD-\\u20E0\\u20E2-\\u20E4\\uA670-\\uA672'\n    },\n    {\n        'name': 'Mn',\n        'alias': 'Nonspacing_Mark',\n        'bmp': '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\n        'astral': '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF40\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB3-\\uDCB8\\uDCBA\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'N',\n        'alias': 'Number',\n        'bmp': '0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\n        'astral': '\\uD800[\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD801[\\uDCA0-\\uDCA9]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54\\uDFC5-\\uDFCB]|\\uD804[\\uDC52-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDDE1-\\uDDF4\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF3B]|\\uD806[\\uDCE0-\\uDCF2\\uDD50-\\uDD59]|\\uD807[\\uDC50-\\uDC6C\\uDD50-\\uDD59\\uDDA0-\\uDDA9\\uDFC0-\\uDFD4]|\\uD809[\\uDC00-\\uDC6E]|\\uD81A[\\uDE60-\\uDE69\\uDEC0-\\uDEC9\\uDF50-\\uDF59\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDFCE-\\uDFFF]|\\uD838[\\uDD40-\\uDD49\\uDEF0-\\uDEF9]|\\uD83A[\\uDCC7-\\uDCCF\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]'\n    },\n    {\n        'name': 'Nd',\n        'alias': 'Decimal_Number',\n        'bmp': '0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\n        'astral': '\\uD801[\\uDCA0-\\uDCA9]|\\uD803[\\uDD30-\\uDD39]|\\uD804[\\uDC66-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF39]|\\uD806[\\uDCE0-\\uDCE9\\uDD50-\\uDD59]|\\uD807[\\uDC50-\\uDC59\\uDD50-\\uDD59\\uDDA0-\\uDDA9]|\\uD81A[\\uDE60-\\uDE69\\uDEC0-\\uDEC9\\uDF50-\\uDF59]|\\uD835[\\uDFCE-\\uDFFF]|\\uD838[\\uDD40-\\uDD49\\uDEF0-\\uDEF9]|\\uD83A[\\uDD50-\\uDD59]|\\uD83E[\\uDFF0-\\uDFF9]'\n    },\n    {\n        'name': 'Nl',\n        'alias': 'Letter_Number',\n        'bmp': '\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF',\n        'astral': '\\uD800[\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD809[\\uDC00-\\uDC6E]'\n    },\n    {\n        'name': 'No',\n        'alias': 'Other_Number',\n        'bmp': '\\xB2\\xB3\\xB9\\xBC-\\xBE\\u09F4-\\u09F9\\u0B72-\\u0B77\\u0BF0-\\u0BF2\\u0C78-\\u0C7E\\u0D58-\\u0D5E\\u0D70-\\u0D78\\u0F2A-\\u0F33\\u1369-\\u137C\\u17F0-\\u17F9\\u19DA\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u215F\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA830-\\uA835',\n        'astral': '\\uD800[\\uDD07-\\uDD33\\uDD75-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54\\uDFC5-\\uDFCB]|\\uD804[\\uDC52-\\uDC65\\uDDE1-\\uDDF4]|\\uD805[\\uDF3A\\uDF3B]|\\uD806[\\uDCEA-\\uDCF2]|\\uD807[\\uDC5A-\\uDC6C\\uDFC0-\\uDFD4]|\\uD81A[\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD83A[\\uDCC7-\\uDCCF]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D]|\\uD83C[\\uDD00-\\uDD0C]'\n    },\n    {\n        'name': 'P',\n        'alias': 'Punctuation',\n        'bmp': '!-#%-\\\\*,-\\\\/:;\\\\?@\\\\[-\\\\]_\\\\{\\\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65',\n        'astral': '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\n    },\n    {\n        'name': 'Pc',\n        'alias': 'Connector_Punctuation',\n        'bmp': '_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F'\n    },\n    {\n        'name': 'Pd',\n        'alias': 'Dash_Punctuation',\n        'bmp': '\\\\-\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2E17\\u2E1A\\u2E3A\\u2E3B\\u2E40\\u2E5D\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D',\n        'astral': '\\uD803\\uDEAD'\n    },\n    {\n        'name': 'Pe',\n        'alias': 'Close_Punctuation',\n        'bmp': '\\\\)\\\\]\\\\}\\u0F3B\\u0F3D\\u169C\\u2046\\u207E\\u208E\\u2309\\u230B\\u232A\\u2769\\u276B\\u276D\\u276F\\u2771\\u2773\\u2775\\u27C6\\u27E7\\u27E9\\u27EB\\u27ED\\u27EF\\u2984\\u2986\\u2988\\u298A\\u298C\\u298E\\u2990\\u2992\\u2994\\u2996\\u2998\\u29D9\\u29DB\\u29FD\\u2E23\\u2E25\\u2E27\\u2E29\\u2E56\\u2E58\\u2E5A\\u2E5C\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\u3017\\u3019\\u301B\\u301E\\u301F\\uFD3E\\uFE18\\uFE36\\uFE38\\uFE3A\\uFE3C\\uFE3E\\uFE40\\uFE42\\uFE44\\uFE48\\uFE5A\\uFE5C\\uFE5E\\uFF09\\uFF3D\\uFF5D\\uFF60\\uFF63'\n    },\n    {\n        'name': 'Pf',\n        'alias': 'Final_Punctuation',\n        'bmp': '\\xBB\\u2019\\u201D\\u203A\\u2E03\\u2E05\\u2E0A\\u2E0D\\u2E1D\\u2E21'\n    },\n    {\n        'name': 'Pi',\n        'alias': 'Initial_Punctuation',\n        'bmp': '\\xAB\\u2018\\u201B\\u201C\\u201F\\u2039\\u2E02\\u2E04\\u2E09\\u2E0C\\u2E1C\\u2E20'\n    },\n    {\n        'name': 'Po',\n        'alias': 'Other_Punctuation',\n        'bmp': '!-#%-\\'\\\\*,\\\\.\\\\/:;\\\\?@\\\\\\xA1\\xA7\\xB6\\xB7\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u166E\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u1805\\u1807-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2016\\u2017\\u2020-\\u2027\\u2030-\\u2038\\u203B-\\u203E\\u2041-\\u2043\\u2047-\\u2051\\u2053\\u2055-\\u205E\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00\\u2E01\\u2E06-\\u2E08\\u2E0B\\u2E0E-\\u2E16\\u2E18\\u2E19\\u2E1B\\u2E1E\\u2E1F\\u2E2A-\\u2E2E\\u2E30-\\u2E39\\u2E3C-\\u2E3F\\u2E41\\u2E43-\\u2E4F\\u2E52-\\u2E54\\u3001-\\u3003\\u303D\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFE10-\\uFE16\\uFE19\\uFE30\\uFE45\\uFE46\\uFE49-\\uFE4C\\uFE50-\\uFE52\\uFE54-\\uFE57\\uFE5F-\\uFE61\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF07\\uFF0A\\uFF0C\\uFF0E\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3C\\uFF61\\uFF64\\uFF65',\n        'astral': '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\n    },\n    {\n        'name': 'Ps',\n        'alias': 'Open_Punctuation',\n        'bmp': '\\\\(\\\\[\\\\{\\u0F3A\\u0F3C\\u169B\\u201A\\u201E\\u2045\\u207D\\u208D\\u2308\\u230A\\u2329\\u2768\\u276A\\u276C\\u276E\\u2770\\u2772\\u2774\\u27C5\\u27E6\\u27E8\\u27EA\\u27EC\\u27EE\\u2983\\u2985\\u2987\\u2989\\u298B\\u298D\\u298F\\u2991\\u2993\\u2995\\u2997\\u29D8\\u29DA\\u29FC\\u2E22\\u2E24\\u2E26\\u2E28\\u2E42\\u2E55\\u2E57\\u2E59\\u2E5B\\u3008\\u300A\\u300C\\u300E\\u3010\\u3014\\u3016\\u3018\\u301A\\u301D\\uFD3F\\uFE17\\uFE35\\uFE37\\uFE39\\uFE3B\\uFE3D\\uFE3F\\uFE41\\uFE43\\uFE47\\uFE59\\uFE5B\\uFE5D\\uFF08\\uFF3B\\uFF5B\\uFF5F\\uFF62'\n    },\n    {\n        'name': 'S',\n        'alias': 'Symbol',\n        'bmp': '\\\\$\\\\+<->\\\\^`\\\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD',\n        'astral': '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDD-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF73\\uDF80-\\uDFD8\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE74\\uDE78-\\uDE7C\\uDE80-\\uDE86\\uDE90-\\uDEAC\\uDEB0-\\uDEBA\\uDEC0-\\uDEC5\\uDED0-\\uDED9\\uDEE0-\\uDEE7\\uDEF0-\\uDEF6\\uDF00-\\uDF92\\uDF94-\\uDFCA]'\n    },\n    {\n        'name': 'Sc',\n        'alias': 'Currency_Symbol',\n        'bmp': '\\\\$\\xA2-\\xA5\\u058F\\u060B\\u07FE\\u07FF\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20C0\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6',\n        'astral': '\\uD807[\\uDFDD-\\uDFE0]|\\uD838\\uDEFF|\\uD83B\\uDCB0'\n    },\n    {\n        'name': 'Sk',\n        'alias': 'Modifier_Symbol',\n        'bmp': '\\\\^`\\xA8\\xAF\\xB4\\xB8\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u0888\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u309B\\u309C\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uAB5B\\uAB6A\\uAB6B\\uFBB2-\\uFBC2\\uFF3E\\uFF40\\uFFE3',\n        'astral': '\\uD83C[\\uDFFB-\\uDFFF]'\n    },\n    {\n        'name': 'Sm',\n        'alias': 'Math_Symbol',\n        'bmp': '\\\\+<->\\\\|~\\xAC\\xB1\\xD7\\xF7\\u03F6\\u0606-\\u0608\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u2118\\u2140-\\u2144\\u214B\\u2190-\\u2194\\u219A\\u219B\\u21A0\\u21A3\\u21A6\\u21AE\\u21CE\\u21CF\\u21D2\\u21D4\\u21F4-\\u22FF\\u2320\\u2321\\u237C\\u239B-\\u23B3\\u23DC-\\u23E1\\u25B7\\u25C1\\u25F8-\\u25FF\\u266F\\u27C0-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u27FF\\u2900-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2AFF\\u2B30-\\u2B44\\u2B47-\\u2B4C\\uFB29\\uFE62\\uFE64-\\uFE66\\uFF0B\\uFF1C-\\uFF1E\\uFF5C\\uFF5E\\uFFE2\\uFFE9-\\uFFEC',\n        'astral': '\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD83B[\\uDEF0\\uDEF1]'\n    },\n    {\n        'name': 'So',\n        'alias': 'Other_Symbol',\n        'bmp': '\\xA6\\xA9\\xAE\\xB0\\u0482\\u058D\\u058E\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u09FA\\u0B70\\u0BF3-\\u0BF8\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116\\u2117\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u214A\\u214C\\u214D\\u214F\\u218A\\u218B\\u2195-\\u2199\\u219C-\\u219F\\u21A1\\u21A2\\u21A4\\u21A5\\u21A7-\\u21AD\\u21AF-\\u21CD\\u21D0\\u21D1\\u21D3\\u21D5-\\u21F3\\u2300-\\u2307\\u230C-\\u231F\\u2322-\\u2328\\u232B-\\u237B\\u237D-\\u239A\\u23B4-\\u23DB\\u23E2-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u25B6\\u25B8-\\u25C0\\u25C2-\\u25F7\\u2600-\\u266E\\u2670-\\u2767\\u2794-\\u27BF\\u2800-\\u28FF\\u2B00-\\u2B2F\\u2B45\\u2B46\\u2B4D-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA828-\\uA82B\\uA836\\uA837\\uA839\\uAA77-\\uAA79\\uFD40-\\uFD4F\\uFDCF\\uFDFD-\\uFDFF\\uFFE4\\uFFE8\\uFFED\\uFFEE\\uFFFC\\uFFFD',\n        'astral': '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFDC\\uDFE1-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838\\uDD4F|\\uD83B[\\uDCAC\\uDD2E]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFA]|\\uD83D[\\uDC00-\\uDED7\\uDEDD-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF73\\uDF80-\\uDFD8\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE74\\uDE78-\\uDE7C\\uDE80-\\uDE86\\uDE90-\\uDEAC\\uDEB0-\\uDEBA\\uDEC0-\\uDEC5\\uDED0-\\uDED9\\uDEE0-\\uDEE7\\uDEF0-\\uDEF6\\uDF00-\\uDF92\\uDF94-\\uDFCA]'\n    },\n    {\n        'name': 'Z',\n        'alias': 'Separator',\n        'bmp': ' \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\n    },\n    {\n        'name': 'Zl',\n        'alias': 'Line_Separator',\n        'bmp': '\\u2028'\n    },\n    {\n        'name': 'Zp',\n        'alias': 'Paragraph_Separator',\n        'bmp': '\\u2029'\n    },\n    {\n        'name': 'Zs',\n        'alias': 'Space_Separator',\n        'bmp': ' \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000'\n    }\n];\n\n},{}]},{},[3])(3)\n});\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/xregexp/xregexp.js",
    "content": "(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.XRegExp = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\"use strict\";\n\nvar _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js-stable/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js-stable/array/from\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js-stable/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nvar _Array$isArray = require(\"@babel/runtime-corejs3/core-js-stable/array/is-array\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/helpers/slicedToArray\"));\n\nvar _forEach = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/for-each\"));\n\nvar _concat = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/concat\"));\n\nvar _indexOf = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/index-of\"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { var _context4; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty(_context4 = Object.prototype.toString.call(o)).call(_context4, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*!\n * XRegExp Unicode Base 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2008-present MIT License\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds base support for Unicode matching:\n   * - Adds syntax `\\p{..}` for matching Unicode tokens. Tokens can be inverted using `\\P{..}` or\n   *   `\\p{^..}`. Token names ignore case, spaces, hyphens, and underscores. You can omit the\n   *   braces for token names that are a single letter (e.g. `\\pL` or `PL`).\n   * - Adds flag A (astral), which enables 21-bit Unicode support.\n   * - Adds the `XRegExp.addUnicodeData` method used by other addons to provide character data.\n   *\n   * Unicode Base relies on externally provided Unicode character data. Official addons are\n   * available to provide data for Unicode categories, scripts, and properties.\n   *\n   * @requires XRegExp\n   */\n  // ==--------------------------==\n  // Private stuff\n  // ==--------------------------==\n  // Storage for Unicode data\n  var unicode = {};\n  var unicodeTypes = {}; // Reuse utils\n\n  var dec = XRegExp._dec;\n  var hex = XRegExp._hex;\n  var pad4 = XRegExp._pad4; // Generates a token lookup name: lowercase, with hyphens, spaces, and underscores removed\n\n  function normalize(name) {\n    return name.replace(/[- _]+/g, '').toLowerCase();\n  } // Gets the decimal code of a literal code unit, \\xHH, \\uHHHH, or a backslash-escaped literal\n\n\n  function charCode(chr) {\n    var esc = /^\\\\[xu](.+)/.exec(chr);\n    return esc ? dec(esc[1]) : chr.charCodeAt(chr[0] === '\\\\' ? 1 : 0);\n  } // Inverts a list of ordered BMP characters and ranges\n\n\n  function invertBmp(range) {\n    var output = '';\n    var lastEnd = -1;\n    (0, _forEach[\"default\"])(XRegExp).call(XRegExp, range, /(\\\\x..|\\\\u....|\\\\?[\\s\\S])(?:-(\\\\x..|\\\\u....|\\\\?[\\s\\S]))?/, function (m) {\n      var start = charCode(m[1]);\n\n      if (start > lastEnd + 1) {\n        output += \"\\\\u\".concat(pad4(hex(lastEnd + 1)));\n\n        if (start > lastEnd + 2) {\n          output += \"-\\\\u\".concat(pad4(hex(start - 1)));\n        }\n      }\n\n      lastEnd = charCode(m[2] || m[1]);\n    });\n\n    if (lastEnd < 0xFFFF) {\n      output += \"\\\\u\".concat(pad4(hex(lastEnd + 1)));\n\n      if (lastEnd < 0xFFFE) {\n        output += '-\\\\uFFFF';\n      }\n    }\n\n    return output;\n  } // Generates an inverted BMP range on first use\n\n\n  function cacheInvertedBmp(slug) {\n    var prop = 'b!';\n    return unicode[slug][prop] || (unicode[slug][prop] = invertBmp(unicode[slug].bmp));\n  } // Combines and optionally negates BMP and astral data\n\n\n  function buildAstral(slug, isNegated) {\n    var item = unicode[slug];\n    var combined = '';\n\n    if (item.bmp && !item.isBmpLast) {\n      var _context;\n\n      combined = (0, _concat[\"default\"])(_context = \"[\".concat(item.bmp, \"]\")).call(_context, item.astral ? '|' : '');\n    }\n\n    if (item.astral) {\n      combined += item.astral;\n    }\n\n    if (item.isBmpLast && item.bmp) {\n      var _context2;\n\n      combined += (0, _concat[\"default\"])(_context2 = \"\".concat(item.astral ? '|' : '', \"[\")).call(_context2, item.bmp, \"]\");\n    } // Astral Unicode tokens always match a code point, never a code unit\n\n\n    return isNegated ? \"(?:(?!\".concat(combined, \")(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\0-\\uFFFF]))\") : \"(?:\".concat(combined, \")\");\n  } // Builds a complete astral pattern on first use\n\n\n  function cacheAstral(slug, isNegated) {\n    var prop = isNegated ? 'a!' : 'a=';\n    return unicode[slug][prop] || (unicode[slug][prop] = buildAstral(slug, isNegated));\n  } // ==--------------------------==\n  // Core functionality\n  // ==--------------------------==\n\n  /*\n   * Add astral mode (flag A) and Unicode token syntax: `\\p{..}`, `\\P{..}`, `\\p{^..}`, `\\pC`.\n   */\n\n\n  XRegExp.addToken( // Use `*` instead of `+` to avoid capturing `^` as the token name in `\\p{^}`\n  /\\\\([pP])(?:{(\\^?)(?:(\\w+)=)?([^}]*)}|([A-Za-z]))/, function (match, scope, flags) {\n    var ERR_DOUBLE_NEG = 'Invalid double negation ';\n    var ERR_UNKNOWN_NAME = 'Unknown Unicode token ';\n    var ERR_UNKNOWN_REF = 'Unicode token missing data ';\n    var ERR_ASTRAL_ONLY = 'Astral mode required for Unicode token ';\n    var ERR_ASTRAL_IN_CLASS = 'Astral mode does not support Unicode tokens within character classes';\n\n    var _match = (0, _slicedToArray2[\"default\"])(match, 6),\n        fullToken = _match[0],\n        pPrefix = _match[1],\n        caretNegation = _match[2],\n        typePrefix = _match[3],\n        tokenName = _match[4],\n        tokenSingleCharName = _match[5]; // Negated via \\P{..} or \\p{^..}\n\n\n    var isNegated = pPrefix === 'P' || !!caretNegation; // Switch from BMP (0-FFFF) to astral (0-10FFFF) mode via flag A\n\n    var isAstralMode = (0, _indexOf[\"default\"])(flags).call(flags, 'A') !== -1; // Token lookup name. Check `tokenSingleCharName` first to avoid passing `undefined`\n    // via `\\p{}`\n\n    var slug = normalize(tokenSingleCharName || tokenName); // Token data object\n\n    var item = unicode[slug];\n\n    if (pPrefix === 'P' && caretNegation) {\n      throw new SyntaxError(ERR_DOUBLE_NEG + fullToken);\n    }\n\n    if (!unicode.hasOwnProperty(slug)) {\n      throw new SyntaxError(ERR_UNKNOWN_NAME + fullToken);\n    }\n\n    if (typePrefix) {\n      if (!(unicodeTypes[typePrefix] && unicodeTypes[typePrefix][slug])) {\n        throw new SyntaxError(ERR_UNKNOWN_NAME + fullToken);\n      }\n    } // Switch to the negated form of the referenced Unicode token\n\n\n    if (item.inverseOf) {\n      slug = normalize(item.inverseOf);\n\n      if (!unicode.hasOwnProperty(slug)) {\n        var _context3;\n\n        throw new ReferenceError((0, _concat[\"default\"])(_context3 = \"\".concat(ERR_UNKNOWN_REF + fullToken, \" -> \")).call(_context3, item.inverseOf));\n      }\n\n      item = unicode[slug];\n      isNegated = !isNegated;\n    }\n\n    if (!(item.bmp || isAstralMode)) {\n      throw new SyntaxError(ERR_ASTRAL_ONLY + fullToken);\n    }\n\n    if (isAstralMode) {\n      if (scope === 'class') {\n        throw new SyntaxError(ERR_ASTRAL_IN_CLASS);\n      }\n\n      return cacheAstral(slug, isNegated);\n    }\n\n    return scope === 'class' ? isNegated ? cacheInvertedBmp(slug) : item.bmp : \"\".concat((isNegated ? '[^' : '[') + item.bmp, \"]\");\n  }, {\n    scope: 'all',\n    optionalFlags: 'A',\n    leadChar: '\\\\'\n  });\n  /**\n   * Adds to the list of Unicode tokens that XRegExp regexes can match via `\\p` or `\\P`.\n   *\n   * @memberOf XRegExp\n   * @param {Array} data Objects with named character ranges. Each object may have properties\n   *   `name`, `alias`, `isBmpLast`, `inverseOf`, `bmp`, and `astral`. All but `name` are\n   *   optional, although one of `bmp` or `astral` is required (unless `inverseOf` is set). If\n   *   `astral` is absent, the `bmp` data is used for BMP and astral modes. If `bmp` is absent,\n   *   the name errors in BMP mode but works in astral mode. If both `bmp` and `astral` are\n   *   provided, the `bmp` data only is used in BMP mode, and the combination of `bmp` and\n   *   `astral` data is used in astral mode. `isBmpLast` is needed when a token matches orphan\n   *   high surrogates *and* uses surrogate pairs to match astral code points. The `bmp` and\n   *   `astral` data should be a combination of literal characters and `\\xHH` or `\\uHHHH` escape\n   *   sequences, with hyphens to create ranges. Any regex metacharacters in the data should be\n   *   escaped, apart from range-creating hyphens. The `astral` data can additionally use\n   *   character classes and alternation, and should use surrogate pairs to represent astral code\n   *   points. `inverseOf` can be used to avoid duplicating character data if a Unicode token is\n   *   defined as the exact inverse of another token.\n   * @param {String} [typePrefix] Enables optionally using this type as a prefix for all of the\n   *   provided Unicode tokens, e.g. if given `'Type'`, then `\\p{TokenName}` can also be written\n   *   as `\\p{Type=TokenName}`.\n   * @example\n   *\n   * // Basic use\n   * XRegExp.addUnicodeData([{\n   *   name: 'XDigit',\n   *   alias: 'Hexadecimal',\n   *   bmp: '0-9A-Fa-f'\n   * }]);\n   * XRegExp('\\\\p{XDigit}:\\\\p{Hexadecimal}+').test('0:3D'); // -> true\n   */\n\n  XRegExp.addUnicodeData = function (data, typePrefix) {\n    var ERR_NO_NAME = 'Unicode token requires name';\n    var ERR_NO_DATA = 'Unicode token has no character data ';\n\n    if (typePrefix) {\n      // Case sensitive to match ES2018\n      unicodeTypes[typePrefix] = {};\n    }\n\n    var _iterator = _createForOfIteratorHelper(data),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        var item = _step.value;\n\n        if (!item.name) {\n          throw new Error(ERR_NO_NAME);\n        }\n\n        if (!(item.inverseOf || item.bmp || item.astral)) {\n          throw new Error(ERR_NO_DATA + item.name);\n        }\n\n        var normalizedName = normalize(item.name);\n        unicode[normalizedName] = item;\n\n        if (typePrefix) {\n          unicodeTypes[typePrefix][normalizedName] = true;\n        }\n\n        if (item.alias) {\n          var normalizedAlias = normalize(item.alias);\n          unicode[normalizedAlias] = item;\n\n          if (typePrefix) {\n            unicodeTypes[typePrefix][normalizedAlias] = true;\n          }\n        }\n      } // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and\n      // flags might now produce different results\n\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    XRegExp.cache.flush('patterns');\n  };\n  /**\n   * @ignore\n   *\n   * Return a reference to the internal Unicode definition structure for the given Unicode\n   * Property if the given name is a legal Unicode Property for use in XRegExp `\\p` or `\\P` regex\n   * constructs.\n   *\n   * @memberOf XRegExp\n   * @param {String} name Name by which the Unicode Property may be recognized (case-insensitive),\n   *   e.g. `'N'` or `'Number'`. The given name is matched against all registered Unicode\n   *   Properties and Property Aliases.\n   * @returns {Object} Reference to definition structure when the name matches a Unicode Property.\n   *\n   * @note\n   * For more info on Unicode Properties, see also http://unicode.org/reports/tr18/#Categories.\n   *\n   * @note\n   * This method is *not* part of the officially documented API and may change or be removed in\n   * the future. It is meant for userland code that wishes to reuse the (large) internal Unicode\n   * structures set up by XRegExp.\n   */\n\n\n  XRegExp._getUnicodeProperty = function (name) {\n    var slug = normalize(name);\n    return unicode[slug];\n  };\n};\n\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"@babel/runtime-corejs3/core-js-stable/array/from\":5,\"@babel/runtime-corejs3/core-js-stable/array/is-array\":6,\"@babel/runtime-corejs3/core-js-stable/instance/concat\":7,\"@babel/runtime-corejs3/core-js-stable/instance/for-each\":9,\"@babel/runtime-corejs3/core-js-stable/instance/index-of\":10,\"@babel/runtime-corejs3/core-js-stable/instance/slice\":11,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/core-js-stable/symbol\":16,\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24,\"@babel/runtime-corejs3/helpers/slicedToArray\":27}],2:[function(require,module,exports){\n\"use strict\";\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _categories = _interopRequireDefault(require(\"../../tools/output/categories\"));\n\n/*!\n * XRegExp Unicode Categories 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2010-present MIT License\n * Unicode data by Mathias Bynens <mathiasbynens.be>\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds support for Unicode's general categories. E.g., `\\p{Lu}` or `\\p{Uppercase Letter}`. See\n   * category descriptions in UAX #44 <http://unicode.org/reports/tr44/#GC_Values_Table>. Token\n   * names are case insensitive, and any spaces, hyphens, and underscores are ignored.\n   *\n   * Uses Unicode 14.0.0.\n   *\n   * @requires XRegExp, Unicode Base\n   */\n  if (!XRegExp.addUnicodeData) {\n    throw new ReferenceError('Unicode Base must be loaded before Unicode Categories');\n  }\n\n  XRegExp.addUnicodeData(_categories[\"default\"]);\n};\n\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"../../tools/output/categories\":222,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24}],3:[function(require,module,exports){\n\"use strict\";\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _xregexp = _interopRequireDefault(require(\"./xregexp\"));\n\nvar _unicodeBase = _interopRequireDefault(require(\"./addons/unicode-base\"));\n\nvar _unicodeCategories = _interopRequireDefault(require(\"./addons/unicode-categories\"));\n\n(0, _unicodeBase[\"default\"])(_xregexp[\"default\"]);\n(0, _unicodeCategories[\"default\"])(_xregexp[\"default\"]);\nvar _default = _xregexp[\"default\"];\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"./addons/unicode-base\":1,\"./addons/unicode-categories\":2,\"./xregexp\":4,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24}],4:[function(require,module,exports){\n\"use strict\";\n\nvar _sliceInstanceProperty2 = require(\"@babel/runtime-corejs3/core-js-stable/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js-stable/array/from\");\n\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js-stable/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nvar _Array$isArray = require(\"@babel/runtime-corejs3/core-js-stable/array/is-array\");\n\nvar _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js-stable/object/define-property\");\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");\n\n_Object$defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nexports[\"default\"] = void 0;\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/helpers/slicedToArray\"));\n\nvar _flags = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/flags\"));\n\nvar _sort = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/sort\"));\n\nvar _slice = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/slice\"));\n\nvar _parseInt2 = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/parse-int\"));\n\nvar _indexOf = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/index-of\"));\n\nvar _forEach = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/for-each\"));\n\nvar _create = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/object/create\"));\n\nvar _concat = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/instance/concat\"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== \"undefined\" && _getIteratorMethod(o) || o[\"@@iterator\"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { var _context9; if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = _sliceInstanceProperty2(_context9 = Object.prototype.toString.call(o)).call(_context9, 8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return _Array$from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*!\n * XRegExp 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2007-present MIT License\n */\n\n/**\n * XRegExp provides augmented, extensible regular expressions. You get additional regex syntax and\n * flags, beyond what browsers support natively. XRegExp is also a regex utility belt with tools to\n * make your client-side grepping simpler and more powerful, while freeing you from related\n * cross-browser inconsistencies.\n */\n// ==--------------------------==\n// Private stuff\n// ==--------------------------==\n// Property name used for extended regex instance data\nvar REGEX_DATA = 'xregexp'; // Optional features that can be installed and uninstalled\n\nvar features = {\n  astral: false,\n  namespacing: true\n}; // Storage for fixed/extended native methods\n\nvar fixed = {}; // Storage for regexes cached by `XRegExp.cache`\n\nvar regexCache = {}; // Storage for pattern details cached by the `XRegExp` constructor\n\nvar patternCache = {}; // Storage for regex syntax tokens added internally or by `XRegExp.addToken`\n\nvar tokens = []; // Token scopes\n\nvar defaultScope = 'default';\nvar classScope = 'class'; // Regexes that match native regex syntax, including octals\n\nvar nativeTokens = {\n  // Any native multicharacter token in default scope, or any single character\n  'default': /\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|\\(\\?(?:[:=!]|<[=!])|[?*+]\\?|{\\d+(?:,\\d*)?}\\??|[\\s\\S]/,\n  // Any native multicharacter token in character class scope, or any single character\n  'class': /\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|[\\s\\S]/\n}; // Any backreference or dollar-prefixed character in replacement strings\n\nvar replacementToken = /\\$(?:\\{([^\\}]+)\\}|<([^>]+)>|(\\d\\d?|[\\s\\S]?))/g; // Check for correct `exec` handling of nonparticipating capturing groups\n\nvar correctExecNpcg = /()??/.exec('')[1] === undefined; // Check for ES6 `flags` prop support\n\nvar hasFlagsProp = (0, _flags[\"default\"])(/x/) !== undefined;\n\nfunction hasNativeFlag(flag) {\n  // Can't check based on the presence of properties/getters since browsers might support such\n  // properties even when they don't support the corresponding flag in regex construction (tested\n  // in Chrome 48, where `'unicode' in /x/` is true but trying to construct a regex with flag `u`\n  // throws an error)\n  var isSupported = true;\n\n  try {\n    // Can't use regex literals for testing even in a `try` because regex literals with\n    // unsupported flags cause a compilation error in IE\n    new RegExp('', flag); // Work around a broken/incomplete IE11 polyfill for sticky introduced in core-js 3.6.0\n\n    if (flag === 'y') {\n      // Using function to avoid babel transform to regex literal\n      var gy = function () {\n        return 'gy';\n      }();\n\n      var incompleteY = '.a'.replace(new RegExp('a', gy), '.') === '..';\n\n      if (incompleteY) {\n        isSupported = false;\n      }\n    }\n  } catch (exception) {\n    isSupported = false;\n  }\n\n  return isSupported;\n} // Check for ES2021 `d` flag support\n\n\nvar hasNativeD = hasNativeFlag('d'); // Check for ES2018 `s` flag support\n\nvar hasNativeS = hasNativeFlag('s'); // Check for ES6 `u` flag support\n\nvar hasNativeU = hasNativeFlag('u'); // Check for ES6 `y` flag support\n\nvar hasNativeY = hasNativeFlag('y'); // Tracker for known flags, including addon flags\n\nvar registeredFlags = {\n  d: hasNativeD,\n  g: true,\n  i: true,\n  m: true,\n  s: hasNativeS,\n  u: hasNativeU,\n  y: hasNativeY\n}; // Flags to remove when passing to native `RegExp` constructor\n\nvar nonnativeFlags = hasNativeS ? /[^dgimsuy]+/g : /[^dgimuy]+/g;\n/**\n * Attaches extended data and `XRegExp.prototype` properties to a regex object.\n *\n * @private\n * @param {RegExp} regex Regex to augment.\n * @param {Array} captureNames Array with capture names, or `null`.\n * @param {String} xSource XRegExp pattern used to generate `regex`, or `null` if N/A.\n * @param {String} xFlags XRegExp flags used to generate `regex`, or `null` if N/A.\n * @param {Boolean} [isInternalOnly=false] Whether the regex will be used only for internal\n *   operations, and never exposed to users. For internal-only regexes, we can improve perf by\n *   skipping some operations like attaching `XRegExp.prototype` properties.\n * @returns {!RegExp} Augmented regex.\n */\n\nfunction augment(regex, captureNames, xSource, xFlags, isInternalOnly) {\n  var _context;\n\n  regex[REGEX_DATA] = {\n    captureNames: captureNames\n  };\n\n  if (isInternalOnly) {\n    return regex;\n  } // Can't auto-inherit these since the XRegExp constructor returns a nonprimitive value\n\n\n  if (regex.__proto__) {\n    regex.__proto__ = XRegExp.prototype;\n  } else {\n    for (var p in XRegExp.prototype) {\n      // An `XRegExp.prototype.hasOwnProperty(p)` check wouldn't be worth it here, since this\n      // is performance sensitive, and enumerable `Object.prototype` or `RegExp.prototype`\n      // extensions exist on `regex.prototype` anyway\n      regex[p] = XRegExp.prototype[p];\n    }\n  }\n\n  regex[REGEX_DATA].source = xSource; // Emulate the ES6 `flags` prop by ensuring flags are in alphabetical order\n\n  regex[REGEX_DATA].flags = xFlags ? (0, _sort[\"default\"])(_context = xFlags.split('')).call(_context).join('') : xFlags;\n  return regex;\n}\n/**\n * Removes any duplicate characters from the provided string.\n *\n * @private\n * @param {String} str String to remove duplicate characters from.\n * @returns {string} String with any duplicate characters removed.\n */\n\n\nfunction clipDuplicates(str) {\n  return str.replace(/([\\s\\S])(?=[\\s\\S]*\\1)/g, '');\n}\n/**\n * Copies a regex object while preserving extended data and augmenting with `XRegExp.prototype`\n * properties. The copy has a fresh `lastIndex` property (set to zero). Allows adding and removing\n * flags g and y while copying the regex.\n *\n * @private\n * @param {RegExp} regex Regex to copy.\n * @param {Object} [options] Options object with optional properties:\n *   - `addG` {Boolean} Add flag g while copying the regex.\n *   - `addY` {Boolean} Add flag y while copying the regex.\n *   - `removeG` {Boolean} Remove flag g while copying the regex.\n *   - `removeY` {Boolean} Remove flag y while copying the regex.\n *   - `isInternalOnly` {Boolean} Whether the copied regex will be used only for internal\n *     operations, and never exposed to users. For internal-only regexes, we can improve perf by\n *     skipping some operations like attaching `XRegExp.prototype` properties.\n *   - `source` {String} Overrides `<regex>.source`, for special cases.\n * @returns {RegExp} Copy of the provided regex, possibly with modified flags.\n */\n\n\nfunction copyRegex(regex, options) {\n  var _context2;\n\n  if (!XRegExp.isRegExp(regex)) {\n    throw new TypeError('Type RegExp expected');\n  }\n\n  var xData = regex[REGEX_DATA] || {};\n  var flags = getNativeFlags(regex);\n  var flagsToAdd = '';\n  var flagsToRemove = '';\n  var xregexpSource = null;\n  var xregexpFlags = null;\n  options = options || {};\n\n  if (options.removeG) {\n    flagsToRemove += 'g';\n  }\n\n  if (options.removeY) {\n    flagsToRemove += 'y';\n  }\n\n  if (flagsToRemove) {\n    flags = flags.replace(new RegExp(\"[\".concat(flagsToRemove, \"]+\"), 'g'), '');\n  }\n\n  if (options.addG) {\n    flagsToAdd += 'g';\n  }\n\n  if (options.addY) {\n    flagsToAdd += 'y';\n  }\n\n  if (flagsToAdd) {\n    flags = clipDuplicates(flags + flagsToAdd);\n  }\n\n  if (!options.isInternalOnly) {\n    if (xData.source !== undefined) {\n      xregexpSource = xData.source;\n    } // null or undefined; don't want to add to `flags` if the previous value was null, since\n    // that indicates we're not tracking original precompilation flags\n\n\n    if ((0, _flags[\"default\"])(xData) != null) {\n      // Flags are only added for non-internal regexes by `XRegExp.globalize`. Flags are never\n      // removed for non-internal regexes, so don't need to handle it\n      xregexpFlags = flagsToAdd ? clipDuplicates((0, _flags[\"default\"])(xData) + flagsToAdd) : (0, _flags[\"default\"])(xData);\n    }\n  } // Augment with `XRegExp.prototype` properties, but use the native `RegExp` constructor to avoid\n  // searching for special tokens. That would be wrong for regexes constructed by `RegExp`, and\n  // unnecessary for regexes constructed by `XRegExp` because the regex has already undergone the\n  // translation to native regex syntax\n\n\n  regex = augment(new RegExp(options.source || regex.source, flags), hasNamedCapture(regex) ? (0, _slice[\"default\"])(_context2 = xData.captureNames).call(_context2, 0) : null, xregexpSource, xregexpFlags, options.isInternalOnly);\n  return regex;\n}\n/**\n * Converts hexadecimal to decimal.\n *\n * @private\n * @param {String} hex\n * @returns {number}\n */\n\n\nfunction dec(hex) {\n  return (0, _parseInt2[\"default\"])(hex, 16);\n}\n/**\n * Returns a pattern that can be used in a native RegExp in place of an ignorable token such as an\n * inline comment or whitespace with flag x. This is used directly as a token handler function\n * passed to `XRegExp.addToken`.\n *\n * @private\n * @param {String} match Match arg of `XRegExp.addToken` handler\n * @param {String} scope Scope arg of `XRegExp.addToken` handler\n * @param {String} flags Flags arg of `XRegExp.addToken` handler\n * @returns {string} Either '' or '(?:)', depending on which is needed in the context of the match.\n */\n\n\nfunction getContextualTokenSeparator(match, scope, flags) {\n  var matchEndPos = match.index + match[0].length;\n  var precedingChar = match.input[match.index - 1];\n  var followingChar = match.input[matchEndPos];\n\n  if ( // No need to separate tokens if at the beginning or end of a group, before or after a\n  // group, or before or after a `|`\n  /^[()|]$/.test(precedingChar) || /^[()|]$/.test(followingChar) || // No need to separate tokens if at the beginning or end of the pattern\n  match.index === 0 || matchEndPos === match.input.length || // No need to separate tokens if at the beginning of a noncapturing group or lookaround.\n  // Looks only at the last 4 chars (at most) for perf when constructing long regexes.\n  /\\(\\?(?:[:=!]|<[=!])$/.test(match.input.substring(match.index - 4, match.index)) || // Avoid separating tokens when the following token is a quantifier\n  isQuantifierNext(match.input, matchEndPos, flags)) {\n    return '';\n  } // Keep tokens separated. This avoids e.g. inadvertedly changing `\\1 1` or `\\1(?#)1` to `\\11`.\n  // This also ensures all tokens remain as discrete atoms, e.g. it prevents converting the\n  // syntax error `(? :` into `(?:`.\n\n\n  return '(?:)';\n}\n/**\n * Returns native `RegExp` flags used by a regex object.\n *\n * @private\n * @param {RegExp} regex Regex to check.\n * @returns {string} Native flags in use.\n */\n\n\nfunction getNativeFlags(regex) {\n  return hasFlagsProp ? (0, _flags[\"default\"])(regex) : // Explicitly using `RegExp.prototype.toString` (rather than e.g. `String` or concatenation\n  // with an empty string) allows this to continue working predictably when\n  // `XRegExp.proptotype.toString` is overridden\n  /\\/([a-z]*)$/i.exec(RegExp.prototype.toString.call(regex))[1];\n}\n/**\n * Determines whether a regex has extended instance data used to track capture names.\n *\n * @private\n * @param {RegExp} regex Regex to check.\n * @returns {boolean} Whether the regex uses named capture.\n */\n\n\nfunction hasNamedCapture(regex) {\n  return !!(regex[REGEX_DATA] && regex[REGEX_DATA].captureNames);\n}\n/**\n * Converts decimal to hexadecimal.\n *\n * @private\n * @param {Number|String} dec\n * @returns {string}\n */\n\n\nfunction hex(dec) {\n  return (0, _parseInt2[\"default\"])(dec, 10).toString(16);\n}\n/**\n * Checks whether the next nonignorable token after the specified position is a quantifier.\n *\n * @private\n * @param {String} pattern Pattern to search within.\n * @param {Number} pos Index in `pattern` to search at.\n * @param {String} flags Flags used by the pattern.\n * @returns {Boolean} Whether the next nonignorable token is a quantifier.\n */\n\n\nfunction isQuantifierNext(pattern, pos, flags) {\n  var inlineCommentPattern = '\\\\(\\\\?#[^)]*\\\\)';\n  var lineCommentPattern = '#[^#\\\\n]*';\n  var quantifierPattern = '[?*+]|{\\\\d+(?:,\\\\d*)?}';\n  var regex = (0, _indexOf[\"default\"])(flags).call(flags, 'x') !== -1 ? // Ignore any leading whitespace, line comments, and inline comments\n  /^(?:\\s|#[^#\\n]*|\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/ : // Ignore any leading inline comments\n  /^(?:\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/;\n  return regex.test((0, _slice[\"default\"])(pattern).call(pattern, pos));\n}\n/**\n * Determines whether a value is of the specified type, by resolving its internal [[Class]].\n *\n * @private\n * @param {*} value Object to check.\n * @param {String} type Type to check for, in TitleCase.\n * @returns {boolean} Whether the object matches the type.\n */\n\n\nfunction isType(value, type) {\n  return Object.prototype.toString.call(value) === \"[object \".concat(type, \"]\");\n}\n/**\n * Returns the object, or throws an error if it is `null` or `undefined`. This is used to follow\n * the ES5 abstract operation `ToObject`.\n *\n * @private\n * @param {*} value Object to check and return.\n * @returns {*} The provided object.\n */\n\n\nfunction nullThrows(value) {\n  // null or undefined\n  if (value == null) {\n    throw new TypeError('Cannot convert null or undefined to object');\n  }\n\n  return value;\n}\n/**\n * Adds leading zeros if shorter than four characters. Used for fixed-length hexadecimal values.\n *\n * @private\n * @param {String} str\n * @returns {string}\n */\n\n\nfunction pad4(str) {\n  while (str.length < 4) {\n    str = \"0\".concat(str);\n  }\n\n  return str;\n}\n/**\n * Checks for flag-related errors, and strips/applies flags in a leading mode modifier. Offloads\n * the flag preparation logic from the `XRegExp` constructor.\n *\n * @private\n * @param {String} pattern Regex pattern, possibly with a leading mode modifier.\n * @param {String} flags Any combination of flags.\n * @returns {!Object} Object with properties `pattern` and `flags`.\n */\n\n\nfunction prepareFlags(pattern, flags) {\n  // Recent browsers throw on duplicate flags, so copy this behavior for nonnative flags\n  if (clipDuplicates(flags) !== flags) {\n    throw new SyntaxError(\"Invalid duplicate regex flag \".concat(flags));\n  } // Strip and apply a leading mode modifier with any combination of flags except `dgy`\n\n\n  pattern = pattern.replace(/^\\(\\?([\\w$]+)\\)/, function ($0, $1) {\n    if (/[dgy]/.test($1)) {\n      throw new SyntaxError(\"Cannot use flags dgy in mode modifier \".concat($0));\n    } // Allow duplicate flags within the mode modifier\n\n\n    flags = clipDuplicates(flags + $1);\n    return '';\n  }); // Throw on unknown native or nonnative flags\n\n  var _iterator = _createForOfIteratorHelper(flags),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var flag = _step.value;\n\n      if (!registeredFlags[flag]) {\n        throw new SyntaxError(\"Unknown regex flag \".concat(flag));\n      }\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  return {\n    pattern: pattern,\n    flags: flags\n  };\n}\n/**\n * Prepares an options object from the given value.\n *\n * @private\n * @param {String|Object} value Value to convert to an options object.\n * @returns {Object} Options object.\n */\n\n\nfunction prepareOptions(value) {\n  var options = {};\n\n  if (isType(value, 'String')) {\n    (0, _forEach[\"default\"])(XRegExp).call(XRegExp, value, /[^\\s,]+/, function (match) {\n      options[match] = true;\n    });\n    return options;\n  }\n\n  return value;\n}\n/**\n * Registers a flag so it doesn't throw an 'unknown flag' error.\n *\n * @private\n * @param {String} flag Single-character flag to register.\n */\n\n\nfunction registerFlag(flag) {\n  if (!/^[\\w$]$/.test(flag)) {\n    throw new Error('Flag must be a single character A-Za-z0-9_$');\n  }\n\n  registeredFlags[flag] = true;\n}\n/**\n * Runs built-in and custom regex syntax tokens in reverse insertion order at the specified\n * position, until a match is found.\n *\n * @private\n * @param {String} pattern Original pattern from which an XRegExp object is being built.\n * @param {String} flags Flags being used to construct the regex.\n * @param {Number} pos Position to search for tokens within `pattern`.\n * @param {Number} scope Regex scope to apply: 'default' or 'class'.\n * @param {Object} context Context object to use for token handler functions.\n * @returns {Object} Object with properties `matchLength`, `output`, and `reparse`; or `null`.\n */\n\n\nfunction runTokens(pattern, flags, pos, scope, context) {\n  var i = tokens.length;\n  var leadChar = pattern[pos];\n  var result = null;\n  var match;\n  var t; // Run in reverse insertion order\n\n  while (i--) {\n    t = tokens[i];\n\n    if (t.leadChar && t.leadChar !== leadChar || t.scope !== scope && t.scope !== 'all' || t.flag && !((0, _indexOf[\"default\"])(flags).call(flags, t.flag) !== -1)) {\n      continue;\n    }\n\n    match = XRegExp.exec(pattern, t.regex, pos, 'sticky');\n\n    if (match) {\n      result = {\n        matchLength: match[0].length,\n        output: t.handler.call(context, match, scope, flags),\n        reparse: t.reparse\n      }; // Finished with token tests\n\n      break;\n    }\n  }\n\n  return result;\n}\n/**\n * Enables or disables implicit astral mode opt-in. When enabled, flag A is automatically added to\n * all new regexes created by XRegExp. This causes an error to be thrown when creating regexes if\n * the Unicode Base addon is not available, since flag A is registered by that addon.\n *\n * @private\n * @param {Boolean} on `true` to enable; `false` to disable.\n */\n\n\nfunction setAstral(on) {\n  features.astral = on;\n}\n/**\n * Adds named capture groups to the `groups` property of match arrays. See here for details:\n * https://github.com/tc39/proposal-regexp-named-groups\n *\n * @private\n * @param {Boolean} on `true` to enable; `false` to disable.\n */\n\n\nfunction setNamespacing(on) {\n  features.namespacing = on;\n} // ==--------------------------==\n// Constructor\n// ==--------------------------==\n\n/**\n * Creates an extended regular expression object for matching text with a pattern. Differs from a\n * native regular expression in that additional syntax and flags are supported. The returned object\n * is in fact a native `RegExp` and works with all native methods.\n *\n * @class XRegExp\n * @constructor\n * @param {String|RegExp} pattern Regex pattern string, or an existing regex object to copy.\n * @param {String} [flags] Any combination of flags.\n *   Native flags:\n *     - `d` - indices for capturing groups (ES2021)\n *     - `g` - global\n *     - `i` - ignore case\n *     - `m` - multiline anchors\n *     - `u` - unicode (ES6)\n *     - `y` - sticky (Firefox 3+, ES6)\n *   Additional XRegExp flags:\n *     - `n` - named capture only\n *     - `s` - dot matches all (aka singleline) - works even when not natively supported\n *     - `x` - free-spacing and line comments (aka extended)\n *     - `A` - 21-bit Unicode properties (aka astral) - requires the Unicode Base addon\n *   Flags cannot be provided when constructing one `RegExp` from another.\n * @returns {RegExp} Extended regular expression object.\n * @example\n *\n * // With named capture and flag x\n * XRegExp(`(?<year>  [0-9]{4} ) -?  # year\n *          (?<month> [0-9]{2} ) -?  # month\n *          (?<day>   [0-9]{2} )     # day`, 'x');\n *\n * // Providing a regex object copies it. Native regexes are recompiled using native (not XRegExp)\n * // syntax. Copies maintain extended data, are augmented with `XRegExp.prototype` properties, and\n * // have fresh `lastIndex` properties (set to zero).\n * XRegExp(/regex/);\n */\n\n\nfunction XRegExp(pattern, flags) {\n  if (XRegExp.isRegExp(pattern)) {\n    if (flags !== undefined) {\n      throw new TypeError('Cannot supply flags when copying a RegExp');\n    }\n\n    return copyRegex(pattern);\n  } // Copy the argument behavior of `RegExp`\n\n\n  pattern = pattern === undefined ? '' : String(pattern);\n  flags = flags === undefined ? '' : String(flags);\n\n  if (XRegExp.isInstalled('astral') && !((0, _indexOf[\"default\"])(flags).call(flags, 'A') !== -1)) {\n    // This causes an error to be thrown if the Unicode Base addon is not available\n    flags += 'A';\n  }\n\n  if (!patternCache[pattern]) {\n    patternCache[pattern] = {};\n  }\n\n  if (!patternCache[pattern][flags]) {\n    var context = {\n      hasNamedCapture: false,\n      captureNames: []\n    };\n    var scope = defaultScope;\n    var output = '';\n    var pos = 0;\n    var result; // Check for flag-related errors, and strip/apply flags in a leading mode modifier\n\n    var applied = prepareFlags(pattern, flags);\n    var appliedPattern = applied.pattern;\n    var appliedFlags = (0, _flags[\"default\"])(applied); // Use XRegExp's tokens to translate the pattern to a native regex pattern.\n    // `appliedPattern.length` may change on each iteration if tokens use `reparse`\n\n    while (pos < appliedPattern.length) {\n      do {\n        // Check for custom tokens at the current position\n        result = runTokens(appliedPattern, appliedFlags, pos, scope, context); // If the matched token used the `reparse` option, splice its output into the\n        // pattern before running tokens again at the same position\n\n        if (result && result.reparse) {\n          appliedPattern = (0, _slice[\"default\"])(appliedPattern).call(appliedPattern, 0, pos) + result.output + (0, _slice[\"default\"])(appliedPattern).call(appliedPattern, pos + result.matchLength);\n        }\n      } while (result && result.reparse);\n\n      if (result) {\n        output += result.output;\n        pos += result.matchLength || 1;\n      } else {\n        // Get the native token at the current position\n        var _XRegExp$exec = XRegExp.exec(appliedPattern, nativeTokens[scope], pos, 'sticky'),\n            _XRegExp$exec2 = (0, _slicedToArray2[\"default\"])(_XRegExp$exec, 1),\n            token = _XRegExp$exec2[0];\n\n        output += token;\n        pos += token.length;\n\n        if (token === '[' && scope === defaultScope) {\n          scope = classScope;\n        } else if (token === ']' && scope === classScope) {\n          scope = defaultScope;\n        }\n      }\n    }\n\n    patternCache[pattern][flags] = {\n      // Use basic cleanup to collapse repeated empty groups like `(?:)(?:)` to `(?:)`. Empty\n      // groups are sometimes inserted during regex transpilation in order to keep tokens\n      // separated. However, more than one empty group in a row is never needed.\n      pattern: output.replace(/(?:\\(\\?:\\))+/g, '(?:)'),\n      // Strip all but native flags\n      flags: appliedFlags.replace(nonnativeFlags, ''),\n      // `context.captureNames` has an item for each capturing group, even if unnamed\n      captures: context.hasNamedCapture ? context.captureNames : null\n    };\n  }\n\n  var generated = patternCache[pattern][flags];\n  return augment(new RegExp(generated.pattern, (0, _flags[\"default\"])(generated)), generated.captures, pattern, flags);\n} // Add `RegExp.prototype` to the prototype chain\n\n\nXRegExp.prototype = /(?:)/; // ==--------------------------==\n// Public properties\n// ==--------------------------==\n\n/**\n * The XRegExp version number as a string containing three dot-separated parts. For example,\n * '2.0.0-beta-3'.\n *\n * @static\n * @memberOf XRegExp\n * @type String\n */\n\nXRegExp.version = '5.1.1'; // ==--------------------------==\n// Public methods\n// ==--------------------------==\n// Intentionally undocumented; used in tests and addons\n\nXRegExp._clipDuplicates = clipDuplicates;\nXRegExp._hasNativeFlag = hasNativeFlag;\nXRegExp._dec = dec;\nXRegExp._hex = hex;\nXRegExp._pad4 = pad4;\n/**\n * Extends XRegExp syntax and allows custom flags. This is used internally and can be used to\n * create XRegExp addons. If more than one token can match the same string, the last added wins.\n *\n * @memberOf XRegExp\n * @param {RegExp} regex Regex object that matches the new token.\n * @param {Function} handler Function that returns a new pattern string (using native regex syntax)\n *   to replace the matched token within all future XRegExp regexes. Has access to persistent\n *   properties of the regex being built, through `this`. Invoked with three arguments:\n *   - The match array, with named backreference properties.\n *   - The regex scope where the match was found: 'default' or 'class'.\n *   - The flags used by the regex, including any flags in a leading mode modifier.\n *   The handler function becomes part of the XRegExp construction process, so be careful not to\n *   construct XRegExps within the function or you will trigger infinite recursion.\n * @param {Object} [options] Options object with optional properties:\n *   - `scope` {String} Scope where the token applies: 'default', 'class', or 'all'.\n *   - `flag` {String} Single-character flag that triggers the token. This also registers the\n *     flag, which prevents XRegExp from throwing an 'unknown flag' error when the flag is used.\n *   - `optionalFlags` {String} Any custom flags checked for within the token `handler` that are\n *     not required to trigger the token. This registers the flags, to prevent XRegExp from\n *     throwing an 'unknown flag' error when any of the flags are used.\n *   - `reparse` {Boolean} Whether the `handler` function's output should not be treated as\n *     final, and instead be reparseable by other tokens (including the current token). Allows\n *     token chaining or deferring.\n *   - `leadChar` {String} Single character that occurs at the beginning of any successful match\n *     of the token (not always applicable). This doesn't change the behavior of the token unless\n *     you provide an erroneous value. However, providing it can increase the token's performance\n *     since the token can be skipped at any positions where this character doesn't appear.\n * @example\n *\n * // Basic usage: Add \\a for the ALERT control code\n * XRegExp.addToken(\n *   /\\\\a/,\n *   () => '\\\\x07',\n *   {scope: 'all'}\n * );\n * XRegExp('\\\\a[\\\\a-\\\\n]+').test('\\x07\\n\\x07'); // -> true\n *\n * // Add the U (ungreedy) flag from PCRE and RE2, which reverses greedy and lazy quantifiers.\n * // Since `scope` is not specified, it uses 'default' (i.e., transformations apply outside of\n * // character classes only)\n * XRegExp.addToken(\n *   /([?*+]|{\\d+(?:,\\d*)?})(\\??)/,\n *   (match) => `${match[1]}${match[2] ? '' : '?'}`,\n *   {flag: 'U'}\n * );\n * XRegExp('a+', 'U').exec('aaa')[0]; // -> 'a'\n * XRegExp('a+?', 'U').exec('aaa')[0]; // -> 'aaa'\n */\n\nXRegExp.addToken = function (regex, handler, options) {\n  options = options || {};\n  var _options = options,\n      optionalFlags = _options.optionalFlags;\n\n  if (options.flag) {\n    registerFlag(options.flag);\n  }\n\n  if (optionalFlags) {\n    optionalFlags = optionalFlags.split('');\n\n    var _iterator2 = _createForOfIteratorHelper(optionalFlags),\n        _step2;\n\n    try {\n      for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n        var flag = _step2.value;\n        registerFlag(flag);\n      }\n    } catch (err) {\n      _iterator2.e(err);\n    } finally {\n      _iterator2.f();\n    }\n  } // Add to the private list of syntax tokens\n\n\n  tokens.push({\n    regex: copyRegex(regex, {\n      addG: true,\n      addY: hasNativeY,\n      isInternalOnly: true\n    }),\n    handler: handler,\n    scope: options.scope || defaultScope,\n    flag: options.flag,\n    reparse: options.reparse,\n    leadChar: options.leadChar\n  }); // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and flags\n  // might now produce different results\n\n  XRegExp.cache.flush('patterns');\n};\n/**\n * Caches and returns the result of calling `XRegExp(pattern, flags)`. On any subsequent call with\n * the same pattern and flag combination, the cached copy of the regex is returned.\n *\n * @memberOf XRegExp\n * @param {String} pattern Regex pattern string.\n * @param {String} [flags] Any combination of XRegExp flags.\n * @returns {RegExp} Cached XRegExp object.\n * @example\n *\n * let match;\n * while (match = XRegExp.cache('.', 'gs').exec('abc')) {\n *   // The regex is compiled once only\n * }\n */\n\n\nXRegExp.cache = function (pattern, flags) {\n  if (!regexCache[pattern]) {\n    regexCache[pattern] = {};\n  }\n\n  return regexCache[pattern][flags] || (regexCache[pattern][flags] = XRegExp(pattern, flags));\n}; // Intentionally undocumented; used in tests\n\n\nXRegExp.cache.flush = function (cacheName) {\n  if (cacheName === 'patterns') {\n    // Flush the pattern cache used by the `XRegExp` constructor\n    patternCache = {};\n  } else {\n    // Flush the regex cache populated by `XRegExp.cache`\n    regexCache = {};\n  }\n};\n/**\n * Escapes any regular expression metacharacters, for use when matching literal strings. The result\n * can safely be used at any position within a regex that uses any flags.\n *\n * @memberOf XRegExp\n * @param {String} str String to escape.\n * @returns {string} String with regex metacharacters escaped.\n * @example\n *\n * XRegExp.escape('Escaped? <.>');\n * // -> 'Escaped\\?\\u0020<\\.>'\n */\n// Following are the contexts where each metacharacter needs to be escaped because it would\n// otherwise have a special meaning, change the meaning of surrounding characters, or cause an\n// error. Context 'default' means outside character classes only.\n// - `\\` - context: all\n// - `[()*+?.$|` - context: default\n// - `]` - context: default with flag u or if forming the end of a character class\n// - `{}` - context: default with flag u or if part of a valid/complete quantifier pattern\n// - `,` - context: default if in a position that causes an unescaped `{` to turn into a quantifier.\n//   Ex: `/^a{1\\,2}$/` matches `'a{1,2}'`, but `/^a{1,2}$/` matches `'a'` or `'aa'`\n// - `#` and <whitespace> - context: default with flag x\n// - `^` - context: default, and context: class if it's the first character in the class\n// - `-` - context: class if part of a valid character class range\n\n\nXRegExp.escape = function (str) {\n  return String(nullThrows(str)). // Escape most special chars with a backslash\n  replace(/[\\\\\\[\\]{}()*+?.^$|]/g, '\\\\$&'). // Convert to \\uNNNN for special chars that can't be escaped when used with ES6 flag `u`\n  replace(/[\\s#\\-,]/g, function (match) {\n    return \"\\\\u\".concat(pad4(hex(match.charCodeAt(0))));\n  });\n};\n/**\n * Executes a regex search in a specified string. Returns a match array or `null`. If the provided\n * regex uses named capture, named capture properties are included on the match array's `groups`\n * property. Optional `pos` and `sticky` arguments specify the search start position, and whether\n * the match must start at the specified position only. The `lastIndex` property of the provided\n * regex is not used, but is updated for compatibility. Also fixes browser bugs compared to the\n * native `RegExp.prototype.exec` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Number} [pos=0] Zero-based index at which to start the search.\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\n *   only. The string `'sticky'` is accepted as an alternative to `true`.\n * @returns {Array} Match array with named capture properties on the `groups` object, or `null`. If\n *   the `namespacing` feature is off, named capture properties are directly on the match array.\n * @example\n *\n * // Basic use, with named capturing group\n * let match = XRegExp.exec('U+2620', XRegExp('U\\\\+(?<hex>[0-9A-F]{4})'));\n * match.groups.hex; // -> '2620'\n *\n * // With pos and sticky, in a loop\n * let pos = 3, result = [], match;\n * while (match = XRegExp.exec('<1><2><3><4>5<6>', /<(\\d)>/, pos, 'sticky')) {\n *   result.push(match[1]);\n *   pos = match.index + match[0].length;\n * }\n * // result -> ['2', '3', '4']\n */\n\n\nXRegExp.exec = function (str, regex, pos, sticky) {\n  var cacheKey = 'g';\n  var addY = false;\n  var fakeY = false;\n  var match;\n  addY = hasNativeY && !!(sticky || regex.sticky && sticky !== false);\n\n  if (addY) {\n    cacheKey += 'y';\n  } else if (sticky) {\n    // Simulate sticky matching by appending an empty capture to the original regex. The\n    // resulting regex will succeed no matter what at the current index (set with `lastIndex`),\n    // and will not search the rest of the subject string. We'll know that the original regex\n    // has failed if that last capture is `''` rather than `undefined` (i.e., if that last\n    // capture participated in the match).\n    fakeY = true;\n    cacheKey += 'FakeY';\n  }\n\n  regex[REGEX_DATA] = regex[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.match`/`replace`\n\n  var r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\n    addG: true,\n    addY: addY,\n    source: fakeY ? \"\".concat(regex.source, \"|()\") : undefined,\n    removeY: sticky === false,\n    isInternalOnly: true\n  }));\n  pos = pos || 0;\n  r2.lastIndex = pos; // Fixed `exec` required for `lastIndex` fix, named backreferences, etc.\n\n  match = fixed.exec.call(r2, str); // Get rid of the capture added by the pseudo-sticky matcher if needed. An empty string means\n  // the original regexp failed (see above).\n\n  if (fakeY && match && match.pop() === '') {\n    match = null;\n  }\n\n  if (regex.global) {\n    regex.lastIndex = match ? r2.lastIndex : 0;\n  }\n\n  return match;\n};\n/**\n * Executes a provided function once per regex match. Searches always start at the beginning of the\n * string and continue until the end, regardless of the state of the regex's `global` property and\n * initial `lastIndex`.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Function} callback Function to execute for each match. Invoked with four arguments:\n *   - The match array, with named backreference properties.\n *   - The zero-based match index.\n *   - The string being traversed.\n *   - The regex object being used to traverse the string.\n * @example\n *\n * // Extracts every other digit from a string\n * const evens = [];\n * XRegExp.forEach('1a2345', /\\d/, (match, i) => {\n *   if (i % 2) evens.push(+match[0]);\n * });\n * // evens -> [2, 4]\n */\n\n\nXRegExp.forEach = function (str, regex, callback) {\n  var pos = 0;\n  var i = -1;\n  var match;\n\n  while (match = XRegExp.exec(str, regex, pos)) {\n    // Because `regex` is provided to `callback`, the function could use the deprecated/\n    // nonstandard `RegExp.prototype.compile` to mutate the regex. However, since `XRegExp.exec`\n    // doesn't use `lastIndex` to set the search position, this can't lead to an infinite loop,\n    // at least. Actually, because of the way `XRegExp.exec` caches globalized versions of\n    // regexes, mutating the regex will not have any effect on the iteration or matched strings,\n    // which is a nice side effect that brings extra safety.\n    callback(match, ++i, str, regex);\n    pos = match.index + (match[0].length || 1);\n  }\n};\n/**\n * Copies a regex object and adds flag `g`. The copy maintains extended data, is augmented with\n * `XRegExp.prototype` properties, and has a fresh `lastIndex` property (set to zero). Native\n * regexes are not recompiled using XRegExp syntax.\n *\n * @memberOf XRegExp\n * @param {RegExp} regex Regex to globalize.\n * @returns {RegExp} Copy of the provided regex with flag `g` added.\n * @example\n *\n * const globalCopy = XRegExp.globalize(/regex/);\n * globalCopy.global; // -> true\n */\n\n\nXRegExp.globalize = function (regex) {\n  return copyRegex(regex, {\n    addG: true\n  });\n};\n/**\n * Installs optional features according to the specified options. Can be undone using\n * `XRegExp.uninstall`.\n *\n * @memberOf XRegExp\n * @param {Object|String} options Options object or string.\n * @example\n *\n * // With an options object\n * XRegExp.install({\n *   // Enables support for astral code points in Unicode addons (implicitly sets flag A)\n *   astral: true,\n *\n *   // Adds named capture groups to the `groups` property of matches\n *   namespacing: true\n * });\n *\n * // With an options string\n * XRegExp.install('astral namespacing');\n */\n\n\nXRegExp.install = function (options) {\n  options = prepareOptions(options);\n\n  if (!features.astral && options.astral) {\n    setAstral(true);\n  }\n\n  if (!features.namespacing && options.namespacing) {\n    setNamespacing(true);\n  }\n};\n/**\n * Checks whether an individual optional feature is installed.\n *\n * @memberOf XRegExp\n * @param {String} feature Name of the feature to check. One of:\n *   - `astral`\n *   - `namespacing`\n * @returns {boolean} Whether the feature is installed.\n * @example\n *\n * XRegExp.isInstalled('astral');\n */\n\n\nXRegExp.isInstalled = function (feature) {\n  return !!features[feature];\n};\n/**\n * Returns `true` if an object is a regex; `false` if it isn't. This works correctly for regexes\n * created in another frame, when `instanceof` and `constructor` checks would fail.\n *\n * @memberOf XRegExp\n * @param {*} value Object to check.\n * @returns {boolean} Whether the object is a `RegExp` object.\n * @example\n *\n * XRegExp.isRegExp('string'); // -> false\n * XRegExp.isRegExp(/regex/i); // -> true\n * XRegExp.isRegExp(RegExp('^', 'm')); // -> true\n * XRegExp.isRegExp(XRegExp('(?s).')); // -> true\n */\n\n\nXRegExp.isRegExp = function (value) {\n  return Object.prototype.toString.call(value) === '[object RegExp]';\n}; // Same as `isType(value, 'RegExp')`, but avoiding that function call here for perf since\n// `isRegExp` is used heavily by internals including regex construction\n\n/**\n * Returns the first matched string, or in global mode, an array containing all matched strings.\n * This is essentially a more convenient re-implementation of `String.prototype.match` that gives\n * the result types you actually want (string instead of `exec`-style array in match-first mode,\n * and an empty array instead of `null` when no matches are found in match-all mode). It also lets\n * you override flag g and ignore `lastIndex`, and fixes browser bugs.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {String} [scope='one'] Use 'one' to return the first match as a string. Use 'all' to\n *   return an array of all matched strings. If not explicitly specified and `regex` uses flag g,\n *   `scope` is 'all'.\n * @returns {String|Array} In match-first mode: First match as a string, or `null`. In match-all\n *   mode: Array of all matched strings, or an empty array.\n * @example\n *\n * // Match first\n * XRegExp.match('abc', /\\w/); // -> 'a'\n * XRegExp.match('abc', /\\w/g, 'one'); // -> 'a'\n * XRegExp.match('abc', /x/g, 'one'); // -> null\n *\n * // Match all\n * XRegExp.match('abc', /\\w/g); // -> ['a', 'b', 'c']\n * XRegExp.match('abc', /\\w/, 'all'); // -> ['a', 'b', 'c']\n * XRegExp.match('abc', /x/, 'all'); // -> []\n */\n\n\nXRegExp.match = function (str, regex, scope) {\n  var global = regex.global && scope !== 'one' || scope === 'all';\n  var cacheKey = (global ? 'g' : '') + (regex.sticky ? 'y' : '') || 'noGY';\n  regex[REGEX_DATA] = regex[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.exec`/`replace`\n\n  var r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\n    addG: !!global,\n    removeG: scope === 'one',\n    isInternalOnly: true\n  }));\n  var result = String(nullThrows(str)).match(r2);\n\n  if (regex.global) {\n    regex.lastIndex = scope === 'one' && result ? // Can't use `r2.lastIndex` since `r2` is nonglobal in this case\n    result.index + result[0].length : 0;\n  }\n\n  return global ? result || [] : result && result[0];\n};\n/**\n * Retrieves the matches from searching a string using a chain of regexes that successively search\n * within previous matches. The provided `chain` array can contain regexes and or objects with\n * `regex` and `backref` properties. When a backreference is specified, the named or numbered\n * backreference is passed forward to the next regex or returned.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {Array} chain Regexes that each search for matches within preceding results.\n * @returns {Array} Matches by the last regex in the chain, or an empty array.\n * @example\n *\n * // Basic usage; matches numbers within <b> tags\n * XRegExp.matchChain('1 <b>2</b> 3 <b>4 a 56</b>', [\n *   XRegExp('(?is)<b>.*?</b>'),\n *   /\\d+/\n * ]);\n * // -> ['2', '4', '56']\n *\n * // Passing forward and returning specific backreferences\n * const html = `<a href=\"http://xregexp.com/api/\">XRegExp</a>\n *               <a href=\"http://www.google.com/\">Google</a>`;\n * XRegExp.matchChain(html, [\n *   {regex: /<a href=\"([^\"]+)\">/i, backref: 1},\n *   {regex: XRegExp('(?i)^https?://(?<domain>[^/?#]+)'), backref: 'domain'}\n * ]);\n * // -> ['xregexp.com', 'www.google.com']\n */\n\n\nXRegExp.matchChain = function (str, chain) {\n  return function recurseChain(values, level) {\n    var item = chain[level].regex ? chain[level] : {\n      regex: chain[level]\n    };\n    var matches = [];\n\n    function addMatch(match) {\n      if (item.backref) {\n        var ERR_UNDEFINED_GROUP = \"Backreference to undefined group: \".concat(item.backref);\n        var isNamedBackref = isNaN(item.backref);\n\n        if (isNamedBackref && XRegExp.isInstalled('namespacing')) {\n          // `groups` has `null` as prototype, so using `in` instead of `hasOwnProperty`\n          if (!(match.groups && item.backref in match.groups)) {\n            throw new ReferenceError(ERR_UNDEFINED_GROUP);\n          }\n        } else if (!match.hasOwnProperty(item.backref)) {\n          throw new ReferenceError(ERR_UNDEFINED_GROUP);\n        }\n\n        var backrefValue = isNamedBackref && XRegExp.isInstalled('namespacing') ? match.groups[item.backref] : match[item.backref];\n        matches.push(backrefValue || '');\n      } else {\n        matches.push(match[0]);\n      }\n    }\n\n    var _iterator3 = _createForOfIteratorHelper(values),\n        _step3;\n\n    try {\n      for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n        var value = _step3.value;\n        (0, _forEach[\"default\"])(XRegExp).call(XRegExp, value, item.regex, addMatch);\n      }\n    } catch (err) {\n      _iterator3.e(err);\n    } finally {\n      _iterator3.f();\n    }\n\n    return level === chain.length - 1 || !matches.length ? matches : recurseChain(matches, level + 1);\n  }([str], 0);\n};\n/**\n * Returns a new string with one or all matches of a pattern replaced. The pattern can be a string\n * or regex, and the replacement can be a string or a function to be called for each match. To\n * perform a global search and replace, use the optional `scope` argument or include flag g if using\n * a regex. Replacement strings can use `$<n>` or `${n}` for named and numbered backreferences.\n * Replacement functions can use named backreferences via the last argument. Also fixes browser bugs\n * compared to the native `String.prototype.replace` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp|String} search Search pattern to be replaced.\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\n *   Replacement strings can include special replacement syntax:\n *     - $$ - Inserts a literal $ character.\n *     - $&, $0 - Inserts the matched substring.\n *     - $` - Inserts the string that precedes the matched substring (left context).\n *     - $' - Inserts the string that follows the matched substring (right context).\n *     - $n, $nn - Where n/nn are digits referencing an existing capturing group, inserts\n *       backreference n/nn.\n *     - $<n>, ${n} - Where n is a name or any number of digits that reference an existing capturing\n *       group, inserts backreference n.\n *   Replacement functions are invoked with three or more arguments:\n *     - args[0] - The matched substring (corresponds to `$&` above). If the `namespacing` feature\n *       is off, named backreferences are accessible as properties of this argument.\n *     - args[1..n] - One argument for each backreference (corresponding to `$1`, `$2`, etc. above).\n *       If the regex has no capturing groups, no arguments appear in this position.\n *     - args[n+1] - The zero-based index of the match within the entire search string.\n *     - args[n+2] - The total string being searched.\n *     - args[n+3] - If the the search pattern is a regex with named capturing groups, the last\n *       argument is the groups object. Its keys are the backreference names and its values are the\n *       backreference values. If the `namespacing` feature is off, this argument is not present.\n * @param {String} [scope] Use 'one' to replace the first match only, or 'all'. Defaults to 'one'.\n *   Defaults to 'all' if using a regex with flag g.\n * @returns {String} New string with one or all matches replaced.\n * @example\n *\n * // Regex search, using named backreferences in replacement string\n * const name = XRegExp('(?<first>\\\\w+) (?<last>\\\\w+)');\n * XRegExp.replace('John Smith', name, '$<last>, $<first>');\n * // -> 'Smith, John'\n *\n * // Regex search, using named backreferences in replacement function\n * XRegExp.replace('John Smith', name, (...args) => {\n *   const groups = args[args.length - 1];\n *   return `${groups.last}, ${groups.first}`;\n * });\n * // -> 'Smith, John'\n *\n * // String search, with replace-all\n * XRegExp.replace('RegExp builds RegExps', 'RegExp', 'XRegExp', 'all');\n * // -> 'XRegExp builds XRegExps'\n */\n\n\nXRegExp.replace = function (str, search, replacement, scope) {\n  var isRegex = XRegExp.isRegExp(search);\n  var global = search.global && scope !== 'one' || scope === 'all';\n  var cacheKey = (global ? 'g' : '') + (search.sticky ? 'y' : '') || 'noGY';\n  var s2 = search;\n\n  if (isRegex) {\n    search[REGEX_DATA] = search[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.exec`/`match`. Since a copy is used, `search`'s\n    // `lastIndex` isn't updated *during* replacement iterations\n\n    s2 = search[REGEX_DATA][cacheKey] || (search[REGEX_DATA][cacheKey] = copyRegex(search, {\n      addG: !!global,\n      removeG: scope === 'one',\n      isInternalOnly: true\n    }));\n  } else if (global) {\n    s2 = new RegExp(XRegExp.escape(String(search)), 'g');\n  } // Fixed `replace` required for named backreferences, etc.\n\n\n  var result = fixed.replace.call(nullThrows(str), s2, replacement);\n\n  if (isRegex && search.global) {\n    // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\n    search.lastIndex = 0;\n  }\n\n  return result;\n};\n/**\n * Performs batch processing of string replacements. Used like `XRegExp.replace`, but accepts an\n * array of replacement details. Later replacements operate on the output of earlier replacements.\n * Replacement details are accepted as an array with a regex or string to search for, the\n * replacement string or function, and an optional scope of 'one' or 'all'. Uses the XRegExp\n * replacement text syntax, which supports named backreference properties via `$<name>` or\n * `${name}`.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {Array} replacements Array of replacement detail arrays.\n * @returns {String} New string with all replacements.\n * @example\n *\n * str = XRegExp.replaceEach(str, [\n *   [XRegExp('(?<name>a)'), 'z$<name>'],\n *   [/b/gi, 'y'],\n *   [/c/g, 'x', 'one'], // scope 'one' overrides /g\n *   [/d/, 'w', 'all'],  // scope 'all' overrides lack of /g\n *   ['e', 'v', 'all'],  // scope 'all' allows replace-all for strings\n *   [/f/g, (match) => match.toUpperCase()]\n * ]);\n */\n\n\nXRegExp.replaceEach = function (str, replacements) {\n  var _iterator4 = _createForOfIteratorHelper(replacements),\n      _step4;\n\n  try {\n    for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n      var r = _step4.value;\n      str = XRegExp.replace(str, r[0], r[1], r[2]);\n    }\n  } catch (err) {\n    _iterator4.e(err);\n  } finally {\n    _iterator4.f();\n  }\n\n  return str;\n};\n/**\n * Splits a string into an array of strings using a regex or string separator. Matches of the\n * separator are not included in the result array. However, if `separator` is a regex that contains\n * capturing groups, backreferences are spliced into the result each time `separator` is matched.\n * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably\n * cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to split.\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {Array} Array of substrings.\n * @example\n *\n * // Basic use\n * XRegExp.split('a b c', ' ');\n * // -> ['a', 'b', 'c']\n *\n * // With limit\n * XRegExp.split('a b c', ' ', 2);\n * // -> ['a', 'b']\n *\n * // Backreferences in result array\n * XRegExp.split('..word1..', /([a-z]+)(\\d+)/i);\n * // -> ['..', 'word', '1', '..']\n */\n\n\nXRegExp.split = function (str, separator, limit) {\n  return fixed.split.call(nullThrows(str), separator, limit);\n};\n/**\n * Executes a regex search in a specified string. Returns `true` or `false`. Optional `pos` and\n * `sticky` arguments specify the search start position, and whether the match must start at the\n * specified position only. The `lastIndex` property of the provided regex is not used, but is\n * updated for compatibility. Also fixes browser bugs compared to the native\n * `RegExp.prototype.test` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Number} [pos=0] Zero-based index at which to start the search.\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\n *   only. The string `'sticky'` is accepted as an alternative to `true`.\n * @returns {boolean} Whether the regex matched the provided value.\n * @example\n *\n * // Basic use\n * XRegExp.test('abc', /c/); // -> true\n *\n * // With pos and sticky\n * XRegExp.test('abc', /c/, 0, 'sticky'); // -> false\n * XRegExp.test('abc', /c/, 2, 'sticky'); // -> true\n */\n// Do this the easy way :-)\n\n\nXRegExp.test = function (str, regex, pos, sticky) {\n  return !!XRegExp.exec(str, regex, pos, sticky);\n};\n/**\n * Uninstalls optional features according to the specified options. Used to undo the actions of\n * `XRegExp.install`.\n *\n * @memberOf XRegExp\n * @param {Object|String} options Options object or string.\n * @example\n *\n * // With an options object\n * XRegExp.uninstall({\n *   // Disables support for astral code points in Unicode addons (unless enabled per regex)\n *   astral: true,\n *\n *   // Don't add named capture groups to the `groups` property of matches\n *   namespacing: true\n * });\n *\n * // With an options string\n * XRegExp.uninstall('astral namespacing');\n */\n\n\nXRegExp.uninstall = function (options) {\n  options = prepareOptions(options);\n\n  if (features.astral && options.astral) {\n    setAstral(false);\n  }\n\n  if (features.namespacing && options.namespacing) {\n    setNamespacing(false);\n  }\n};\n/**\n * Returns an XRegExp object that is the union of the given patterns. Patterns can be provided as\n * regex objects or strings. Metacharacters are escaped in patterns provided as strings.\n * Backreferences in provided regex objects are automatically renumbered to work correctly within\n * the larger combined pattern. Native flags used by provided regexes are ignored in favor of the\n * `flags` argument.\n *\n * @memberOf XRegExp\n * @param {Array} patterns Regexes and strings to combine.\n * @param {String} [flags] Any combination of XRegExp flags.\n * @param {Object} [options] Options object with optional properties:\n *   - `conjunction` {String} Type of conjunction to use: 'or' (default) or 'none'.\n * @returns {RegExp} Union of the provided regexes and strings.\n * @example\n *\n * XRegExp.union(['a+b*c', /(dogs)\\1/, /(cats)\\1/], 'i');\n * // -> /a\\+b\\*c|(dogs)\\1|(cats)\\2/i\n *\n * XRegExp.union([/man/, /bear/, /pig/], 'i', {conjunction: 'none'});\n * // -> /manbearpig/i\n */\n\n\nXRegExp.union = function (patterns, flags, options) {\n  options = options || {};\n  var conjunction = options.conjunction || 'or';\n  var numCaptures = 0;\n  var numPriorCaptures;\n  var captureNames;\n\n  function rewrite(match, paren, backref) {\n    var name = captureNames[numCaptures - numPriorCaptures]; // Capturing group\n\n    if (paren) {\n      ++numCaptures; // If the current capture has a name, preserve the name\n\n      if (name) {\n        return \"(?<\".concat(name, \">\");\n      } // Backreference\n\n    } else if (backref) {\n      // Rewrite the backreference\n      return \"\\\\\".concat(+backref + numPriorCaptures);\n    }\n\n    return match;\n  }\n\n  if (!(isType(patterns, 'Array') && patterns.length)) {\n    throw new TypeError('Must provide a nonempty array of patterns to merge');\n  }\n\n  var parts = /(\\()(?!\\?)|\\\\([1-9]\\d*)|\\\\[\\s\\S]|\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/g;\n  var output = [];\n\n  var _iterator5 = _createForOfIteratorHelper(patterns),\n      _step5;\n\n  try {\n    for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n      var pattern = _step5.value;\n\n      if (XRegExp.isRegExp(pattern)) {\n        numPriorCaptures = numCaptures;\n        captureNames = pattern[REGEX_DATA] && pattern[REGEX_DATA].captureNames || []; // Rewrite backreferences. Passing to XRegExp dies on octals and ensures patterns are\n        // independently valid; helps keep this simple. Named captures are put back\n\n        output.push(XRegExp(pattern.source).source.replace(parts, rewrite));\n      } else {\n        output.push(XRegExp.escape(pattern));\n      }\n    }\n  } catch (err) {\n    _iterator5.e(err);\n  } finally {\n    _iterator5.f();\n  }\n\n  var separator = conjunction === 'none' ? '' : '|';\n  return XRegExp(output.join(separator), flags);\n}; // ==--------------------------==\n// Fixed/extended native methods\n// ==--------------------------==\n\n/**\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\n * bugs in the native `RegExp.prototype.exec`. Use via `XRegExp.exec`.\n *\n * @memberOf RegExp\n * @param {String} str String to search.\n * @returns {Array} Match array with named backreference properties, or `null`.\n */\n\n\nfixed.exec = function (str) {\n  var origLastIndex = this.lastIndex;\n  var match = RegExp.prototype.exec.apply(this, arguments);\n\n  if (match) {\n    // Fix browsers whose `exec` methods don't return `undefined` for nonparticipating capturing\n    // groups. This fixes IE 5.5-8, but not IE 9's quirks mode or emulation of older IEs. IE 9\n    // in standards mode follows the spec.\n    if (!correctExecNpcg && match.length > 1 && (0, _indexOf[\"default\"])(match).call(match, '') !== -1) {\n      var _context3;\n\n      var r2 = copyRegex(this, {\n        removeG: true,\n        isInternalOnly: true\n      }); // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed\n      // matching due to characters outside the match\n\n      (0, _slice[\"default\"])(_context3 = String(str)).call(_context3, match.index).replace(r2, function () {\n        var len = arguments.length; // Skip index 0 and the last 2\n\n        for (var i = 1; i < len - 2; ++i) {\n          if ((i < 0 || arguments.length <= i ? undefined : arguments[i]) === undefined) {\n            match[i] = undefined;\n          }\n        }\n      });\n    } // Attach named capture properties\n\n\n    if (this[REGEX_DATA] && this[REGEX_DATA].captureNames) {\n      var groupsObject = match;\n\n      if (XRegExp.isInstalled('namespacing')) {\n        // https://tc39.github.io/proposal-regexp-named-groups/#sec-regexpbuiltinexec\n        match.groups = (0, _create[\"default\"])(null);\n        groupsObject = match.groups;\n      } // Skip index 0\n\n\n      for (var i = 1; i < match.length; ++i) {\n        var name = this[REGEX_DATA].captureNames[i - 1];\n\n        if (name) {\n          groupsObject[name] = match[i];\n        }\n      } // Preserve any existing `groups` obj that came from native ES2018 named capture\n\n    } else if (!match.groups && XRegExp.isInstalled('namespacing')) {\n      match.groups = undefined;\n    } // Fix browsers that increment `lastIndex` after zero-length matches\n\n\n    if (this.global && !match[0].length && this.lastIndex > match.index) {\n      this.lastIndex = match.index;\n    }\n  }\n\n  if (!this.global) {\n    // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\n    this.lastIndex = origLastIndex;\n  }\n\n  return match;\n};\n/**\n * Fixes browser bugs in the native `RegExp.prototype.test`.\n *\n * @memberOf RegExp\n * @param {String} str String to search.\n * @returns {boolean} Whether the regex matched the provided value.\n */\n\n\nfixed.test = function (str) {\n  // Do this the easy way :-)\n  return !!fixed.exec.call(this, str);\n};\n/**\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\n * bugs in the native `String.prototype.match`.\n *\n * @memberOf String\n * @param {RegExp|*} regex Regex to search with. If not a regex object, it is passed to `RegExp`.\n * @returns {Array} If `regex` uses flag g, an array of match strings or `null`. Without flag g,\n *   the result of calling `regex.exec(this)`.\n */\n\n\nfixed.match = function (regex) {\n  if (!XRegExp.isRegExp(regex)) {\n    // Use the native `RegExp` rather than `XRegExp`\n    regex = new RegExp(regex);\n  } else if (regex.global) {\n    var result = String.prototype.match.apply(this, arguments); // Fixes IE bug\n\n    regex.lastIndex = 0;\n    return result;\n  }\n\n  return fixed.exec.call(regex, nullThrows(this));\n};\n/**\n * Adds support for `${n}` (or `$<n>`) tokens for named and numbered backreferences in replacement\n * text, and provides named backreferences to replacement functions as `arguments[0].name`. Also\n * fixes browser bugs in replacement text syntax when performing a replacement using a nonregex\n * search value, and the value of a replacement regex's `lastIndex` property during replacement\n * iterations and upon completion. Note that this doesn't support SpiderMonkey's proprietary third\n * (`flags`) argument. Use via `XRegExp.replace`.\n *\n * @memberOf String\n * @param {RegExp|String} search Search pattern to be replaced.\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\n * @returns {string} New string with one or all matches replaced.\n */\n\n\nfixed.replace = function (search, replacement) {\n  var isRegex = XRegExp.isRegExp(search);\n  var origLastIndex;\n  var captureNames;\n  var result;\n\n  if (isRegex) {\n    if (search[REGEX_DATA]) {\n      captureNames = search[REGEX_DATA].captureNames;\n    } // Only needed if `search` is nonglobal\n\n\n    origLastIndex = search.lastIndex;\n  } else {\n    search += ''; // Type-convert\n  } // Don't use `typeof`; some older browsers return 'function' for regex objects\n\n\n  if (isType(replacement, 'Function')) {\n    // Stringifying `this` fixes a bug in IE < 9 where the last argument in replacement\n    // functions isn't type-converted to a string\n    result = String(this).replace(search, function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      if (captureNames) {\n        var groupsObject;\n\n        if (XRegExp.isInstalled('namespacing')) {\n          // https://tc39.github.io/proposal-regexp-named-groups/#sec-regexpbuiltinexec\n          groupsObject = (0, _create[\"default\"])(null);\n          args.push(groupsObject);\n        } else {\n          // Change the `args[0]` string primitive to a `String` object that can store\n          // properties. This really does need to use `String` as a constructor\n          args[0] = new String(args[0]);\n          groupsObject = args[0];\n        } // Store named backreferences\n\n\n        for (var i = 0; i < captureNames.length; ++i) {\n          if (captureNames[i]) {\n            groupsObject[captureNames[i]] = args[i + 1];\n          }\n        }\n      } // ES6 specs the context for replacement functions as `undefined`\n\n\n      return replacement.apply(void 0, args);\n    });\n  } else {\n    // Ensure that the last value of `args` will be a string when given nonstring `this`,\n    // while still throwing on null or undefined context\n    result = String(nullThrows(this)).replace(search, function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return String(replacement).replace(replacementToken, replacer);\n\n      function replacer($0, bracketed, angled, dollarToken) {\n        bracketed = bracketed || angled; // ES2018 added a new trailing `groups` arg that's passed to replacement functions\n        // when the search regex uses native named capture\n\n        var numNonCaptureArgs = isType(args[args.length - 1], 'Object') ? 4 : 3;\n        var numCaptures = args.length - numNonCaptureArgs; // Handle named or numbered backreference with curly or angled braces: ${n}, $<n>\n\n        if (bracketed) {\n          // Handle backreference to numbered capture, if `bracketed` is an integer. Use\n          // `0` for the entire match. Any number of leading zeros may be used.\n          if (/^\\d+$/.test(bracketed)) {\n            // Type-convert and drop leading zeros\n            var _n = +bracketed;\n\n            if (_n <= numCaptures) {\n              return args[_n] || '';\n            }\n          } // Handle backreference to named capture. If the name does not refer to an\n          // existing capturing group, it's an error. Also handles the error for numbered\n          // backference that does not refer to an existing group.\n          // Using `indexOf` since having groups with the same name is already an error,\n          // otherwise would need `lastIndexOf`.\n\n\n          var n = captureNames ? (0, _indexOf[\"default\"])(captureNames).call(captureNames, bracketed) : -1;\n\n          if (n < 0) {\n            throw new SyntaxError(\"Backreference to undefined group \".concat($0));\n          }\n\n          return args[n + 1] || '';\n        } // Handle `$`-prefixed variable\n        // Handle space/blank first because type conversion with `+` drops space padding\n        // and converts spaces and empty strings to `0`\n\n\n        if (dollarToken === '' || dollarToken === ' ') {\n          throw new SyntaxError(\"Invalid token \".concat($0));\n        }\n\n        if (dollarToken === '&' || +dollarToken === 0) {\n          // $&, $0 (not followed by 1-9), $00\n          return args[0];\n        }\n\n        if (dollarToken === '$') {\n          // $$\n          return '$';\n        }\n\n        if (dollarToken === '`') {\n          var _context4;\n\n          // $` (left context)\n          return (0, _slice[\"default\"])(_context4 = args[args.length - 1]).call(_context4, 0, args[args.length - 2]);\n        }\n\n        if (dollarToken === \"'\") {\n          var _context5;\n\n          // $' (right context)\n          return (0, _slice[\"default\"])(_context5 = args[args.length - 1]).call(_context5, args[args.length - 2] + args[0].length);\n        } // Handle numbered backreference without braces\n        // Type-convert and drop leading zero\n\n\n        dollarToken = +dollarToken; // XRegExp behavior for `$n` and `$nn`:\n        // - Backrefs end after 1 or 2 digits. Use `${..}` or `$<..>` for more digits.\n        // - `$1` is an error if no capturing groups.\n        // - `$10` is an error if less than 10 capturing groups. Use `${1}0` or `$<1>0`\n        //   instead.\n        // - `$01` is `$1` if at least one capturing group, else it's an error.\n        // - `$0` (not followed by 1-9) and `$00` are the entire match.\n        // Native behavior, for comparison:\n        // - Backrefs end after 1 or 2 digits. Cannot reference capturing group 100+.\n        // - `$1` is a literal `$1` if no capturing groups.\n        // - `$10` is `$1` followed by a literal `0` if less than 10 capturing groups.\n        // - `$01` is `$1` if at least one capturing group, else it's a literal `$01`.\n        // - `$0` is a literal `$0`.\n\n        if (!isNaN(dollarToken)) {\n          if (dollarToken > numCaptures) {\n            throw new SyntaxError(\"Backreference to undefined group \".concat($0));\n          }\n\n          return args[dollarToken] || '';\n        } // `$` followed by an unsupported char is an error, unlike native JS\n\n\n        throw new SyntaxError(\"Invalid token \".concat($0));\n      }\n    });\n  }\n\n  if (isRegex) {\n    if (search.global) {\n      // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\n      search.lastIndex = 0;\n    } else {\n      // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\n      search.lastIndex = origLastIndex;\n    }\n  }\n\n  return result;\n};\n/**\n * Fixes browser bugs in the native `String.prototype.split`. Use via `XRegExp.split`.\n *\n * @memberOf String\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {!Array} Array of substrings.\n */\n\n\nfixed.split = function (separator, limit) {\n  if (!XRegExp.isRegExp(separator)) {\n    // Browsers handle nonregex split correctly, so use the faster native method\n    return String.prototype.split.apply(this, arguments);\n  }\n\n  var str = String(this);\n  var output = [];\n  var origLastIndex = separator.lastIndex;\n  var lastLastIndex = 0;\n  var lastLength; // Values for `limit`, per the spec:\n  // If undefined: pow(2,32) - 1\n  // If 0, Infinity, or NaN: 0\n  // If positive number: limit = floor(limit); if (limit >= pow(2,32)) limit -= pow(2,32);\n  // If negative number: pow(2,32) - floor(abs(limit))\n  // If other: Type-convert, then use the above rules\n  // This line fails in very strange ways for some values of `limit` in Opera 10.5-10.63, unless\n  // Opera Dragonfly is open (go figure). It works in at least Opera 9.5-10.1 and 11+\n\n  limit = (limit === undefined ? -1 : limit) >>> 0;\n  (0, _forEach[\"default\"])(XRegExp).call(XRegExp, str, separator, function (match) {\n    // This condition is not the same as `if (match[0].length)`\n    if (match.index + match[0].length > lastLastIndex) {\n      output.push((0, _slice[\"default\"])(str).call(str, lastLastIndex, match.index));\n\n      if (match.length > 1 && match.index < str.length) {\n        Array.prototype.push.apply(output, (0, _slice[\"default\"])(match).call(match, 1));\n      }\n\n      lastLength = match[0].length;\n      lastLastIndex = match.index + lastLength;\n    }\n  });\n\n  if (lastLastIndex === str.length) {\n    if (!separator.test('') || lastLength) {\n      output.push('');\n    }\n  } else {\n    output.push((0, _slice[\"default\"])(str).call(str, lastLastIndex));\n  }\n\n  separator.lastIndex = origLastIndex;\n  return output.length > limit ? (0, _slice[\"default\"])(output).call(output, 0, limit) : output;\n}; // ==--------------------------==\n// Built-in syntax/flag tokens\n// ==--------------------------==\n\n/*\n * Letter escapes that natively match literal characters: `\\a`, `\\A`, etc. These should be\n * SyntaxErrors but are allowed in web reality. XRegExp makes them errors for cross-browser\n * consistency and to reserve their syntax, but lets them be superseded by addons.\n */\n\n\nXRegExp.addToken(/\\\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|x(?![\\dA-Fa-f]{2}))/, function (match, scope) {\n  // \\B is allowed in default scope only\n  if (match[1] === 'B' && scope === defaultScope) {\n    return match[0];\n  }\n\n  throw new SyntaxError(\"Invalid escape \".concat(match[0]));\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Unicode code point escape with curly braces: `\\u{N..}`. `N..` is any one or more digit\n * hexadecimal number from 0-10FFFF, and can include leading zeros. Requires the native ES6 `u` flag\n * to support code points greater than U+FFFF. Avoids converting code points above U+FFFF to\n * surrogate pairs (which could be done without flag `u`), since that could lead to broken behavior\n * if you follow a `\\u{N..}` token that references a code point above U+FFFF with a quantifier, or\n * if you use the same in a character class.\n */\n\nXRegExp.addToken(/\\\\u{([\\dA-Fa-f]+)}/, function (match, scope, flags) {\n  var code = dec(match[1]);\n\n  if (code > 0x10FFFF) {\n    throw new SyntaxError(\"Invalid Unicode code point \".concat(match[0]));\n  }\n\n  if (code <= 0xFFFF) {\n    // Converting to \\uNNNN avoids needing to escape the literal character and keep it\n    // separate from preceding tokens\n    return \"\\\\u\".concat(pad4(hex(code)));\n  } // If `code` is between 0xFFFF and 0x10FFFF, require and defer to native handling\n\n\n  if (hasNativeU && (0, _indexOf[\"default\"])(flags).call(flags, 'u') !== -1) {\n    return match[0];\n  }\n\n  throw new SyntaxError('Cannot use Unicode code point above \\\\u{FFFF} without flag u');\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Comment pattern: `(?# )`. Inline comments are an alternative to the line comments allowed in\n * free-spacing mode (flag x).\n */\n\nXRegExp.addToken(/\\(\\?#[^)]*\\)/, getContextualTokenSeparator, {\n  leadChar: '('\n});\n/*\n * Whitespace and line comments, in free-spacing mode (aka extended mode, flag x) only.\n */\n\nXRegExp.addToken(/\\s+|#[^\\n]*\\n?/, getContextualTokenSeparator, {\n  flag: 'x'\n});\n/*\n * Dot, in dotAll mode (aka singleline mode, flag s) only.\n */\n\nif (!hasNativeS) {\n  XRegExp.addToken(/\\./, function () {\n    return '[\\\\s\\\\S]';\n  }, {\n    flag: 's',\n    leadChar: '.'\n  });\n}\n/*\n * Named backreference: `\\k<name>`. Backreference names can use RegExpIdentifierName characters\n * only. Also allows numbered backreferences as `\\k<n>`.\n */\n\n\nXRegExp.addToken(/\\\\k<([^>]+)>/, function (match) {\n  var _context6, _context7;\n\n  // Groups with the same name is an error, else would need `lastIndexOf`\n  var index = isNaN(match[1]) ? (0, _indexOf[\"default\"])(_context6 = this.captureNames).call(_context6, match[1]) + 1 : +match[1];\n  var endIndex = match.index + match[0].length;\n\n  if (!index || index > this.captureNames.length) {\n    throw new SyntaxError(\"Backreference to undefined group \".concat(match[0]));\n  } // Keep backreferences separate from subsequent literal numbers. This avoids e.g.\n  // inadvertedly changing `(?<n>)\\k<n>1` to `()\\11`.\n\n\n  return (0, _concat[\"default\"])(_context7 = \"\\\\\".concat(index)).call(_context7, endIndex === match.input.length || isNaN(match.input[endIndex]) ? '' : '(?:)');\n}, {\n  leadChar: '\\\\'\n});\n/*\n * Numbered backreference or octal, plus any following digits: `\\0`, `\\11`, etc. Octals except `\\0`\n * not followed by 0-9 and backreferences to unopened capture groups throw an error. Other matches\n * are returned unaltered. IE < 9 doesn't support backreferences above `\\99` in regex syntax.\n */\n\nXRegExp.addToken(/\\\\(\\d+)/, function (match, scope) {\n  if (!(scope === defaultScope && /^[1-9]/.test(match[1]) && +match[1] <= this.captureNames.length) && match[1] !== '0') {\n    throw new SyntaxError(\"Cannot use octal escape or backreference to undefined group \".concat(match[0]));\n  }\n\n  return match[0];\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Named capturing group; match the opening delimiter only: `(?<name>`. Capture names can use the\n * RegExpIdentifierName characters only. Names can't be integers. Supports Python-style\n * `(?P<name>` as an alternate syntax to avoid issues in some older versions of Opera which natively\n * supported the Python-style syntax. Otherwise, XRegExp might treat numbered backreferences to\n * Python-style named capture as octals.\n */\n\nXRegExp.addToken(/\\(\\?P?<((?:[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])(?:[\\$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDF70-\\uDF85\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]|\\uDB40[\\uDD00-\\uDDEF])*)>/, function (match) {\n  var _context8;\n\n  if (!XRegExp.isInstalled('namespacing') && (match[1] === 'length' || match[1] === '__proto__')) {\n    throw new SyntaxError(\"Cannot use reserved word as capture name \".concat(match[0]));\n  }\n\n  if ((0, _indexOf[\"default\"])(_context8 = this.captureNames).call(_context8, match[1]) !== -1) {\n    throw new SyntaxError(\"Cannot use same name for multiple groups \".concat(match[0]));\n  }\n\n  this.captureNames.push(match[1]);\n  this.hasNamedCapture = true;\n  return '(';\n}, {\n  leadChar: '('\n});\n/*\n * Capturing group; match the opening parenthesis only. Required for support of named capturing\n * groups. Also adds named capture only mode (flag n).\n */\n\nXRegExp.addToken(/\\((?!\\?)/, function (match, scope, flags) {\n  if ((0, _indexOf[\"default\"])(flags).call(flags, 'n') !== -1) {\n    return '(?:';\n  }\n\n  this.captureNames.push(null);\n  return '(';\n}, {\n  optionalFlags: 'n',\n  leadChar: '('\n});\nvar _default = XRegExp;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;\n},{\"@babel/runtime-corejs3/core-js-stable/array/from\":5,\"@babel/runtime-corejs3/core-js-stable/array/is-array\":6,\"@babel/runtime-corejs3/core-js-stable/instance/concat\":7,\"@babel/runtime-corejs3/core-js-stable/instance/flags\":8,\"@babel/runtime-corejs3/core-js-stable/instance/for-each\":9,\"@babel/runtime-corejs3/core-js-stable/instance/index-of\":10,\"@babel/runtime-corejs3/core-js-stable/instance/slice\":11,\"@babel/runtime-corejs3/core-js-stable/instance/sort\":12,\"@babel/runtime-corejs3/core-js-stable/object/create\":13,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/core-js-stable/parse-int\":15,\"@babel/runtime-corejs3/core-js-stable/symbol\":16,\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24,\"@babel/runtime-corejs3/helpers/slicedToArray\":27}],5:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/array/from\");\n},{\"core-js-pure/stable/array/from\":208}],6:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/array/is-array\");\n},{\"core-js-pure/stable/array/is-array\":209}],7:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/concat\");\n},{\"core-js-pure/stable/instance/concat\":212}],8:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/flags\");\n},{\"core-js-pure/stable/instance/flags\":213}],9:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/for-each\");\n},{\"core-js-pure/stable/instance/for-each\":214}],10:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/index-of\");\n},{\"core-js-pure/stable/instance/index-of\":215}],11:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/slice\");\n},{\"core-js-pure/stable/instance/slice\":216}],12:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/instance/sort\");\n},{\"core-js-pure/stable/instance/sort\":217}],13:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/object/create\");\n},{\"core-js-pure/stable/object/create\":218}],14:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/object/define-property\");\n},{\"core-js-pure/stable/object/define-property\":219}],15:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/parse-int\");\n},{\"core-js-pure/stable/parse-int\":220}],16:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/stable/symbol\");\n},{\"core-js-pure/stable/symbol\":221}],17:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/array/from\");\n},{\"core-js-pure/features/array/from\":52}],18:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/array/is-array\");\n},{\"core-js-pure/features/array/is-array\":53}],19:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/get-iterator-method\");\n},{\"core-js-pure/features/get-iterator-method\":54}],20:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/instance/slice\");\n},{\"core-js-pure/features/instance/slice\":55}],21:[function(require,module,exports){\nmodule.exports = require(\"core-js-pure/features/symbol\");\n},{\"core-js-pure/features/symbol\":56}],22:[function(require,module,exports){\nfunction _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n\n  for (var i = 0, arr2 = new Array(len); i < len; i++) {\n    arr2[i] = arr[i];\n  }\n\n  return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{}],23:[function(require,module,exports){\nvar _Array$isArray = require(\"@babel/runtime-corejs3/core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n  if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"@babel/runtime-corejs3/core-js/array/is-array\":18}],24:[function(require,module,exports){\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{}],25:[function(require,module,exports){\nvar _Symbol = require(\"@babel/runtime-corejs3/core-js/symbol\");\n\nvar _getIteratorMethod = require(\"@babel/runtime-corejs3/core-js/get-iterator-method\");\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _i = arr == null ? null : typeof _Symbol !== \"undefined\" && _getIteratorMethod(arr) || arr[\"@@iterator\"];\n\n  if (_i == null) return;\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n\n  var _s, _e;\n\n  try {\n    for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/core-js/symbol\":21}],26:[function(require,module,exports){\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{}],27:[function(require,module,exports){\nvar arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"./arrayWithHoles.js\":23,\"./iterableToArrayLimit.js\":25,\"./nonIterableRest.js\":26,\"./unsupportedIterableToArray.js\":28}],28:[function(require,module,exports){\nvar _sliceInstanceProperty = require(\"@babel/runtime-corejs3/core-js/instance/slice\");\n\nvar _Array$from = require(\"@babel/runtime-corejs3/core-js/array/from\");\n\nvar arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n  var _context;\n\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n\n  var n = _sliceInstanceProperty(_context = Object.prototype.toString.call(o)).call(_context, 8, -1);\n\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n},{\"./arrayLikeToArray.js\":22,\"@babel/runtime-corejs3/core-js/array/from\":17,\"@babel/runtime-corejs3/core-js/instance/slice\":20}],29:[function(require,module,exports){\nvar parent = require('../../stable/array/from');\n\nmodule.exports = parent;\n\n},{\"../../stable/array/from\":208}],30:[function(require,module,exports){\nvar parent = require('../../stable/array/is-array');\n\nmodule.exports = parent;\n\n},{\"../../stable/array/is-array\":209}],31:[function(require,module,exports){\nvar parent = require('../stable/get-iterator-method');\n\nmodule.exports = parent;\n\n},{\"../stable/get-iterator-method\":211}],32:[function(require,module,exports){\nvar parent = require('../../stable/instance/slice');\n\nmodule.exports = parent;\n\n},{\"../../stable/instance/slice\":216}],33:[function(require,module,exports){\nvar parent = require('../../stable/symbol');\n\nmodule.exports = parent;\n\n},{\"../../stable/symbol\":221}],34:[function(require,module,exports){\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.array.from');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.from;\n\n},{\"../../internals/path\":142,\"../../modules/es.array.from\":170,\"../../modules/es.string.iterator\":184}],35:[function(require,module,exports){\nrequire('../../modules/es.array.is-array');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Array.isArray;\n\n},{\"../../internals/path\":142,\"../../modules/es.array.is-array\":172}],36:[function(require,module,exports){\nrequire('../../../modules/es.array.concat');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').concat;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.concat\":168}],37:[function(require,module,exports){\nrequire('../../../modules/es.array.for-each');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').forEach;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.for-each\":169}],38:[function(require,module,exports){\nrequire('../../../modules/es.array.index-of');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').indexOf;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.index-of\":171}],39:[function(require,module,exports){\nrequire('../../../modules/es.array.slice');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').slice;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.slice\":174}],40:[function(require,module,exports){\nrequire('../../../modules/es.array.sort');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').sort;\n\n},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.sort\":175}],41:[function(require,module,exports){\nrequire('../modules/es.array.iterator');\nrequire('../modules/es.string.iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nmodule.exports = getIteratorMethod;\n\n},{\"../internals/get-iterator-method\":101,\"../modules/es.array.iterator\":173,\"../modules/es.string.iterator\":184}],42:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/concat');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.concat;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.concat) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/concat\":36}],43:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar flags = require('../regexp/flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (it) {\n  return (it === RegExpPrototype || isPrototypeOf(RegExpPrototype, it)) ? flags(it) : it.flags;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../regexp/flags\":50}],44:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/index-of');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.indexOf;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.indexOf) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/index-of\":38}],45:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/slice');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.slice;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.slice) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/slice\":39}],46:[function(require,module,exports){\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/sort');\n\nvar ArrayPrototype = Array.prototype;\n\nmodule.exports = function (it) {\n  var own = it.sort;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.sort) ? method : own;\n};\n\n},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/sort\":40}],47:[function(require,module,exports){\nrequire('../../modules/es.object.create');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nmodule.exports = function create(P, D) {\n  return Object.create(P, D);\n};\n\n},{\"../../internals/path\":142,\"../../modules/es.object.create\":178}],48:[function(require,module,exports){\nrequire('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n  return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n\n},{\"../../internals/path\":142,\"../../modules/es.object.define-property\":179}],49:[function(require,module,exports){\nrequire('../modules/es.parse-int');\nvar path = require('../internals/path');\n\nmodule.exports = path.parseInt;\n\n},{\"../internals/path\":142,\"../modules/es.parse-int\":181}],50:[function(require,module,exports){\nrequire('../../modules/es.regexp.flags');\nvar uncurryThis = require('../../internals/function-uncurry-this');\nvar regExpFlags = require('../../internals/regexp-flags');\n\nmodule.exports = uncurryThis(regExpFlags);\n\n},{\"../../internals/function-uncurry-this\":99,\"../../internals/regexp-flags\":144,\"../../modules/es.regexp.flags\":183}],51:[function(require,module,exports){\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n\n},{\"../../internals/path\":142,\"../../modules/es.array.concat\":168,\"../../modules/es.json.to-string-tag\":176,\"../../modules/es.math.to-string-tag\":177,\"../../modules/es.object.to-string\":180,\"../../modules/es.reflect.to-string-tag\":182,\"../../modules/es.symbol\":190,\"../../modules/es.symbol.async-iterator\":185,\"../../modules/es.symbol.description\":186,\"../../modules/es.symbol.has-instance\":187,\"../../modules/es.symbol.is-concat-spreadable\":188,\"../../modules/es.symbol.iterator\":189,\"../../modules/es.symbol.match\":192,\"../../modules/es.symbol.match-all\":191,\"../../modules/es.symbol.replace\":193,\"../../modules/es.symbol.search\":194,\"../../modules/es.symbol.species\":195,\"../../modules/es.symbol.split\":196,\"../../modules/es.symbol.to-primitive\":197,\"../../modules/es.symbol.to-string-tag\":198,\"../../modules/es.symbol.unscopables\":199}],52:[function(require,module,exports){\nvar parent = require('../../actual/array/from');\n\nmodule.exports = parent;\n\n},{\"../../actual/array/from\":29}],53:[function(require,module,exports){\nvar parent = require('../../actual/array/is-array');\n\nmodule.exports = parent;\n\n},{\"../../actual/array/is-array\":30}],54:[function(require,module,exports){\nvar parent = require('../actual/get-iterator-method');\n\nmodule.exports = parent;\n\n},{\"../actual/get-iterator-method\":31}],55:[function(require,module,exports){\nvar parent = require('../../actual/instance/slice');\n\nmodule.exports = parent;\n\n},{\"../../actual/instance/slice\":32}],56:[function(require,module,exports){\nvar parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.pattern-match');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n\n},{\"../../actual/symbol\":33,\"../../modules/esnext.symbol.async-dispose\":200,\"../../modules/esnext.symbol.dispose\":201,\"../../modules/esnext.symbol.matcher\":202,\"../../modules/esnext.symbol.metadata\":203,\"../../modules/esnext.symbol.observable\":204,\"../../modules/esnext.symbol.pattern-match\":205,\"../../modules/esnext.symbol.replace-all\":206}],57:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw TypeError(tryToString(argument) + ' is not a function');\n};\n\n},{\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/try-to-string\":162}],58:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n\n},{\"../internals/global\":104,\"../internals/is-callable\":114}],59:[function(require,module,exports){\nmodule.exports = function () { /* empty */ };\n\n},{}],60:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw TypeError(String(argument) + ' is not an object');\n};\n\n},{\"../internals/global\":104,\"../internals/is-object\":117}],61:[function(require,module,exports){\n'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n\n},{\"../internals/array-iteration\":64,\"../internals/array-method-is-strict\":66}],62:[function(require,module,exports){\n'use strict';\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar Array = global.Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n  var O = toObject(arrayLike);\n  var IS_CONSTRUCTOR = isConstructor(this);\n  var argumentsLength = arguments.length;\n  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n  var mapping = mapfn !== undefined;\n  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n  var iteratorMethod = getIteratorMethod(O);\n  var index = 0;\n  var length, result, step, iterator, next, value;\n  // if the target is not iterable or it's an array with the default iterator - use a simple case\n  if (iteratorMethod && !(this == Array && isArrayIteratorMethod(iteratorMethod))) {\n    iterator = getIterator(O, iteratorMethod);\n    next = iterator.next;\n    result = IS_CONSTRUCTOR ? new this() : [];\n    for (;!(step = call(next, iterator)).done; index++) {\n      value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n      createProperty(result, index, value);\n    }\n  } else {\n    length = lengthOfArrayLike(O);\n    result = IS_CONSTRUCTOR ? new this(length) : Array(length);\n    for (;length > index; index++) {\n      value = mapping ? mapfn(O[index], index) : O[index];\n      createProperty(result, index, value);\n    }\n  }\n  result.length = index;\n  return result;\n};\n\n},{\"../internals/call-with-safe-iteration-closing\":72,\"../internals/create-property\":80,\"../internals/function-bind-context\":96,\"../internals/function-call\":97,\"../internals/get-iterator\":102,\"../internals/get-iterator-method\":101,\"../internals/global\":104,\"../internals/is-array-iterator-method\":112,\"../internals/is-constructor\":115,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157}],63:[function(require,module,exports){\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n\n},{\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153,\"../internals/to-indexed-object\":154}],64:[function(require,module,exports){\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n\n},{\"../internals/array-species-create\":71,\"../internals/function-bind-context\":96,\"../internals/function-uncurry-this\":99,\"../internals/indexed-object\":109,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157}],65:[function(require,module,exports){\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n\n},{\"../internals/engine-v8-version\":89,\"../internals/fails\":94,\"../internals/well-known-symbol\":166}],66:[function(require,module,exports){\n'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n    method.call(null, argument || function () { throw 1; }, 1);\n  });\n};\n\n},{\"../internals/fails\":94}],67:[function(require,module,exports){\nvar global = require('../internals/global');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar Array = global.Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n\n},{\"../internals/create-property\":80,\"../internals/global\":104,\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153}],68:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n\n},{\"../internals/function-uncurry-this\":99}],69:[function(require,module,exports){\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n  var length = array.length;\n  var middle = floor(length / 2);\n  return length < 8 ? insertionSort(array, comparefn) : merge(\n    array,\n    mergeSort(arraySlice(array, 0, middle), comparefn),\n    mergeSort(arraySlice(array, middle), comparefn),\n    comparefn\n  );\n};\n\nvar insertionSort = function (array, comparefn) {\n  var length = array.length;\n  var i = 1;\n  var element, j;\n\n  while (i < length) {\n    j = i;\n    element = array[i];\n    while (j && comparefn(array[j - 1], element) > 0) {\n      array[j] = array[--j];\n    }\n    if (j !== i++) array[j] = element;\n  } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n  var llength = left.length;\n  var rlength = right.length;\n  var lindex = 0;\n  var rindex = 0;\n\n  while (lindex < llength || rindex < rlength) {\n    array[lindex + rindex] = (lindex < llength && rindex < rlength)\n      ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n      : lindex < llength ? left[lindex++] : right[rindex++];\n  } return array;\n};\n\nmodule.exports = mergeSort;\n\n},{\"../internals/array-slice-simple\":67}],70:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? Array : C;\n};\n\n},{\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-constructor\":115,\"../internals/is-object\":117,\"../internals/well-known-symbol\":166}],71:[function(require,module,exports){\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n\n},{\"../internals/array-species-constructor\":70}],72:[function(require,module,exports){\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n\n},{\"../internals/an-object\":60,\"../internals/iterator-close\":120}],73:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n\n},{\"../internals/well-known-symbol\":166}],74:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n\n},{\"../internals/function-uncurry-this\":99}],75:[function(require,module,exports){\nvar global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n\n},{\"../internals/classof-raw\":74,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/to-string-tag-support\":160,\"../internals/well-known-symbol\":166}],76:[function(require,module,exports){\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n},{\"../internals/fails\":94}],77:[function(require,module,exports){\n'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/iterators\":122,\"../internals/iterators-core\":121,\"../internals/object-create\":127,\"../internals/set-to-string-tag\":147}],78:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/descriptors\":83,\"../internals/object-define-property\":129}],79:[function(require,module,exports){\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n},{}],80:[function(require,module,exports){\n'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/object-define-property\":129,\"../internals/to-property-key\":159}],81:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          redefine(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        redefine(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    redefine(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n\n},{\"../internals/create-iterator-constructor\":77,\"../internals/create-non-enumerable-property\":78,\"../internals/export\":93,\"../internals/function-call\":97,\"../internals/function-name\":98,\"../internals/is-callable\":114,\"../internals/is-pure\":118,\"../internals/iterators\":122,\"../internals/iterators-core\":121,\"../internals/object-get-prototype-of\":134,\"../internals/object-set-prototype-of\":139,\"../internals/redefine\":143,\"../internals/set-to-string-tag\":147,\"../internals/well-known-symbol\":166}],82:[function(require,module,exports){\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n  var Symbol = path.Symbol || (path.Symbol = {});\n  if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n    value: wrappedWellKnownSymbolModule.f(NAME)\n  });\n};\n\n},{\"../internals/has-own-property\":105,\"../internals/object-define-property\":129,\"../internals/path\":142,\"../internals/well-known-symbol-wrapped\":165}],83:[function(require,module,exports){\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\n},{\"../internals/fails\":94}],84:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n\n},{\"../internals/global\":104,\"../internals/is-object\":117}],85:[function(require,module,exports){\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n\n},{}],86:[function(require,module,exports){\nvar userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n\n},{\"../internals/engine-user-agent\":88}],87:[function(require,module,exports){\nvar UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n\n},{\"../internals/engine-user-agent\":88}],88:[function(require,module,exports){\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n\n},{\"../internals/get-built-in\":100}],89:[function(require,module,exports){\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n\n},{\"../internals/engine-user-agent\":88,\"../internals/global\":104}],90:[function(require,module,exports){\nvar userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n\n},{\"../internals/engine-user-agent\":88}],91:[function(require,module,exports){\nvar path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n  return path[CONSTRUCTOR + 'Prototype'];\n};\n\n},{\"../internals/path\":142}],92:[function(require,module,exports){\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n\n},{}],93:[function(require,module,exports){\n'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n  var Wrapper = function (a, b, c) {\n    if (this instanceof Wrapper) {\n      switch (arguments.length) {\n        case 0: return new NativeConstructor();\n        case 1: return new NativeConstructor(a);\n        case 2: return new NativeConstructor(a, b);\n      } return new NativeConstructor(a, b, c);\n    } return apply(NativeConstructor, this, arguments);\n  };\n  Wrapper.prototype = NativeConstructor.prototype;\n  return Wrapper;\n};\n\n/*\n  options.target      - name of the target object\n  options.global      - target is the global object\n  options.stat        - export as static methods of target\n  options.proto       - export as prototype methods of target\n  options.real        - real prototype method for the `pure` version\n  options.forced      - export even if the native feature is available\n  options.bind        - bind methods to the target, required for the `pure` version\n  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe      - use the simple assignment of property instead of delete + defineProperty\n  options.sham        - add a flag to not completely full polyfills\n  options.enumerable  - export as enumerable property\n  options.noTargetGet - prevent calling a getter on target\n  options.name        - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var PROTO = options.proto;\n\n  var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n  var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n  var targetPrototype = target.prototype;\n\n  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n  var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n  for (key in source) {\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contains in native\n    USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n    targetProperty = target[key];\n\n    if (USE_NATIVE) if (options.noTargetGet) {\n      descriptor = getOwnPropertyDescriptor(nativeSource, key);\n      nativeProperty = descriptor && descriptor.value;\n    } else nativeProperty = nativeSource[key];\n\n    // export native or implementation\n    sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n    if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n    // bind timers to global for call from export context\n    if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n    // wrap global constructors for prevent changs in this version\n    else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n    // make static versions for prototype methods\n    else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n    // default case\n    else resultProperty = sourceProperty;\n\n    // add a flag to not completely full polyfills\n    if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(resultProperty, 'sham', true);\n    }\n\n    createNonEnumerableProperty(target, key, resultProperty);\n\n    if (PROTO) {\n      VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n      if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n        createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n      }\n      // export virtual prototype methods\n      createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n      // export real prototype methods\n      if (options.real && targetPrototype && !targetPrototype[key]) {\n        createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n      }\n    }\n  }\n};\n\n},{\"../internals/create-non-enumerable-property\":78,\"../internals/function-apply\":95,\"../internals/function-bind-context\":96,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/is-callable\":114,\"../internals/is-forced\":116,\"../internals/object-get-own-property-descriptor\":130,\"../internals/path\":142}],94:[function(require,module,exports){\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n\n},{}],95:[function(require,module,exports){\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n\n},{}],96:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n},{\"../internals/a-callable\":57,\"../internals/function-uncurry-this\":99}],97:[function(require,module,exports){\nvar call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n\n},{}],98:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n\n},{\"../internals/descriptors\":83,\"../internals/has-own-property\":105}],99:[function(require,module,exports){\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n  return fn && callBind(call, fn);\n} : function (fn) {\n  return fn && function () {\n    return call.apply(fn, arguments);\n  };\n};\n\n},{}],100:[function(require,module,exports){\nvar path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n  return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n\n},{\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/path\":142}],101:[function(require,module,exports){\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (it != undefined) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n\n},{\"../internals/classof\":75,\"../internals/get-method\":103,\"../internals/iterators\":122,\"../internals/well-known-symbol\":166}],102:[function(require,module,exports){\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw TypeError(tryToString(argument) + ' is not iterable');\n};\n\n},{\"../internals/a-callable\":57,\"../internals/an-object\":60,\"../internals/function-call\":97,\"../internals/get-iterator-method\":101,\"../internals/global\":104,\"../internals/try-to-string\":162}],103:[function(require,module,exports){\nvar aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return func == null ? undefined : aCallable(func);\n};\n\n},{\"../internals/a-callable\":57}],104:[function(require,module,exports){\n(function (global){(function (){\nvar check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n\n}).call(this)}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],105:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/to-object\":157}],106:[function(require,module,exports){\nmodule.exports = {};\n\n},{}],107:[function(require,module,exports){\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n\n},{\"../internals/get-built-in\":100}],108:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n\n},{\"../internals/descriptors\":83,\"../internals/document-create-element\":84,\"../internals/fails\":94}],109:[function(require,module,exports){\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n\n},{\"../internals/classof-raw\":74,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/global\":104}],110:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/is-callable\":114,\"../internals/shared-store\":149}],111:[function(require,module,exports){\nvar NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  var wmget = uncurryThis(store.get);\n  var wmhas = uncurryThis(store.has);\n  var wmset = uncurryThis(store.set);\n  set = function (it, metadata) {\n    if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    wmset(store, it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return wmget(store, it) || {};\n  };\n  has = function (it) {\n    return wmhas(store, it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n\n},{\"../internals/create-non-enumerable-property\":78,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/is-object\":117,\"../internals/native-weak-map\":125,\"../internals/shared-key\":148,\"../internals/shared-store\":149}],112:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n},{\"../internals/iterators\":122,\"../internals/well-known-symbol\":166}],113:[function(require,module,exports){\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n\n},{\"../internals/classof-raw\":74}],114:[function(require,module,exports){\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n  return typeof argument == 'function';\n};\n\n},{}],115:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n\n},{\"../internals/classof\":75,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/get-built-in\":100,\"../internals/inspect-source\":110,\"../internals/is-callable\":114}],116:[function(require,module,exports){\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n},{\"../internals/fails\":94,\"../internals/is-callable\":114}],117:[function(require,module,exports){\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\n},{\"../internals/is-callable\":114}],118:[function(require,module,exports){\nmodule.exports = true;\n\n},{}],119:[function(require,module,exports){\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n\n},{\"../internals/get-built-in\":100,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/object-is-prototype-of\":135,\"../internals/use-symbol-as-uid\":164}],120:[function(require,module,exports){\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n\n},{\"../internals/an-object\":60,\"../internals/function-call\":97,\"../internals/get-method\":103}],121:[function(require,module,exports){\n'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  redefine(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n},{\"../internals/fails\":94,\"../internals/is-callable\":114,\"../internals/is-pure\":118,\"../internals/object-create\":127,\"../internals/object-get-prototype-of\":134,\"../internals/redefine\":143,\"../internals/well-known-symbol\":166}],122:[function(require,module,exports){\narguments[4][106][0].apply(exports,arguments)\n},{\"dup\":106}],123:[function(require,module,exports){\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n\n},{\"../internals/to-length\":156}],124:[function(require,module,exports){\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n\n},{\"../internals/engine-v8-version\":89,\"../internals/fails\":94}],125:[function(require,module,exports){\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\n},{\"../internals/global\":104,\"../internals/inspect-source\":110,\"../internals/is-callable\":114}],126:[function(require,module,exports){\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n  // MS Edge 18- broken with boxed symbols\n  || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n  var S = trim(toString(string));\n  return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n\n},{\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/string-trim\":152,\"../internals/to-string\":161,\"../internals/whitespaces\":167}],127:[function(require,module,exports){\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n},{\"../internals/an-object\":60,\"../internals/document-create-element\":84,\"../internals/enum-bug-keys\":92,\"../internals/hidden-keys\":106,\"../internals/html\":107,\"../internals/object-define-properties\":128,\"../internals/shared-key\":148}],128:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n\n},{\"../internals/an-object\":60,\"../internals/descriptors\":83,\"../internals/object-define-property\":129,\"../internals/object-keys\":137,\"../internals/to-indexed-object\":154}],129:[function(require,module,exports){\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n},{\"../internals/an-object\":60,\"../internals/descriptors\":83,\"../internals/global\":104,\"../internals/ie8-dom-define\":108,\"../internals/to-property-key\":159}],130:[function(require,module,exports){\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n\n},{\"../internals/create-property-descriptor\":79,\"../internals/descriptors\":83,\"../internals/function-call\":97,\"../internals/has-own-property\":105,\"../internals/ie8-dom-define\":108,\"../internals/object-property-is-enumerable\":138,\"../internals/to-indexed-object\":154,\"../internals/to-property-key\":159}],131:[function(require,module,exports){\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n\n},{\"../internals/array-slice-simple\":67,\"../internals/classof-raw\":74,\"../internals/object-get-own-property-names\":132,\"../internals/to-indexed-object\":154}],132:[function(require,module,exports){\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n\n},{\"../internals/enum-bug-keys\":92,\"../internals/object-keys-internal\":136}],133:[function(require,module,exports){\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n\n},{}],134:[function(require,module,exports){\nvar global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof Object ? ObjectPrototype : null;\n};\n\n},{\"../internals/correct-prototype-getter\":76,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/is-callable\":114,\"../internals/shared-key\":148,\"../internals/to-object\":157}],135:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n\n},{\"../internals/function-uncurry-this\":99}],136:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n\n},{\"../internals/array-includes\":63,\"../internals/function-uncurry-this\":99,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/to-indexed-object\":154}],137:[function(require,module,exports){\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n\n},{\"../internals/enum-bug-keys\":92,\"../internals/object-keys-internal\":136}],138:[function(require,module,exports){\n'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\n},{}],139:[function(require,module,exports){\n/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n\n},{\"../internals/a-possible-prototype\":58,\"../internals/an-object\":60,\"../internals/function-uncurry-this\":99}],140:[function(require,module,exports){\n'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n\n},{\"../internals/classof\":75,\"../internals/to-string-tag-support\":160}],141:[function(require,module,exports){\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n},{\"../internals/function-call\":97,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/is-object\":117}],142:[function(require,module,exports){\narguments[4][106][0].apply(exports,arguments)\n},{\"dup\":106}],143:[function(require,module,exports){\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n  if (options && options.enumerable) target[key] = value;\n  else createNonEnumerableProperty(target, key, value);\n};\n\n},{\"../internals/create-non-enumerable-property\":78}],144:[function(require,module,exports){\n'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.sticky) result += 'y';\n  return result;\n};\n\n},{\"../internals/an-object\":60}],145:[function(require,module,exports){\nvar global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n  return it;\n};\n\n},{\"../internals/global\":104}],146:[function(require,module,exports){\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n\n},{\"../internals/global\":104}],147:[function(require,module,exports){\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n  if (it) {\n    var target = STATIC ? it : it.prototype;\n    if (!hasOwn(target, TO_STRING_TAG)) {\n      defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n    }\n    if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n      createNonEnumerableProperty(target, 'toString', toString);\n    }\n  }\n};\n\n},{\"../internals/create-non-enumerable-property\":78,\"../internals/has-own-property\":105,\"../internals/object-define-property\":129,\"../internals/object-to-string\":140,\"../internals/to-string-tag-support\":160,\"../internals/well-known-symbol\":166}],148:[function(require,module,exports){\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n\n},{\"../internals/shared\":150,\"../internals/uid\":163}],149:[function(require,module,exports){\nvar global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n\n},{\"../internals/global\":104,\"../internals/set-global\":146}],150:[function(require,module,exports){\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.20.0',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n\n},{\"../internals/is-pure\":118,\"../internals/shared-store\":149}],151:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/require-object-coercible\":145,\"../internals/to-integer-or-infinity\":155,\"../internals/to-string\":161}],152:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n\n},{\"../internals/function-uncurry-this\":99,\"../internals/require-object-coercible\":145,\"../internals/to-string\":161,\"../internals/whitespaces\":167}],153:[function(require,module,exports){\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n},{\"../internals/to-integer-or-infinity\":155}],154:[function(require,module,exports){\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n\n},{\"../internals/indexed-object\":109,\"../internals/require-object-coercible\":145}],155:[function(require,module,exports){\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- safe\n  return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n\n},{}],156:[function(require,module,exports){\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n},{\"../internals/to-integer-or-infinity\":155}],157:[function(require,module,exports){\nvar global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return Object(requireObjectCoercible(argument));\n};\n\n},{\"../internals/global\":104,\"../internals/require-object-coercible\":145}],158:[function(require,module,exports){\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n\n},{\"../internals/function-call\":97,\"../internals/get-method\":103,\"../internals/global\":104,\"../internals/is-object\":117,\"../internals/is-symbol\":119,\"../internals/ordinary-to-primitive\":141,\"../internals/well-known-symbol\":166}],159:[function(require,module,exports){\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n\n},{\"../internals/is-symbol\":119,\"../internals/to-primitive\":158}],160:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n\n},{\"../internals/well-known-symbol\":166}],161:[function(require,module,exports){\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return String(argument);\n};\n\n},{\"../internals/classof\":75,\"../internals/global\":104}],162:[function(require,module,exports){\nvar global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n  try {\n    return String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n\n},{\"../internals/global\":104}],163:[function(require,module,exports){\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n\n},{\"../internals/function-uncurry-this\":99}],164:[function(require,module,exports){\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n\n},{\"../internals/native-symbol\":124}],165:[function(require,module,exports){\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n\n},{\"../internals/well-known-symbol\":166}],166:[function(require,module,exports){\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n    var description = 'Symbol.' + name;\n    if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n      WellKnownSymbolsStore[name] = Symbol[name];\n    } else if (USE_SYMBOL_AS_UID && symbolFor) {\n      WellKnownSymbolsStore[name] = symbolFor(description);\n    } else {\n      WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n    }\n  } return WellKnownSymbolsStore[name];\n};\n\n},{\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/native-symbol\":124,\"../internals/shared\":150,\"../internals/uid\":163,\"../internals/use-symbol-as-uid\":164}],167:[function(require,module,exports){\n// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n},{}],168:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\nvar TypeError = global.TypeError;\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n\n},{\"../internals/array-method-has-species-support\":65,\"../internals/array-species-create\":71,\"../internals/create-property\":80,\"../internals/engine-v8-version\":89,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-object\":117,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157,\"../internals/well-known-symbol\":166}],169:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n  forEach: forEach\n});\n\n},{\"../internals/array-for-each\":61,\"../internals/export\":93}],170:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n  // eslint-disable-next-line es/no-array-from -- required for testing\n  Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n  from: from\n});\n\n},{\"../internals/array-from\":62,\"../internals/check-correctness-of-iteration\":73,\"../internals/export\":93}],171:[function(require,module,exports){\n'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? un$IndexOf(this, searchElement, fromIndex) || 0\n      : $IndexOf(this, searchElement, fromIndex);\n  }\n});\n\n},{\"../internals/array-includes\":63,\"../internals/array-method-is-strict\":66,\"../internals/export\":93,\"../internals/function-uncurry-this\":99}],172:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n  isArray: isArray\n});\n\n},{\"../internals/export\":93,\"../internals/is-array\":113}],173:[function(require,module,exports){\n'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return { value: undefined, done: true };\n  }\n  if (kind == 'keys') return { value: index, done: false };\n  if (kind == 'values') return { value: target[index], done: false };\n  return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n\n},{\"../internals/add-to-unscopables\":59,\"../internals/define-iterator\":81,\"../internals/descriptors\":83,\"../internals/internal-state\":111,\"../internals/is-pure\":118,\"../internals/iterators\":122,\"../internals/object-define-property\":129,\"../internals/to-indexed-object\":154}],174:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  slice: function slice(start, end) {\n    var O = toIndexedObject(this);\n    var length = lengthOfArrayLike(O);\n    var k = toAbsoluteIndex(start, length);\n    var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n    var Constructor, result, n;\n    if (isArray(O)) {\n      Constructor = O.constructor;\n      // cross-realm fallback\n      if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n        Constructor = undefined;\n      } else if (isObject(Constructor)) {\n        Constructor = Constructor[SPECIES];\n        if (Constructor === null) Constructor = undefined;\n      }\n      if (Constructor === Array || Constructor === undefined) {\n        return un$Slice(O, k, fin);\n      }\n    }\n    result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n    result.length = n;\n    return result;\n  }\n});\n\n},{\"../internals/array-method-has-species-support\":65,\"../internals/array-slice\":68,\"../internals/create-property\":80,\"../internals/export\":93,\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-constructor\":115,\"../internals/is-object\":117,\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153,\"../internals/to-indexed-object\":154,\"../internals/well-known-symbol\":166}],175:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n  test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n  test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n  // feature detection can be too slow, so check engines versions\n  if (V8) return V8 < 70;\n  if (FF && FF > 3) return;\n  if (IE_OR_EDGE) return true;\n  if (WEBKIT) return WEBKIT < 603;\n\n  var result = '';\n  var code, chr, value, index;\n\n  // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n  for (code = 65; code < 76; code++) {\n    chr = String.fromCharCode(code);\n\n    switch (code) {\n      case 66: case 69: case 70: case 72: value = 3; break;\n      case 68: case 71: value = 4; break;\n      default: value = 2;\n    }\n\n    for (index = 0; index < 47; index++) {\n      test.push({ k: chr + index, v: value });\n    }\n  }\n\n  test.sort(function (a, b) { return b.v - a.v; });\n\n  for (index = 0; index < test.length; index++) {\n    chr = test[index].k.charAt(0);\n    if (result.charAt(result.length - 1) !== chr) result += chr;\n  }\n\n  return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n  return function (x, y) {\n    if (y === undefined) return -1;\n    if (x === undefined) return 1;\n    if (comparefn !== undefined) return +comparefn(x, y) || 0;\n    return toString(x) > toString(y) ? 1 : -1;\n  };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  sort: function sort(comparefn) {\n    if (comparefn !== undefined) aCallable(comparefn);\n\n    var array = toObject(this);\n\n    if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n    var items = [];\n    var arrayLength = lengthOfArrayLike(array);\n    var itemsLength, index;\n\n    for (index = 0; index < arrayLength; index++) {\n      if (index in array) push(items, array[index]);\n    }\n\n    internalSort(items, getSortCompare(comparefn));\n\n    itemsLength = items.length;\n    index = 0;\n\n    while (index < itemsLength) array[index] = items[index++];\n    while (index < arrayLength) delete array[index++];\n\n    return array;\n  }\n});\n\n},{\"../internals/a-callable\":57,\"../internals/array-method-is-strict\":66,\"../internals/array-sort\":69,\"../internals/engine-ff-version\":86,\"../internals/engine-is-ie-or-edge\":87,\"../internals/engine-v8-version\":89,\"../internals/engine-webkit-version\":90,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157,\"../internals/to-string\":161}],176:[function(require,module,exports){\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n\n},{\"../internals/global\":104,\"../internals/set-to-string-tag\":147}],177:[function(require,module,exports){\n// empty\n\n},{}],178:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n  create: create\n});\n\n},{\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/object-create\":127}],179:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar objectDefinePropertyModile = require('../internals/object-define-property');\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {\n  defineProperty: objectDefinePropertyModile.f\n});\n\n},{\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/object-define-property\":129}],180:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],181:[function(require,module,exports){\nvar $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n  parseInt: $parseInt\n});\n\n},{\"../internals/export\":93,\"../internals/number-parse-int\":126}],182:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],183:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],184:[function(require,module,exports){\n'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return { value: undefined, done: true };\n  point = charAt(string, index);\n  state.index += point.length;\n  return { value: point, done: false };\n});\n\n},{\"../internals/define-iterator\":81,\"../internals/internal-state\":111,\"../internals/string-multibyte\":151,\"../internals/to-string\":161}],185:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n\n},{\"../internals/define-well-known-symbol\":82}],186:[function(require,module,exports){\narguments[4][177][0].apply(exports,arguments)\n},{\"dup\":177}],187:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n\n},{\"../internals/define-well-known-symbol\":82}],188:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n\n},{\"../internals/define-well-known-symbol\":82}],189:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n\n},{\"../internals/define-well-known-symbol\":82}],190:[function(require,module,exports){\n'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar arraySlice = require('../internals/array-slice');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n  return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n    get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n  })).a != 7;\n}) ? function (O, P, Attributes) {\n  var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n  if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n  nativeDefineProperty(O, P, Attributes);\n  if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n    nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n  }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n  var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n  setInternalState(symbol, {\n    type: SYMBOL,\n    tag: tag,\n    description: description\n  });\n  if (!DESCRIPTORS) symbol.description = description;\n  return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n  if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n  anObject(O);\n  var key = toPropertyKey(P);\n  anObject(Attributes);\n  if (hasOwn(AllSymbols, key)) {\n    if (!Attributes.enumerable) {\n      if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n      O[HIDDEN][key] = true;\n    } else {\n      if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n      Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n    } return setSymbolDescriptor(O, key, Attributes);\n  } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n  anObject(O);\n  var properties = toIndexedObject(Properties);\n  var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n  $forEach(keys, function (key) {\n    if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n  });\n  return O;\n};\n\nvar $create = function create(O, Properties) {\n  return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n  var P = toPropertyKey(V);\n  var enumerable = call(nativePropertyIsEnumerable, this, P);\n  if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n  return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n    ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n  var it = toIndexedObject(O);\n  var key = toPropertyKey(P);\n  if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n  var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n  if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n    descriptor.enumerable = true;\n  }\n  return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n  var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n  });\n  return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n  var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n  var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n  var result = [];\n  $forEach(names, function (key) {\n    if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n      push(result, AllSymbols[key]);\n    }\n  });\n  return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n  $Symbol = function Symbol() {\n    if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n    var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n    var tag = uid(description);\n    var setter = function (value) {\n      if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n      if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n      setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n    };\n    if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n    return wrap(tag, description);\n  };\n\n  SymbolPrototype = $Symbol[PROTOTYPE];\n\n  redefine(SymbolPrototype, 'toString', function toString() {\n    return getInternalState(this).tag;\n  });\n\n  redefine($Symbol, 'withoutSetter', function (description) {\n    return wrap(uid(description), description);\n  });\n\n  propertyIsEnumerableModule.f = $propertyIsEnumerable;\n  definePropertyModule.f = $defineProperty;\n  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n  wrappedWellKnownSymbolModule.f = function (name) {\n    return wrap(wellKnownSymbol(name), name);\n  };\n\n  if (DESCRIPTORS) {\n    // https://github.com/tc39/proposal-Symbol-description\n    nativeDefineProperty(SymbolPrototype, 'description', {\n      configurable: true,\n      get: function description() {\n        return getInternalState(this).description;\n      }\n    });\n    if (!IS_PURE) {\n      redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n    }\n  }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n  Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n  defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Symbol.for` method\n  // https://tc39.es/ecma262/#sec-symbol.for\n  'for': function (key) {\n    var string = $toString(key);\n    if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n    var symbol = $Symbol(string);\n    StringToSymbolRegistry[string] = symbol;\n    SymbolToStringRegistry[symbol] = string;\n    return symbol;\n  },\n  // `Symbol.keyFor` method\n  // https://tc39.es/ecma262/#sec-symbol.keyfor\n  keyFor: function keyFor(sym) {\n    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n    if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n  },\n  useSetter: function () { USE_SETTER = true; },\n  useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n  // `Object.create` method\n  // https://tc39.es/ecma262/#sec-object.create\n  create: $create,\n  // `Object.defineProperty` method\n  // https://tc39.es/ecma262/#sec-object.defineproperty\n  defineProperty: $defineProperty,\n  // `Object.defineProperties` method\n  // https://tc39.es/ecma262/#sec-object.defineproperties\n  defineProperties: $defineProperties,\n  // `Object.getOwnPropertyDescriptor` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n  getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n  // `Object.getOwnPropertyNames` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertynames\n  getOwnPropertyNames: $getOwnPropertyNames,\n  // `Object.getOwnPropertySymbols` method\n  // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n  getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n  getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n    return getOwnPropertySymbolsModule.f(toObject(it));\n  }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n  var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n    var symbol = $Symbol();\n    // MS Edge converts symbol values to JSON as {}\n    return $stringify([symbol]) != '[null]'\n      // WebKit converts symbol values to JSON as null\n      || $stringify({ a: symbol }) != '{}'\n      // V8 throws on boxed symbols\n      || $stringify(Object(symbol)) != '{}';\n  });\n\n  $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n    // eslint-disable-next-line no-unused-vars -- required for `.length`\n    stringify: function stringify(it, replacer, space) {\n      var args = arraySlice(arguments);\n      var $replacer = replacer;\n      if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n      if (!isArray(replacer)) replacer = function (key, value) {\n        if (isCallable($replacer)) value = call($replacer, this, key, value);\n        if (!isSymbol(value)) return value;\n      };\n      args[1] = replacer;\n      return apply($stringify, null, args);\n    }\n  });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!SymbolPrototype[TO_PRIMITIVE]) {\n  var valueOf = SymbolPrototype.valueOf;\n  // eslint-disable-next-line no-unused-vars -- required for .length\n  redefine(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n    // TODO: improve hint logic\n    return call(valueOf, this);\n  });\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n\n},{\"../internals/an-object\":60,\"../internals/array-iteration\":64,\"../internals/array-slice\":68,\"../internals/create-property-descriptor\":79,\"../internals/define-well-known-symbol\":82,\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/function-apply\":95,\"../internals/function-call\":97,\"../internals/function-uncurry-this\":99,\"../internals/get-built-in\":100,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/internal-state\":111,\"../internals/is-array\":113,\"../internals/is-callable\":114,\"../internals/is-object\":117,\"../internals/is-pure\":118,\"../internals/is-symbol\":119,\"../internals/native-symbol\":124,\"../internals/object-create\":127,\"../internals/object-define-property\":129,\"../internals/object-get-own-property-descriptor\":130,\"../internals/object-get-own-property-names\":132,\"../internals/object-get-own-property-names-external\":131,\"../internals/object-get-own-property-symbols\":133,\"../internals/object-is-prototype-of\":135,\"../internals/object-keys\":137,\"../internals/object-property-is-enumerable\":138,\"../internals/redefine\":143,\"../internals/set-to-string-tag\":147,\"../internals/shared\":150,\"../internals/shared-key\":148,\"../internals/to-indexed-object\":154,\"../internals/to-object\":157,\"../internals/to-property-key\":159,\"../internals/to-string\":161,\"../internals/uid\":163,\"../internals/well-known-symbol\":166,\"../internals/well-known-symbol-wrapped\":165}],191:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n\n},{\"../internals/define-well-known-symbol\":82}],192:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n\n},{\"../internals/define-well-known-symbol\":82}],193:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n\n},{\"../internals/define-well-known-symbol\":82}],194:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n\n},{\"../internals/define-well-known-symbol\":82}],195:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n\n},{\"../internals/define-well-known-symbol\":82}],196:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n\n},{\"../internals/define-well-known-symbol\":82}],197:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n},{\"../internals/define-well-known-symbol\":82}],198:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n},{\"../internals/define-well-known-symbol\":82}],199:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n\n},{\"../internals/define-well-known-symbol\":82}],200:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('asyncDispose');\n\n},{\"../internals/define-well-known-symbol\":82}],201:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-using-statement\ndefineWellKnownSymbol('dispose');\n\n},{\"../internals/define-well-known-symbol\":82}],202:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n\n},{\"../internals/define-well-known-symbol\":82}],203:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n\n},{\"../internals/define-well-known-symbol\":82}],204:[function(require,module,exports){\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n\n},{\"../internals/define-well-known-symbol\":82}],205:[function(require,module,exports){\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n\n},{\"../internals/define-well-known-symbol\":82}],206:[function(require,module,exports){\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\ndefineWellKnownSymbol('replaceAll');\n\n},{\"../internals/define-well-known-symbol\":82}],207:[function(require,module,exports){\nrequire('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  var Collection = global[COLLECTION_NAME];\n  var CollectionPrototype = Collection && Collection.prototype;\n  if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n    createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n  }\n  Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n\n},{\"../internals/classof\":75,\"../internals/create-non-enumerable-property\":78,\"../internals/dom-iterables\":85,\"../internals/global\":104,\"../internals/iterators\":122,\"../internals/well-known-symbol\":166,\"../modules/es.array.iterator\":173}],208:[function(require,module,exports){\nvar parent = require('../../es/array/from');\n\nmodule.exports = parent;\n\n},{\"../../es/array/from\":34}],209:[function(require,module,exports){\nvar parent = require('../../es/array/is-array');\n\nmodule.exports = parent;\n\n},{\"../../es/array/is-array\":35}],210:[function(require,module,exports){\nvar parent = require('../../../es/array/virtual/for-each');\n\nmodule.exports = parent;\n\n},{\"../../../es/array/virtual/for-each\":37}],211:[function(require,module,exports){\nvar parent = require('../es/get-iterator-method');\nrequire('../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n},{\"../es/get-iterator-method\":41,\"../modules/web.dom-collections.iterator\":207}],212:[function(require,module,exports){\nvar parent = require('../../es/instance/concat');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/concat\":42}],213:[function(require,module,exports){\nvar parent = require('../../es/instance/flags');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/flags\":43}],214:[function(require,module,exports){\nrequire('../../modules/web.dom-collections.iterator');\nvar classof = require('../../internals/classof');\nvar hasOwn = require('../../internals/has-own-property');\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar method = require('../array/virtual/for-each');\n\nvar ArrayPrototype = Array.prototype;\n\nvar DOMIterables = {\n  DOMTokenList: true,\n  NodeList: true\n};\n\nmodule.exports = function (it) {\n  var own = it.forEach;\n  return it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.forEach)\n    || hasOwn(DOMIterables, classof(it)) ? method : own;\n};\n\n},{\"../../internals/classof\":75,\"../../internals/has-own-property\":105,\"../../internals/object-is-prototype-of\":135,\"../../modules/web.dom-collections.iterator\":207,\"../array/virtual/for-each\":210}],215:[function(require,module,exports){\nvar parent = require('../../es/instance/index-of');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/index-of\":44}],216:[function(require,module,exports){\nvar parent = require('../../es/instance/slice');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/slice\":45}],217:[function(require,module,exports){\nvar parent = require('../../es/instance/sort');\n\nmodule.exports = parent;\n\n},{\"../../es/instance/sort\":46}],218:[function(require,module,exports){\nvar parent = require('../../es/object/create');\n\nmodule.exports = parent;\n\n},{\"../../es/object/create\":47}],219:[function(require,module,exports){\nvar parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n\n},{\"../../es/object/define-property\":48}],220:[function(require,module,exports){\nvar parent = require('../es/parse-int');\n\nmodule.exports = parent;\n\n},{\"../es/parse-int\":49}],221:[function(require,module,exports){\nvar parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n\n},{\"../../es/symbol\":51,\"../../modules/web.dom-collections.iterator\":207}],222:[function(require,module,exports){\nmodule.exports = [\n    {\n        'name': 'C',\n        'alias': 'Other',\n        'isBmpLast': true,\n        'bmp': '\\0-\\x1F\\x7F-\\x9F\\xAD\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F5-\\u0605\\u061C\\u06DD\\u070E\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07FB\\u07FC\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F\\u086B-\\u086F\\u088F-\\u0897\\u08E2\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A77-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A\\u0C3B\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B\\u0C5C\\u0C5E\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C76\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDC\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u1716-\\u171E\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180E\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ACF-\\u1AFF\\u1B4D-\\u1B4F\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC8-\\u1CCF\\u1CFB-\\u1CFF\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20C1-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E5E-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u3130\\u318F\\u31E4-\\u31EF\\u321F\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7CB-\\uA7CF\\uA7D2\\uA7D4\\uA7DA-\\uA7F1\\uA82D-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB6C-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC3-\\uFBD2\\uFD90\\uFD91\\uFDC8-\\uFDCE\\uFDD0-\\uFDEF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD-\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF',\n        'astral': '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD7B\\uDD8B\\uDD93\\uDD96\\uDDA2\\uDDB2\\uDDBA\\uDDBD-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDF7F\\uDF86\\uDFB1\\uDFBB-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE49-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD28-\\uDD2F\\uDD3A-\\uDE5F\\uDE7F\\uDEAA\\uDEAE\\uDEAF\\uDEB2-\\uDEFF\\uDF28-\\uDF2F\\uDF5A-\\uDF6F\\uDF8A-\\uDFAF\\uDFCC-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC76-\\uDC7E\\uDCBD\\uDCC3-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD48-\\uDD4F\\uDD77-\\uDD7F\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5C\\uDC62-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEBA-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF47-\\uDFFF]|\\uD806[\\uDC3C-\\uDC9F\\uDCF3-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD47-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE5-\\uDDFF\\uDE48-\\uDE4F\\uDEA3-\\uDEAF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF9-\\uDFAF\\uDFB1-\\uDFBF\\uDFF2-\\uDFFE]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82A\\uD82D\\uD82E\\uD830-\\uD832\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80B[\\uDC00-\\uDF8F\\uDFF3-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDEBF\\uDECA-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE9B-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82B[\\uDC00-\\uDFEF\\uDFF4\\uDFFC\\uDFFF]|\\uD82C[\\uDD23-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA0-\\uDFFF]|\\uD833[\\uDC00-\\uDEFF\\uDF2E\\uDF2F\\uDF47-\\uDF4F\\uDFC4-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD73-\\uDD7A\\uDDEB-\\uDDFF\\uDE46-\\uDEDF\\uDEF4-\\uDEFF\\uDF57-\\uDF5F\\uDF79-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD837[\\uDC00-\\uDEFF\\uDF1F-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD50-\\uDE8F\\uDEAF-\\uDEBF\\uDEFA-\\uDEFE\\uDF00-\\uDFFF]|\\uD839[\\uDC00-\\uDFDF\\uDFE7\\uDFEC\\uDFEF\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDC70\\uDCB5-\\uDD00\\uDD3E-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDC\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFEF\\uDFF1-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7D-\\uDE7F\\uDE87-\\uDE8F\\uDEAD-\\uDEAF\\uDEBB-\\uDEBF\\uDEC6-\\uDECF\\uDEDA-\\uDEDF\\uDEE8-\\uDEEF\\uDEF7-\\uDEFF\\uDF93\\uDFCB-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEE0-\\uDEFF]|\\uD86D[\\uDF39-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]'\n    },\n    {\n        'name': 'Cc',\n        'alias': 'Control',\n        'bmp': '\\0-\\x1F\\x7F-\\x9F'\n    },\n    {\n        'name': 'Cf',\n        'alias': 'Format',\n        'bmp': '\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB',\n        'astral': '\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC38]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]'\n    },\n    {\n        'name': 'Cn',\n        'alias': 'Unassigned',\n        'bmp': '\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F5-\\u05FF\\u070E\\u074B\\u074C\\u07B2-\\u07BF\\u07FB\\u07FC\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F\\u086B-\\u086F\\u088F\\u0892-\\u0897\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A77-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A\\u0C3B\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B\\u0C5C\\u0C5E\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C76\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDC\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u1716-\\u171E\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ACF-\\u1AFF\\u1B4D-\\u1B4F\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC8-\\u1CCF\\u1CFB-\\u1CFF\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u2065\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20C1-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E5E-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u3130\\u318F\\u31E4-\\u31EF\\u321F\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7CB-\\uA7CF\\uA7D2\\uA7D4\\uA7DA-\\uA7F1\\uA82D-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB6C-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC3-\\uFBD2\\uFD90\\uFD91\\uFDC8-\\uFDCE\\uFDD0-\\uFDEF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD\\uFEFE\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFF8\\uFFFE\\uFFFF',\n        'astral': '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9D-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD7B\\uDD8B\\uDD93\\uDD96\\uDDA2\\uDDB2\\uDDBA\\uDDBD-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDF7F\\uDF86\\uDFB1\\uDFBB-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE49-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD28-\\uDD2F\\uDD3A-\\uDE5F\\uDE7F\\uDEAA\\uDEAE\\uDEAF\\uDEB2-\\uDEFF\\uDF28-\\uDF2F\\uDF5A-\\uDF6F\\uDF8A-\\uDFAF\\uDFCC-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC76-\\uDC7E\\uDCC3-\\uDCCC\\uDCCE\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD48-\\uDD4F\\uDD77-\\uDD7F\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5C\\uDC62-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEBA-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF47-\\uDFFF]|\\uD806[\\uDC3C-\\uDC9F\\uDCF3-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD47-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE5-\\uDDFF\\uDE48-\\uDE4F\\uDEA3-\\uDEAF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF9-\\uDFAF\\uDFB1-\\uDFBF\\uDFF2-\\uDFFE]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82A\\uD82D\\uD82E\\uD830-\\uD832\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDB7F][\\uDC00-\\uDFFF]|\\uD80B[\\uDC00-\\uDF8F\\uDFF3-\\uDFFF]|\\uD80D[\\uDC2F\\uDC39-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDEBF\\uDECA-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE9B-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82B[\\uDC00-\\uDFEF\\uDFF4\\uDFFC\\uDFFF]|\\uD82C[\\uDD23-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA4-\\uDFFF]|\\uD833[\\uDC00-\\uDEFF\\uDF2E\\uDF2F\\uDF47-\\uDF4F\\uDFC4-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDDEB-\\uDDFF\\uDE46-\\uDEDF\\uDEF4-\\uDEFF\\uDF57-\\uDF5F\\uDF79-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD837[\\uDC00-\\uDEFF\\uDF1F-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD50-\\uDE8F\\uDEAF-\\uDEBF\\uDEFA-\\uDEFE\\uDF00-\\uDFFF]|\\uD839[\\uDC00-\\uDFDF\\uDFE7\\uDFEC\\uDFEF\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDC70\\uDCB5-\\uDD00\\uDD3E-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDDAE-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED8-\\uDEDC\\uDEED-\\uDEEF\\uDEFD-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFDF\\uDFEC-\\uDFEF\\uDFF1-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE\\uDCAF\\uDCB2-\\uDCFF\\uDE54-\\uDE5F\\uDE6E\\uDE6F\\uDE75-\\uDE77\\uDE7D-\\uDE7F\\uDE87-\\uDE8F\\uDEAD-\\uDEAF\\uDEBB-\\uDEBF\\uDEC6-\\uDECF\\uDEDA-\\uDEDF\\uDEE8-\\uDEEF\\uDEF7-\\uDEFF\\uDF93\\uDFCB-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEE0-\\uDEFF]|\\uD86D[\\uDF39-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00\\uDC02-\\uDC1F\\uDC80-\\uDCFF\\uDDF0-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]'\n    },\n    {\n        'name': 'Co',\n        'alias': 'Private_Use',\n        'bmp': '\\uE000-\\uF8FF',\n        'astral': '[\\uDB80-\\uDBBE\\uDBC0-\\uDBFE][\\uDC00-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDC00-\\uDFFD]'\n    },\n    {\n        'name': 'Cs',\n        'alias': 'Surrogate',\n        'bmp': '\\uD800-\\uDFFF'\n    },\n    {\n        'name': 'L',\n        'alias': 'Letter',\n        'bmp': 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]'\n    },\n    {\n        'name': 'LC',\n        'alias': 'Cased_Letter',\n        'bmp': 'A-Za-z\\xB5\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BC-\\u01BF\\u01C4-\\u0293\\u0295-\\u02AF\\u0370-\\u0373\\u0376\\u0377\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0560-\\u0588\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C7B\\u2C7E-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA640-\\uA66D\\uA680-\\uA69B\\uA722-\\uA76F\\uA771-\\uA787\\uA78B-\\uA78E\\uA790-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F5\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A',\n        'astral': '\\uD801[\\uDC00-\\uDC4F\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC]|\\uD803[\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD806[\\uDCA0-\\uDCDF]|\\uD81B[\\uDE40-\\uDE7F]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF09\\uDF0B-\\uDF1E]|\\uD83A[\\uDD00-\\uDD43]'\n    },\n    {\n        'name': 'Ll',\n        'alias': 'Lowercase_Letter',\n        'bmp': 'a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5F\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7BB\\uA7BD\\uA7BF\\uA7C1\\uA7C3\\uA7C8\\uA7CA\\uA7D1\\uA7D3\\uA7D5\\uA7D7\\uA7D9\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A',\n        'astral': '\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD81B[\\uDE60-\\uDE7F]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD837[\\uDF00-\\uDF09\\uDF0B-\\uDF1E]|\\uD83A[\\uDD22-\\uDD43]'\n    },\n    {\n        'name': 'Lm',\n        'alias': 'Modifier_Letter',\n        'bmp': '\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u08C9\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA69C\\uA69D\\uA717-\\uA71F\\uA770\\uA788\\uA7F2-\\uA7F4\\uA7F8\\uA7F9\\uA9CF\\uA9E6\\uAA70\\uAADD\\uAAF3\\uAAF4\\uAB5C-\\uAB5F\\uAB69\\uFF70\\uFF9E\\uFF9F',\n        'astral': '\\uD801[\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD81A[\\uDF40-\\uDF43]|\\uD81B[\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD838[\\uDD37-\\uDD3D]|\\uD83A\\uDD4B'\n    },\n    {\n        'name': 'Lo',\n        'alias': 'Other_Letter',\n        'bmp': '\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C8\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA78F\\uA7F7\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9E0-\\uA9E4\\uA9E7-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC50-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF4A\\uDF50]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD837\\uDF0A|\\uD838[\\uDD00-\\uDD2C\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]'\n    },\n    {\n        'name': 'Lt',\n        'alias': 'Titlecase_Letter',\n        'bmp': '\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC'\n    },\n    {\n        'name': 'Lu',\n        'alias': 'Uppercase_Letter',\n        'bmp': 'A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2F\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uA7BA\\uA7BC\\uA7BE\\uA7C0\\uA7C2\\uA7C4-\\uA7C7\\uA7C9\\uA7D0\\uA7D6\\uA7D8\\uA7F5\\uFF21-\\uFF3A',\n        'astral': '\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD81B[\\uDE40-\\uDE5F]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21]'\n    },\n    {\n        'name': 'M',\n        'alias': 'Mark',\n        'bmp': '\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ACE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\n        'astral': '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD45\\uDD46\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDDC9-\\uDDCC\\uDDCE\\uDDCF\\uDE2C-\\uDE37\\uDE3E\\uDEDF-\\uDEEA\\uDF00-\\uDF03\\uDF3B\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC35-\\uDC46\\uDC5E\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDDDC\\uDDDD\\uDE30-\\uDE40\\uDEAB-\\uDEB7\\uDF1D-\\uDF2B]|\\uD806[\\uDC2C-\\uDC3A\\uDD30-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD3E\\uDD40\\uDD42\\uDD43\\uDDD1-\\uDDD7\\uDDDA-\\uDDE0\\uDDE4\\uDE01-\\uDE0A\\uDE33-\\uDE39\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE5B\\uDE8A-\\uDE99]|\\uD807[\\uDC2F-\\uDC36\\uDC38-\\uDC3F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD8A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD97\\uDEF3-\\uDEF6]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF51-\\uDF87\\uDF8F-\\uDF92\\uDFE4\\uDFF0\\uDFF1]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'Mc',\n        'alias': 'Spacing_Mark',\n        'bmp': '\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF7\\u302E\\u302F\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BE-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uAA7D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC',\n        'astral': '\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDDCE\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3E\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB0-\\uDCB2\\uDCB9\\uDCBB-\\uDCBE\\uDCC1\\uDDAF-\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF20\\uDF21\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDD30-\\uDD35\\uDD37\\uDD38\\uDD3D\\uDD40\\uDD42\\uDDD1-\\uDDD3\\uDDDC-\\uDDDF\\uDDE4\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF87\\uDFF0\\uDFF1]|\\uD834[\\uDD65\\uDD66\\uDD6D-\\uDD72]'\n    },\n    {\n        'name': 'Me',\n        'alias': 'Enclosing_Mark',\n        'bmp': '\\u0488\\u0489\\u1ABE\\u20DD-\\u20E0\\u20E2-\\u20E4\\uA670-\\uA672'\n    },\n    {\n        'name': 'Mn',\n        'alias': 'Nonspacing_Mark',\n        'bmp': '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0898-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B55\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3C\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0D81\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732\\u1733\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA82C\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9BD\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\n        'astral': '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDEAB\\uDEAC\\uDF46-\\uDF50\\uDF82-\\uDF85]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC70\\uDC73\\uDC74\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDCC2\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDDCF\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF40\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB3-\\uDCB8\\uDCBA\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDD3B\\uDD3C\\uDD3E\\uDD43\\uDDD4-\\uDDD7\\uDDDA\\uDDDB\\uDDE0\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF4F\\uDF8F-\\uDF92\\uDFE4]|\\uD82F[\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD30-\\uDD36\\uDEAE\\uDEEC-\\uDEEF]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'N',\n        'alias': 'Number',\n        'bmp': '0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\n        'astral': '\\uD800[\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD801[\\uDCA0-\\uDCA9]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54\\uDFC5-\\uDFCB]|\\uD804[\\uDC52-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDDE1-\\uDDF4\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF3B]|\\uD806[\\uDCE0-\\uDCF2\\uDD50-\\uDD59]|\\uD807[\\uDC50-\\uDC6C\\uDD50-\\uDD59\\uDDA0-\\uDDA9\\uDFC0-\\uDFD4]|\\uD809[\\uDC00-\\uDC6E]|\\uD81A[\\uDE60-\\uDE69\\uDEC0-\\uDEC9\\uDF50-\\uDF59\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDFCE-\\uDFFF]|\\uD838[\\uDD40-\\uDD49\\uDEF0-\\uDEF9]|\\uD83A[\\uDCC7-\\uDCCF\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]'\n    },\n    {\n        'name': 'Nd',\n        'alias': 'Decimal_Number',\n        'bmp': '0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\n        'astral': '\\uD801[\\uDCA0-\\uDCA9]|\\uD803[\\uDD30-\\uDD39]|\\uD804[\\uDC66-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF39]|\\uD806[\\uDCE0-\\uDCE9\\uDD50-\\uDD59]|\\uD807[\\uDC50-\\uDC59\\uDD50-\\uDD59\\uDDA0-\\uDDA9]|\\uD81A[\\uDE60-\\uDE69\\uDEC0-\\uDEC9\\uDF50-\\uDF59]|\\uD835[\\uDFCE-\\uDFFF]|\\uD838[\\uDD40-\\uDD49\\uDEF0-\\uDEF9]|\\uD83A[\\uDD50-\\uDD59]|\\uD83E[\\uDFF0-\\uDFF9]'\n    },\n    {\n        'name': 'Nl',\n        'alias': 'Letter_Number',\n        'bmp': '\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF',\n        'astral': '\\uD800[\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD809[\\uDC00-\\uDC6E]'\n    },\n    {\n        'name': 'No',\n        'alias': 'Other_Number',\n        'bmp': '\\xB2\\xB3\\xB9\\xBC-\\xBE\\u09F4-\\u09F9\\u0B72-\\u0B77\\u0BF0-\\u0BF2\\u0C78-\\u0C7E\\u0D58-\\u0D5E\\u0D70-\\u0D78\\u0F2A-\\u0F33\\u1369-\\u137C\\u17F0-\\u17F9\\u19DA\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u215F\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA830-\\uA835',\n        'astral': '\\uD800[\\uDD07-\\uDD33\\uDD75-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54\\uDFC5-\\uDFCB]|\\uD804[\\uDC52-\\uDC65\\uDDE1-\\uDDF4]|\\uD805[\\uDF3A\\uDF3B]|\\uD806[\\uDCEA-\\uDCF2]|\\uD807[\\uDC5A-\\uDC6C\\uDFC0-\\uDFD4]|\\uD81A[\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD83A[\\uDCC7-\\uDCCF]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D]|\\uD83C[\\uDD00-\\uDD0C]'\n    },\n    {\n        'name': 'P',\n        'alias': 'Punctuation',\n        'bmp': '!-#%-\\\\*,-\\\\/:;\\\\?@\\\\[-\\\\]_\\\\{\\\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65',\n        'astral': '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\n    },\n    {\n        'name': 'Pc',\n        'alias': 'Connector_Punctuation',\n        'bmp': '_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F'\n    },\n    {\n        'name': 'Pd',\n        'alias': 'Dash_Punctuation',\n        'bmp': '\\\\-\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2E17\\u2E1A\\u2E3A\\u2E3B\\u2E40\\u2E5D\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D',\n        'astral': '\\uD803\\uDEAD'\n    },\n    {\n        'name': 'Pe',\n        'alias': 'Close_Punctuation',\n        'bmp': '\\\\)\\\\]\\\\}\\u0F3B\\u0F3D\\u169C\\u2046\\u207E\\u208E\\u2309\\u230B\\u232A\\u2769\\u276B\\u276D\\u276F\\u2771\\u2773\\u2775\\u27C6\\u27E7\\u27E9\\u27EB\\u27ED\\u27EF\\u2984\\u2986\\u2988\\u298A\\u298C\\u298E\\u2990\\u2992\\u2994\\u2996\\u2998\\u29D9\\u29DB\\u29FD\\u2E23\\u2E25\\u2E27\\u2E29\\u2E56\\u2E58\\u2E5A\\u2E5C\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\u3017\\u3019\\u301B\\u301E\\u301F\\uFD3E\\uFE18\\uFE36\\uFE38\\uFE3A\\uFE3C\\uFE3E\\uFE40\\uFE42\\uFE44\\uFE48\\uFE5A\\uFE5C\\uFE5E\\uFF09\\uFF3D\\uFF5D\\uFF60\\uFF63'\n    },\n    {\n        'name': 'Pf',\n        'alias': 'Final_Punctuation',\n        'bmp': '\\xBB\\u2019\\u201D\\u203A\\u2E03\\u2E05\\u2E0A\\u2E0D\\u2E1D\\u2E21'\n    },\n    {\n        'name': 'Pi',\n        'alias': 'Initial_Punctuation',\n        'bmp': '\\xAB\\u2018\\u201B\\u201C\\u201F\\u2039\\u2E02\\u2E04\\u2E09\\u2E0C\\u2E1C\\u2E20'\n    },\n    {\n        'name': 'Po',\n        'alias': 'Other_Punctuation',\n        'bmp': '!-#%-\\'\\\\*,\\\\.\\\\/:;\\\\?@\\\\\\xA1\\xA7\\xB6\\xB7\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u166E\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u1805\\u1807-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2016\\u2017\\u2020-\\u2027\\u2030-\\u2038\\u203B-\\u203E\\u2041-\\u2043\\u2047-\\u2051\\u2053\\u2055-\\u205E\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00\\u2E01\\u2E06-\\u2E08\\u2E0B\\u2E0E-\\u2E16\\u2E18\\u2E19\\u2E1B\\u2E1E\\u2E1F\\u2E2A-\\u2E2E\\u2E30-\\u2E39\\u2E3C-\\u2E3F\\u2E41\\u2E43-\\u2E4F\\u2E52-\\u2E54\\u3001-\\u3003\\u303D\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFE10-\\uFE16\\uFE19\\uFE30\\uFE45\\uFE46\\uFE49-\\uFE4C\\uFE50-\\uFE52\\uFE54-\\uFE57\\uFE5F-\\uFE61\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF07\\uFF0A\\uFF0C\\uFF0E\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3C\\uFF61\\uFF64\\uFF65',\n        'astral': '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\n    },\n    {\n        'name': 'Ps',\n        'alias': 'Open_Punctuation',\n        'bmp': '\\\\(\\\\[\\\\{\\u0F3A\\u0F3C\\u169B\\u201A\\u201E\\u2045\\u207D\\u208D\\u2308\\u230A\\u2329\\u2768\\u276A\\u276C\\u276E\\u2770\\u2772\\u2774\\u27C5\\u27E6\\u27E8\\u27EA\\u27EC\\u27EE\\u2983\\u2985\\u2987\\u2989\\u298B\\u298D\\u298F\\u2991\\u2993\\u2995\\u2997\\u29D8\\u29DA\\u29FC\\u2E22\\u2E24\\u2E26\\u2E28\\u2E42\\u2E55\\u2E57\\u2E59\\u2E5B\\u3008\\u300A\\u300C\\u300E\\u3010\\u3014\\u3016\\u3018\\u301A\\u301D\\uFD3F\\uFE17\\uFE35\\uFE37\\uFE39\\uFE3B\\uFE3D\\uFE3F\\uFE41\\uFE43\\uFE47\\uFE59\\uFE5B\\uFE5D\\uFF08\\uFF3B\\uFF5B\\uFF5F\\uFF62'\n    },\n    {\n        'name': 'S',\n        'alias': 'Symbol',\n        'bmp': '\\\\$\\\\+<->\\\\^`\\\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD',\n        'astral': '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDD-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF73\\uDF80-\\uDFD8\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE74\\uDE78-\\uDE7C\\uDE80-\\uDE86\\uDE90-\\uDEAC\\uDEB0-\\uDEBA\\uDEC0-\\uDEC5\\uDED0-\\uDED9\\uDEE0-\\uDEE7\\uDEF0-\\uDEF6\\uDF00-\\uDF92\\uDF94-\\uDFCA]'\n    },\n    {\n        'name': 'Sc',\n        'alias': 'Currency_Symbol',\n        'bmp': '\\\\$\\xA2-\\xA5\\u058F\\u060B\\u07FE\\u07FF\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20C0\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6',\n        'astral': '\\uD807[\\uDFDD-\\uDFE0]|\\uD838\\uDEFF|\\uD83B\\uDCB0'\n    },\n    {\n        'name': 'Sk',\n        'alias': 'Modifier_Symbol',\n        'bmp': '\\\\^`\\xA8\\xAF\\xB4\\xB8\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u0888\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u309B\\u309C\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uAB5B\\uAB6A\\uAB6B\\uFBB2-\\uFBC2\\uFF3E\\uFF40\\uFFE3',\n        'astral': '\\uD83C[\\uDFFB-\\uDFFF]'\n    },\n    {\n        'name': 'Sm',\n        'alias': 'Math_Symbol',\n        'bmp': '\\\\+<->\\\\|~\\xAC\\xB1\\xD7\\xF7\\u03F6\\u0606-\\u0608\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u2118\\u2140-\\u2144\\u214B\\u2190-\\u2194\\u219A\\u219B\\u21A0\\u21A3\\u21A6\\u21AE\\u21CE\\u21CF\\u21D2\\u21D4\\u21F4-\\u22FF\\u2320\\u2321\\u237C\\u239B-\\u23B3\\u23DC-\\u23E1\\u25B7\\u25C1\\u25F8-\\u25FF\\u266F\\u27C0-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u27FF\\u2900-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2AFF\\u2B30-\\u2B44\\u2B47-\\u2B4C\\uFB29\\uFE62\\uFE64-\\uFE66\\uFF0B\\uFF1C-\\uFF1E\\uFF5C\\uFF5E\\uFFE2\\uFFE9-\\uFFEC',\n        'astral': '\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD83B[\\uDEF0\\uDEF1]'\n    },\n    {\n        'name': 'So',\n        'alias': 'Other_Symbol',\n        'bmp': '\\xA6\\xA9\\xAE\\xB0\\u0482\\u058D\\u058E\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u09FA\\u0B70\\u0BF3-\\u0BF8\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116\\u2117\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u214A\\u214C\\u214D\\u214F\\u218A\\u218B\\u2195-\\u2199\\u219C-\\u219F\\u21A1\\u21A2\\u21A4\\u21A5\\u21A7-\\u21AD\\u21AF-\\u21CD\\u21D0\\u21D1\\u21D3\\u21D5-\\u21F3\\u2300-\\u2307\\u230C-\\u231F\\u2322-\\u2328\\u232B-\\u237B\\u237D-\\u239A\\u23B4-\\u23DB\\u23E2-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u25B6\\u25B8-\\u25C0\\u25C2-\\u25F7\\u2600-\\u266E\\u2670-\\u2767\\u2794-\\u27BF\\u2800-\\u28FF\\u2B00-\\u2B2F\\u2B45\\u2B46\\u2B4D-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA828-\\uA82B\\uA836\\uA837\\uA839\\uAA77-\\uAA79\\uFD40-\\uFD4F\\uFDCF\\uFDFD-\\uFDFF\\uFFE4\\uFFE8\\uFFED\\uFFEE\\uFFFC\\uFFFD',\n        'astral': '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFDC\\uDFE1-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838\\uDD4F|\\uD83B[\\uDCAC\\uDD2E]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFA]|\\uD83D[\\uDC00-\\uDED7\\uDEDD-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF73\\uDF80-\\uDFD8\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE74\\uDE78-\\uDE7C\\uDE80-\\uDE86\\uDE90-\\uDEAC\\uDEB0-\\uDEBA\\uDEC0-\\uDEC5\\uDED0-\\uDED9\\uDEE0-\\uDEE7\\uDEF0-\\uDEF6\\uDF00-\\uDF92\\uDF94-\\uDFCA]'\n    },\n    {\n        'name': 'Z',\n        'alias': 'Separator',\n        'bmp': ' \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\n    },\n    {\n        'name': 'Zl',\n        'alias': 'Line_Separator',\n        'bmp': '\\u2028'\n    },\n    {\n        'name': 'Zp',\n        'alias': 'Paragraph_Separator',\n        'bmp': '\\u2029'\n    },\n    {\n        'name': 'Zs',\n        'alias': 'Space_Separator',\n        'bmp': ' \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000'\n    }\n];\n\n},{}]},{},[3])(3)\n});\n"
  },
  {
    "path": "src/staticfiles/admin/js/vendor/xregexp/xregexp.min.f1ae4617847c.js",
    "content": "!function(u){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=u();else if(\"function\"==typeof define&&define.amd)define([],u);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).XRegExp=u()}}((function(){return function r(u,d,t){function o(c,i){if(!d[c]){if(!u[c]){var l=\"function\"==typeof require&&require;if(!i&&l)return l(c,!0);if(a)return a(c,!0);var D=new Error(\"Cannot find module '\"+c+\"'\");throw D.code=\"MODULE_NOT_FOUND\",D}var p=d[c]={exports:{}};u[c][0].call(p.exports,(function(d){return o(u[c][1][d]||d)}),p,p.exports,r,u,d,t)}return d[c].exports}for(var a=\"function\"==typeof require&&require,c=0;c<t.length;c++)o(t[c]);return o}({1:[function(u,d,t){\"use strict\";var a=u(\"@babel/runtime-corejs3/core-js-stable/instance/slice\"),c=u(\"@babel/runtime-corejs3/core-js-stable/array/from\"),i=u(\"@babel/runtime-corejs3/core-js-stable/symbol\"),l=u(\"@babel/runtime-corejs3/core-js/get-iterator-method\"),D=u(\"@babel/runtime-corejs3/core-js-stable/array/is-array\"),p=u(\"@babel/runtime-corejs3/core-js-stable/object/define-property\"),b=u(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");p(t,\"__esModule\",{value:!0}),t.default=void 0;var y=b(u(\"@babel/runtime-corejs3/helpers/slicedToArray\")),m=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/for-each\")),A=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/concat\")),E=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/index-of\"));function _createForOfIteratorHelper(u,d){var t=void 0!==i&&l(u)||u[\"@@iterator\"];if(!t){if(D(u)||(t=function _unsupportedIterableToArray(u,d){var t;if(!u)return;if(\"string\"==typeof u)return _arrayLikeToArray(u,d);var i=a(t=Object.prototype.toString.call(u)).call(t,8,-1);\"Object\"===i&&u.constructor&&(i=u.constructor.name);if(\"Map\"===i||\"Set\"===i)return c(u);if(\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return _arrayLikeToArray(u,d)}(u))||d&&u&&\"number\"==typeof u.length){t&&(u=t);var p=0,b=function F(){};return{s:b,n:function n(){return p>=u.length?{done:!0}:{done:!1,value:u[p++]}},e:function e(u){throw u},f:b}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var y,m=!0,A=!1;return{s:function s(){t=t.call(u)},n:function n(){var u=t.next();return m=u.done,u},e:function e(u){A=!0,y=u},f:function f(){try{m||null==t.return||t.return()}finally{if(A)throw y}}}}function _arrayLikeToArray(u,d){(null==d||d>u.length)&&(d=u.length);for(var t=0,a=new Array(d);t<d;t++)a[t]=u[t];return a}\n/*!\n * XRegExp Unicode Base 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2008-present MIT License\n */t.default=function _default(u){var d={},t={},a=u._dec,c=u._hex,i=u._pad4;function normalize(u){return u.replace(/[- _]+/g,\"\").toLowerCase()}function charCode(u){var d=/^\\\\[xu](.+)/.exec(u);return d?a(d[1]):u.charCodeAt(\"\\\\\"===u[0]?1:0)}function cacheInvertedBmp(t){return d[t][\"b!\"]||(d[t][\"b!\"]=function invertBmp(d){var t=\"\",a=-1;return(0,m.default)(u).call(u,d,/(\\\\x..|\\\\u....|\\\\?[\\s\\S])(?:-(\\\\x..|\\\\u....|\\\\?[\\s\\S]))?/,(function(u){var d=charCode(u[1]);d>a+1&&(t+=\"\\\\u\".concat(i(c(a+1))),d>a+2&&(t+=\"-\\\\u\".concat(i(c(d-1))))),a=charCode(u[2]||u[1])})),a<65535&&(t+=\"\\\\u\".concat(i(c(a+1))),a<65534&&(t+=\"-\\\\uFFFF\")),t}(d[t].bmp))}function cacheAstral(u,t){var a=t?\"a!\":\"a=\";return d[u][a]||(d[u][a]=function buildAstral(u,t){var a,c,i=d[u],l=\"\";return i.bmp&&!i.isBmpLast&&(l=(0,A.default)(a=\"[\".concat(i.bmp,\"]\")).call(a,i.astral?\"|\":\"\")),i.astral&&(l+=i.astral),i.isBmpLast&&i.bmp&&(l+=(0,A.default)(c=\"\".concat(i.astral?\"|\":\"\",\"[\")).call(c,i.bmp,\"]\")),t?\"(?:(?!\".concat(l,\")(?:[\\ud800-\\udbff][\\udc00-\\udfff]|[\\0-￿]))\"):\"(?:\".concat(l,\")\")}(u,t))}u.addToken(/\\\\([pP])(?:{(\\^?)(?:(\\w+)=)?([^}]*)}|([A-Za-z]))/,(function(u,a,c){var i=\"Unknown Unicode token \",l=(0,y.default)(u,6),D=l[0],p=l[1],b=l[2],m=l[3],C=l[4],g=l[5],h=\"P\"===p||!!b,x=-1!==(0,E.default)(c).call(c,\"A\"),v=normalize(g||C),B=d[v];if(\"P\"===p&&b)throw new SyntaxError(\"Invalid double negation \"+D);if(!d.hasOwnProperty(v))throw new SyntaxError(i+D);if(m&&(!t[m]||!t[m][v]))throw new SyntaxError(i+D);if(B.inverseOf){var w;if(v=normalize(B.inverseOf),!d.hasOwnProperty(v))throw new ReferenceError((0,A.default)(w=\"\".concat(\"Unicode token missing data \"+D,\" -> \")).call(w,B.inverseOf));B=d[v],h=!h}if(!B.bmp&&!x)throw new SyntaxError(\"Astral mode required for Unicode token \"+D);if(x){if(\"class\"===a)throw new SyntaxError(\"Astral mode does not support Unicode tokens within character classes\");return cacheAstral(v,h)}return\"class\"===a?h?cacheInvertedBmp(v):B.bmp:\"\".concat((h?\"[^\":\"[\")+B.bmp,\"]\")}),{scope:\"all\",optionalFlags:\"A\",leadChar:\"\\\\\"}),u.addUnicodeData=function(a,c){c&&(t[c]={});var i,l=_createForOfIteratorHelper(a);try{for(l.s();!(i=l.n()).done;){var D=i.value;if(!D.name)throw new Error(\"Unicode token requires name\");if(!(D.inverseOf||D.bmp||D.astral))throw new Error(\"Unicode token has no character data \"+D.name);var p=normalize(D.name);if(d[p]=D,c&&(t[c][p]=!0),D.alias){var b=normalize(D.alias);d[b]=D,c&&(t[c][b]=!0)}}}catch(u){l.e(u)}finally{l.f()}u.cache.flush(\"patterns\")},u._getUnicodeProperty=function(u){var t=normalize(u);return d[t]}},d.exports=t.default},{\"@babel/runtime-corejs3/core-js-stable/array/from\":5,\"@babel/runtime-corejs3/core-js-stable/array/is-array\":6,\"@babel/runtime-corejs3/core-js-stable/instance/concat\":7,\"@babel/runtime-corejs3/core-js-stable/instance/for-each\":9,\"@babel/runtime-corejs3/core-js-stable/instance/index-of\":10,\"@babel/runtime-corejs3/core-js-stable/instance/slice\":11,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/core-js-stable/symbol\":16,\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24,\"@babel/runtime-corejs3/helpers/slicedToArray\":27}],2:[function(u,d,t){\"use strict\";var a=u(\"@babel/runtime-corejs3/core-js-stable/object/define-property\"),c=u(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");a(t,\"__esModule\",{value:!0}),t.default=void 0;var i=c(u(\"../../tools/output/categories\"));\n/*!\n * XRegExp Unicode Categories 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2010-present MIT License\n * Unicode data by Mathias Bynens <mathiasbynens.be>\n */t.default=function _default(u){if(!u.addUnicodeData)throw new ReferenceError(\"Unicode Base must be loaded before Unicode Categories\");u.addUnicodeData(i.default)},d.exports=t.default},{\"../../tools/output/categories\":222,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24}],3:[function(u,d,t){\"use strict\";var a=u(\"@babel/runtime-corejs3/core-js-stable/object/define-property\"),c=u(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");a(t,\"__esModule\",{value:!0}),t.default=void 0;var i=c(u(\"./xregexp\")),l=c(u(\"./addons/unicode-base\")),D=c(u(\"./addons/unicode-categories\"));(0,l.default)(i.default),(0,D.default)(i.default);var p=i.default;t.default=p,d.exports=t.default},{\"./addons/unicode-base\":1,\"./addons/unicode-categories\":2,\"./xregexp\":4,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24}],4:[function(u,d,t){\"use strict\";var a=u(\"@babel/runtime-corejs3/core-js-stable/instance/slice\"),c=u(\"@babel/runtime-corejs3/core-js-stable/array/from\"),i=u(\"@babel/runtime-corejs3/core-js-stable/symbol\"),l=u(\"@babel/runtime-corejs3/core-js/get-iterator-method\"),D=u(\"@babel/runtime-corejs3/core-js-stable/array/is-array\"),p=u(\"@babel/runtime-corejs3/core-js-stable/object/define-property\"),b=u(\"@babel/runtime-corejs3/helpers/interopRequireDefault\");p(t,\"__esModule\",{value:!0}),t.default=void 0;var y=b(u(\"@babel/runtime-corejs3/helpers/slicedToArray\")),m=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/flags\")),A=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/sort\")),E=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/slice\")),C=b(u(\"@babel/runtime-corejs3/core-js-stable/parse-int\")),g=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/index-of\")),h=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/for-each\")),x=b(u(\"@babel/runtime-corejs3/core-js-stable/object/create\")),v=b(u(\"@babel/runtime-corejs3/core-js-stable/instance/concat\"));function _createForOfIteratorHelper(u,d){var t=void 0!==i&&l(u)||u[\"@@iterator\"];if(!t){if(D(u)||(t=function _unsupportedIterableToArray(u,d){var t;if(!u)return;if(\"string\"==typeof u)return _arrayLikeToArray(u,d);var i=a(t=Object.prototype.toString.call(u)).call(t,8,-1);\"Object\"===i&&u.constructor&&(i=u.constructor.name);if(\"Map\"===i||\"Set\"===i)return c(u);if(\"Arguments\"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return _arrayLikeToArray(u,d)}(u))||d&&u&&\"number\"==typeof u.length){t&&(u=t);var p=0,b=function F(){};return{s:b,n:function n(){return p>=u.length?{done:!0}:{done:!1,value:u[p++]}},e:function e(u){throw u},f:b}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var y,m=!0,A=!1;return{s:function s(){t=t.call(u)},n:function n(){var u=t.next();return m=u.done,u},e:function e(u){A=!0,y=u},f:function f(){try{m||null==t.return||t.return()}finally{if(A)throw y}}}}function _arrayLikeToArray(u,d){(null==d||d>u.length)&&(d=u.length);for(var t=0,a=new Array(d);t<d;t++)a[t]=u[t];return a}\n/*!\n * XRegExp 5.1.1\n * <xregexp.com>\n * Steven Levithan (c) 2007-present MIT License\n */var B={astral:!1,namespacing:!0},w={},j={},k={},S=[],O=\"default\",R=\"class\",_={default:/\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|\\(\\?(?:[:=!]|<[=!])|[?*+]\\?|{\\d+(?:,\\d*)?}\\??|[\\s\\S]/,class:/\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|[\\s\\S]/},T=/\\$(?:\\{([^\\}]+)\\}|<([^>]+)>|(\\d\\d?|[\\s\\S]?))/g,I=void 0===/()??/.exec(\"\")[1],P=void 0!==(0,m.default)(/x/);function hasNativeFlag(u){var d=!0;try{if(new RegExp(\"\",u),\"y\"===u){\"..\"===\".a\".replace(new RegExp(\"a\",\"gy\"),\".\")&&(d=!1)}}catch(u){d=!1}return d}var X=hasNativeFlag(\"d\"),L=hasNativeFlag(\"s\"),N=hasNativeFlag(\"u\"),M=hasNativeFlag(\"y\"),U={d:X,g:!0,i:!0,m:!0,s:L,u:N,y:M},G=L?/[^dgimsuy]+/g:/[^dgimuy]+/g;function augment(u,d,t,a,c){var i;if(u.xregexp={captureNames:d},c)return u;if(u.__proto__)u.__proto__=XRegExp.prototype;else for(var l in XRegExp.prototype)u[l]=XRegExp.prototype[l];return u.xregexp.source=t,u.xregexp.flags=a?(0,A.default)(i=a.split(\"\")).call(i).join(\"\"):a,u}function clipDuplicates(u){return u.replace(/([\\s\\S])(?=[\\s\\S]*\\1)/g,\"\")}function copyRegex(u,d){var t;if(!XRegExp.isRegExp(u))throw new TypeError(\"Type RegExp expected\");var a=u.xregexp||{},c=function getNativeFlags(u){return P?(0,m.default)(u):/\\/([a-z]*)$/i.exec(RegExp.prototype.toString.call(u))[1]}(u),i=\"\",l=\"\",D=null,p=null;return(d=d||{}).removeG&&(l+=\"g\"),d.removeY&&(l+=\"y\"),l&&(c=c.replace(new RegExp(\"[\".concat(l,\"]+\"),\"g\"),\"\")),d.addG&&(i+=\"g\"),d.addY&&(i+=\"y\"),i&&(c=clipDuplicates(c+i)),d.isInternalOnly||(void 0!==a.source&&(D=a.source),null!=(0,m.default)(a)&&(p=i?clipDuplicates((0,m.default)(a)+i):(0,m.default)(a))),u=augment(new RegExp(d.source||u.source,c),function hasNamedCapture(u){return!(!u.xregexp||!u.xregexp.captureNames)}(u)?(0,E.default)(t=a.captureNames).call(t,0):null,D,p,d.isInternalOnly)}function dec(u){return(0,C.default)(u,16)}function getContextualTokenSeparator(u,d,t){var a=u.index+u[0].length,c=u.input[u.index-1],i=u.input[a];return/^[()|]$/.test(c)||/^[()|]$/.test(i)||0===u.index||a===u.input.length||/\\(\\?(?:[:=!]|<[=!])$/.test(u.input.substring(u.index-4,u.index))||function isQuantifierNext(u,d,t){return(-1!==(0,g.default)(t).call(t,\"x\")?/^(?:\\s|#[^#\\n]*|\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/:/^(?:\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/).test((0,E.default)(u).call(u,d))}(u.input,a,t)?\"\":\"(?:)\"}function hex(u){return(0,C.default)(u,10).toString(16)}function isType(u,d){return Object.prototype.toString.call(u)===\"[object \".concat(d,\"]\")}function nullThrows(u){if(null==u)throw new TypeError(\"Cannot convert null or undefined to object\");return u}function pad4(u){for(;u.length<4;)u=\"0\".concat(u);return u}function prepareOptions(u){var d={};return isType(u,\"String\")?((0,h.default)(XRegExp).call(XRegExp,u,/[^\\s,]+/,(function(u){d[u]=!0})),d):u}function registerFlag(u){if(!/^[\\w$]$/.test(u))throw new Error(\"Flag must be a single character A-Za-z0-9_$\");U[u]=!0}function runTokens(u,d,t,a,c){for(var i,l,D=S.length,p=u[t],b=null;D--;)if(!((l=S[D]).leadChar&&l.leadChar!==p||l.scope!==a&&\"all\"!==l.scope||l.flag&&-1===(0,g.default)(d).call(d,l.flag))&&(i=XRegExp.exec(u,l.regex,t,\"sticky\"))){b={matchLength:i[0].length,output:l.handler.call(c,i,a,d),reparse:l.reparse};break}return b}function setAstral(u){B.astral=u}function setNamespacing(u){B.namespacing=u}function XRegExp(u,d){if(XRegExp.isRegExp(u)){if(void 0!==d)throw new TypeError(\"Cannot supply flags when copying a RegExp\");return copyRegex(u)}if(u=void 0===u?\"\":String(u),d=void 0===d?\"\":String(d),XRegExp.isInstalled(\"astral\")&&-1===(0,g.default)(d).call(d,\"A\")&&(d+=\"A\"),k[u]||(k[u]={}),!k[u][d]){for(var t,a={hasNamedCapture:!1,captureNames:[]},c=O,i=\"\",l=0,D=function prepareFlags(u,d){if(clipDuplicates(d)!==d)throw new SyntaxError(\"Invalid duplicate regex flag \".concat(d));u=u.replace(/^\\(\\?([\\w$]+)\\)/,(function(u,t){if(/[dgy]/.test(t))throw new SyntaxError(\"Cannot use flags dgy in mode modifier \".concat(u));return d=clipDuplicates(d+t),\"\"}));var t,a=_createForOfIteratorHelper(d);try{for(a.s();!(t=a.n()).done;){var c=t.value;if(!U[c])throw new SyntaxError(\"Unknown regex flag \".concat(c))}}catch(u){a.e(u)}finally{a.f()}return{pattern:u,flags:d}}(u,d),p=D.pattern,b=(0,m.default)(D);l<p.length;){do{(t=runTokens(p,b,l,c,a))&&t.reparse&&(p=(0,E.default)(p).call(p,0,l)+t.output+(0,E.default)(p).call(p,l+t.matchLength))}while(t&&t.reparse);if(t)i+=t.output,l+=t.matchLength||1;else{var A=XRegExp.exec(p,_[c],l,\"sticky\"),C=(0,y.default)(A,1)[0];i+=C,l+=C.length,\"[\"===C&&c===O?c=R:\"]\"===C&&c===R&&(c=O)}}k[u][d]={pattern:i.replace(/(?:\\(\\?:\\))+/g,\"(?:)\"),flags:b.replace(G,\"\"),captures:a.hasNamedCapture?a.captureNames:null}}var h=k[u][d];return augment(new RegExp(h.pattern,(0,m.default)(h)),h.captures,u,d)}XRegExp.prototype=/(?:)/,XRegExp.version=\"5.1.1\",XRegExp._clipDuplicates=clipDuplicates,XRegExp._hasNativeFlag=hasNativeFlag,XRegExp._dec=dec,XRegExp._hex=hex,XRegExp._pad4=pad4,XRegExp.addToken=function(u,d,t){var a=(t=t||{}).optionalFlags;if(t.flag&&registerFlag(t.flag),a){var c,i=_createForOfIteratorHelper(a=a.split(\"\"));try{for(i.s();!(c=i.n()).done;){registerFlag(c.value)}}catch(u){i.e(u)}finally{i.f()}}S.push({regex:copyRegex(u,{addG:!0,addY:M,isInternalOnly:!0}),handler:d,scope:t.scope||O,flag:t.flag,reparse:t.reparse,leadChar:t.leadChar}),XRegExp.cache.flush(\"patterns\")},XRegExp.cache=function(u,d){return j[u]||(j[u]={}),j[u][d]||(j[u][d]=XRegExp(u,d))},XRegExp.cache.flush=function(u){\"patterns\"===u?k={}:j={}},XRegExp.escape=function(u){return String(nullThrows(u)).replace(/[\\\\\\[\\]{}()*+?.^$|]/g,\"\\\\$&\").replace(/[\\s#\\-,]/g,(function(u){return\"\\\\u\".concat(pad4(hex(u.charCodeAt(0))))}))},XRegExp.exec=function(u,d,t,a){var c,i,l=\"g\",D=!1;(c=M&&!!(a||d.sticky&&!1!==a))?l+=\"y\":a&&(D=!0,l+=\"FakeY\"),d.xregexp=d.xregexp||{};var p=d.xregexp[l]||(d.xregexp[l]=copyRegex(d,{addG:!0,addY:c,source:D?\"\".concat(d.source,\"|()\"):void 0,removeY:!1===a,isInternalOnly:!0}));return t=t||0,p.lastIndex=t,i=w.exec.call(p,u),D&&i&&\"\"===i.pop()&&(i=null),d.global&&(d.lastIndex=i?p.lastIndex:0),i},XRegExp.forEach=function(u,d,t){for(var a,c=0,i=-1;a=XRegExp.exec(u,d,c);)t(a,++i,u,d),c=a.index+(a[0].length||1)},XRegExp.globalize=function(u){return copyRegex(u,{addG:!0})},XRegExp.install=function(u){u=prepareOptions(u),!B.astral&&u.astral&&setAstral(!0),!B.namespacing&&u.namespacing&&setNamespacing(!0)},XRegExp.isInstalled=function(u){return!!B[u]},XRegExp.isRegExp=function(u){return\"[object RegExp]\"===Object.prototype.toString.call(u)},XRegExp.match=function(u,d,t){var a=d.global&&\"one\"!==t||\"all\"===t,c=(a?\"g\":\"\")+(d.sticky?\"y\":\"\")||\"noGY\";d.xregexp=d.xregexp||{};var i=d.xregexp[c]||(d.xregexp[c]=copyRegex(d,{addG:!!a,removeG:\"one\"===t,isInternalOnly:!0})),l=String(nullThrows(u)).match(i);return d.global&&(d.lastIndex=\"one\"===t&&l?l.index+l[0].length:0),a?l||[]:l&&l[0]},XRegExp.matchChain=function(u,d){return function recurseChain(u,t){var a=d[t].regex?d[t]:{regex:d[t]},c=[];function addMatch(u){if(a.backref){var d=\"Backreference to undefined group: \".concat(a.backref),t=isNaN(a.backref);if(t&&XRegExp.isInstalled(\"namespacing\")){if(!u.groups||!(a.backref in u.groups))throw new ReferenceError(d)}else if(!u.hasOwnProperty(a.backref))throw new ReferenceError(d);var i=t&&XRegExp.isInstalled(\"namespacing\")?u.groups[a.backref]:u[a.backref];c.push(i||\"\")}else c.push(u[0])}var i,l=_createForOfIteratorHelper(u);try{for(l.s();!(i=l.n()).done;){var D=i.value;(0,h.default)(XRegExp).call(XRegExp,D,a.regex,addMatch)}}catch(u){l.e(u)}finally{l.f()}return t!==d.length-1&&c.length?recurseChain(c,t+1):c}([u],0)},XRegExp.replace=function(u,d,t,a){var c=XRegExp.isRegExp(d),i=d.global&&\"one\"!==a||\"all\"===a,l=(i?\"g\":\"\")+(d.sticky?\"y\":\"\")||\"noGY\",D=d;c?(d.xregexp=d.xregexp||{},D=d.xregexp[l]||(d.xregexp[l]=copyRegex(d,{addG:!!i,removeG:\"one\"===a,isInternalOnly:!0}))):i&&(D=new RegExp(XRegExp.escape(String(d)),\"g\"));var p=w.replace.call(nullThrows(u),D,t);return c&&d.global&&(d.lastIndex=0),p},XRegExp.replaceEach=function(u,d){var t,a=_createForOfIteratorHelper(d);try{for(a.s();!(t=a.n()).done;){var c=t.value;u=XRegExp.replace(u,c[0],c[1],c[2])}}catch(u){a.e(u)}finally{a.f()}return u},XRegExp.split=function(u,d,t){return w.split.call(nullThrows(u),d,t)},XRegExp.test=function(u,d,t,a){return!!XRegExp.exec(u,d,t,a)},XRegExp.uninstall=function(u){u=prepareOptions(u),B.astral&&u.astral&&setAstral(!1),B.namespacing&&u.namespacing&&setNamespacing(!1)},XRegExp.union=function(u,d,t){var a,c,i=(t=t||{}).conjunction||\"or\",l=0;function rewrite(u,d,t){var i=c[l-a];if(d){if(++l,i)return\"(?<\".concat(i,\">\")}else if(t)return\"\\\\\".concat(+t+a);return u}if(!isType(u,\"Array\")||!u.length)throw new TypeError(\"Must provide a nonempty array of patterns to merge\");var D,p=/(\\()(?!\\?)|\\\\([1-9]\\d*)|\\\\[\\s\\S]|\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/g,b=[],y=_createForOfIteratorHelper(u);try{for(y.s();!(D=y.n()).done;){var m=D.value;XRegExp.isRegExp(m)?(a=l,c=m.xregexp&&m.xregexp.captureNames||[],b.push(XRegExp(m.source).source.replace(p,rewrite))):b.push(XRegExp.escape(m))}}catch(u){y.e(u)}finally{y.f()}var A=\"none\"===i?\"\":\"|\";return XRegExp(b.join(A),d)},w.exec=function(u){var d=this.lastIndex,t=RegExp.prototype.exec.apply(this,arguments);if(t){if(!I&&t.length>1&&-1!==(0,g.default)(t).call(t,\"\")){var a,c=copyRegex(this,{removeG:!0,isInternalOnly:!0});(0,E.default)(a=String(u)).call(a,t.index).replace(c,(function(){for(var u=arguments.length,d=1;d<u-2;++d)void 0===(d<0||arguments.length<=d?void 0:arguments[d])&&(t[d]=void 0)}))}if(this.xregexp&&this.xregexp.captureNames){var i=t;XRegExp.isInstalled(\"namespacing\")&&(t.groups=(0,x.default)(null),i=t.groups);for(var l=1;l<t.length;++l){var D=this.xregexp.captureNames[l-1];D&&(i[D]=t[l])}}else!t.groups&&XRegExp.isInstalled(\"namespacing\")&&(t.groups=void 0);this.global&&!t[0].length&&this.lastIndex>t.index&&(this.lastIndex=t.index)}return this.global||(this.lastIndex=d),t},w.test=function(u){return!!w.exec.call(this,u)},w.match=function(u){if(XRegExp.isRegExp(u)){if(u.global){var d=String.prototype.match.apply(this,arguments);return u.lastIndex=0,d}}else u=new RegExp(u);return w.exec.call(u,nullThrows(this))},w.replace=function(u,d){var t,a,c,i=XRegExp.isRegExp(u);return i?(u.xregexp&&(a=u.xregexp.captureNames),t=u.lastIndex):u+=\"\",c=isType(d,\"Function\")?String(this).replace(u,(function(){for(var u=arguments.length,t=new Array(u),c=0;c<u;c++)t[c]=arguments[c];if(a){var i;XRegExp.isInstalled(\"namespacing\")?(i=(0,x.default)(null),t.push(i)):(t[0]=new String(t[0]),i=t[0]);for(var l=0;l<a.length;++l)a[l]&&(i[a[l]]=t[l+1])}return d.apply(void 0,t)})):String(nullThrows(this)).replace(u,(function(){for(var u=arguments.length,t=new Array(u),c=0;c<u;c++)t[c]=arguments[c];return String(d).replace(T,replacer);function replacer(u,d,c,i){d=d||c;var l,D,p=isType(t[t.length-1],\"Object\")?4:3,b=t.length-p;if(d){if(/^\\d+$/.test(d)){var y=+d;if(y<=b)return t[y]||\"\"}var m=a?(0,g.default)(a).call(a,d):-1;if(m<0)throw new SyntaxError(\"Backreference to undefined group \".concat(u));return t[m+1]||\"\"}if(\"\"===i||\" \"===i)throw new SyntaxError(\"Invalid token \".concat(u));if(\"&\"===i||0==+i)return t[0];if(\"$\"===i)return\"$\";if(\"`\"===i)return(0,E.default)(l=t[t.length-1]).call(l,0,t[t.length-2]);if(\"'\"===i)return(0,E.default)(D=t[t.length-1]).call(D,t[t.length-2]+t[0].length);if(i=+i,!isNaN(i)){if(i>b)throw new SyntaxError(\"Backreference to undefined group \".concat(u));return t[i]||\"\"}throw new SyntaxError(\"Invalid token \".concat(u))}})),i&&(u.global?u.lastIndex=0:u.lastIndex=t),c},w.split=function(u,d){if(!XRegExp.isRegExp(u))return String.prototype.split.apply(this,arguments);var t,a=String(this),c=[],i=u.lastIndex,l=0;return d=(void 0===d?-1:d)>>>0,(0,h.default)(XRegExp).call(XRegExp,a,u,(function(u){u.index+u[0].length>l&&(c.push((0,E.default)(a).call(a,l,u.index)),u.length>1&&u.index<a.length&&Array.prototype.push.apply(c,(0,E.default)(u).call(u,1)),t=u[0].length,l=u.index+t)})),l===a.length?u.test(\"\")&&!t||c.push(\"\"):c.push((0,E.default)(a).call(a,l)),u.lastIndex=i,c.length>d?(0,E.default)(c).call(c,0,d):c},XRegExp.addToken(/\\\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|x(?![\\dA-Fa-f]{2}))/,(function(u,d){if(\"B\"===u[1]&&d===O)return u[0];throw new SyntaxError(\"Invalid escape \".concat(u[0]))}),{scope:\"all\",leadChar:\"\\\\\"}),XRegExp.addToken(/\\\\u{([\\dA-Fa-f]+)}/,(function(u,d,t){var a=dec(u[1]);if(a>1114111)throw new SyntaxError(\"Invalid Unicode code point \".concat(u[0]));if(a<=65535)return\"\\\\u\".concat(pad4(hex(a)));if(N&&-1!==(0,g.default)(t).call(t,\"u\"))return u[0];throw new SyntaxError(\"Cannot use Unicode code point above \\\\u{FFFF} without flag u\")}),{scope:\"all\",leadChar:\"\\\\\"}),XRegExp.addToken(/\\(\\?#[^)]*\\)/,getContextualTokenSeparator,{leadChar:\"(\"}),XRegExp.addToken(/\\s+|#[^\\n]*\\n?/,getContextualTokenSeparator,{flag:\"x\"}),L||XRegExp.addToken(/\\./,(function(){return\"[\\\\s\\\\S]\"}),{flag:\"s\",leadChar:\".\"}),XRegExp.addToken(/\\\\k<([^>]+)>/,(function(u){var d,t,a=isNaN(u[1])?(0,g.default)(d=this.captureNames).call(d,u[1])+1:+u[1],c=u.index+u[0].length;if(!a||a>this.captureNames.length)throw new SyntaxError(\"Backreference to undefined group \".concat(u[0]));return(0,v.default)(t=\"\\\\\".concat(a)).call(t,c===u.input.length||isNaN(u.input[c])?\"\":\"(?:)\")}),{leadChar:\"\\\\\"}),XRegExp.addToken(/\\\\(\\d+)/,(function(u,d){if(!(d===O&&/^[1-9]/.test(u[1])&&+u[1]<=this.captureNames.length)&&\"0\"!==u[1])throw new SyntaxError(\"Cannot use octal escape or backreference to undefined group \".concat(u[0]));return u[0]}),{scope:\"all\",leadChar:\"\\\\\"}),XRegExp.addToken(/\\(\\?P?<((?:[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])(?:[\\$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDF70-\\uDF85\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A]|\\uDB40[\\uDD00-\\uDDEF])*)>/,(function(u){var d;if(!XRegExp.isInstalled(\"namespacing\")&&(\"length\"===u[1]||\"__proto__\"===u[1]))throw new SyntaxError(\"Cannot use reserved word as capture name \".concat(u[0]));if(-1!==(0,g.default)(d=this.captureNames).call(d,u[1]))throw new SyntaxError(\"Cannot use same name for multiple groups \".concat(u[0]));return this.captureNames.push(u[1]),this.hasNamedCapture=!0,\"(\"}),{leadChar:\"(\"}),XRegExp.addToken(/\\((?!\\?)/,(function(u,d,t){return-1!==(0,g.default)(t).call(t,\"n\")?\"(?:\":(this.captureNames.push(null),\"(\")}),{optionalFlags:\"n\",leadChar:\"(\"});var q=XRegExp;t.default=q,d.exports=t.default},{\"@babel/runtime-corejs3/core-js-stable/array/from\":5,\"@babel/runtime-corejs3/core-js-stable/array/is-array\":6,\"@babel/runtime-corejs3/core-js-stable/instance/concat\":7,\"@babel/runtime-corejs3/core-js-stable/instance/flags\":8,\"@babel/runtime-corejs3/core-js-stable/instance/for-each\":9,\"@babel/runtime-corejs3/core-js-stable/instance/index-of\":10,\"@babel/runtime-corejs3/core-js-stable/instance/slice\":11,\"@babel/runtime-corejs3/core-js-stable/instance/sort\":12,\"@babel/runtime-corejs3/core-js-stable/object/create\":13,\"@babel/runtime-corejs3/core-js-stable/object/define-property\":14,\"@babel/runtime-corejs3/core-js-stable/parse-int\":15,\"@babel/runtime-corejs3/core-js-stable/symbol\":16,\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/helpers/interopRequireDefault\":24,\"@babel/runtime-corejs3/helpers/slicedToArray\":27}],5:[function(u,d,t){d.exports=u(\"core-js-pure/stable/array/from\")},{\"core-js-pure/stable/array/from\":208}],6:[function(u,d,t){d.exports=u(\"core-js-pure/stable/array/is-array\")},{\"core-js-pure/stable/array/is-array\":209}],7:[function(u,d,t){d.exports=u(\"core-js-pure/stable/instance/concat\")},{\"core-js-pure/stable/instance/concat\":212}],8:[function(u,d,t){d.exports=u(\"core-js-pure/stable/instance/flags\")},{\"core-js-pure/stable/instance/flags\":213}],9:[function(u,d,t){d.exports=u(\"core-js-pure/stable/instance/for-each\")},{\"core-js-pure/stable/instance/for-each\":214}],10:[function(u,d,t){d.exports=u(\"core-js-pure/stable/instance/index-of\")},{\"core-js-pure/stable/instance/index-of\":215}],11:[function(u,d,t){d.exports=u(\"core-js-pure/stable/instance/slice\")},{\"core-js-pure/stable/instance/slice\":216}],12:[function(u,d,t){d.exports=u(\"core-js-pure/stable/instance/sort\")},{\"core-js-pure/stable/instance/sort\":217}],13:[function(u,d,t){d.exports=u(\"core-js-pure/stable/object/create\")},{\"core-js-pure/stable/object/create\":218}],14:[function(u,d,t){d.exports=u(\"core-js-pure/stable/object/define-property\")},{\"core-js-pure/stable/object/define-property\":219}],15:[function(u,d,t){d.exports=u(\"core-js-pure/stable/parse-int\")},{\"core-js-pure/stable/parse-int\":220}],16:[function(u,d,t){d.exports=u(\"core-js-pure/stable/symbol\")},{\"core-js-pure/stable/symbol\":221}],17:[function(u,d,t){d.exports=u(\"core-js-pure/features/array/from\")},{\"core-js-pure/features/array/from\":52}],18:[function(u,d,t){d.exports=u(\"core-js-pure/features/array/is-array\")},{\"core-js-pure/features/array/is-array\":53}],19:[function(u,d,t){d.exports=u(\"core-js-pure/features/get-iterator-method\")},{\"core-js-pure/features/get-iterator-method\":54}],20:[function(u,d,t){d.exports=u(\"core-js-pure/features/instance/slice\")},{\"core-js-pure/features/instance/slice\":55}],21:[function(u,d,t){d.exports=u(\"core-js-pure/features/symbol\")},{\"core-js-pure/features/symbol\":56}],22:[function(u,d,t){d.exports=function _arrayLikeToArray(u,d){(null==d||d>u.length)&&(d=u.length);for(var t=0,a=new Array(d);t<d;t++)a[t]=u[t];return a},d.exports.__esModule=!0,d.exports.default=d.exports},{}],23:[function(u,d,t){var a=u(\"@babel/runtime-corejs3/core-js/array/is-array\");d.exports=function _arrayWithHoles(u){if(a(u))return u},d.exports.__esModule=!0,d.exports.default=d.exports},{\"@babel/runtime-corejs3/core-js/array/is-array\":18}],24:[function(u,d,t){d.exports=function _interopRequireDefault(u){return u&&u.__esModule?u:{default:u}},d.exports.__esModule=!0,d.exports.default=d.exports},{}],25:[function(u,d,t){var a=u(\"@babel/runtime-corejs3/core-js/symbol\"),c=u(\"@babel/runtime-corejs3/core-js/get-iterator-method\");d.exports=function _iterableToArrayLimit(u,d){var t=null==u?null:void 0!==a&&c(u)||u[\"@@iterator\"];if(null!=t){var i,l,D=[],p=!0,b=!1;try{for(t=t.call(u);!(p=(i=t.next()).done)&&(D.push(i.value),!d||D.length!==d);p=!0);}catch(u){b=!0,l=u}finally{try{p||null==t.return||t.return()}finally{if(b)throw l}}return D}},d.exports.__esModule=!0,d.exports.default=d.exports},{\"@babel/runtime-corejs3/core-js/get-iterator-method\":19,\"@babel/runtime-corejs3/core-js/symbol\":21}],26:[function(u,d,t){d.exports=function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")},d.exports.__esModule=!0,d.exports.default=d.exports},{}],27:[function(u,d,t){var a=u(\"./arrayWithHoles.js\"),c=u(\"./iterableToArrayLimit.js\"),i=u(\"./unsupportedIterableToArray.js\"),l=u(\"./nonIterableRest.js\");d.exports=function _slicedToArray(u,d){return a(u)||c(u,d)||i(u,d)||l()},d.exports.__esModule=!0,d.exports.default=d.exports},{\"./arrayWithHoles.js\":23,\"./iterableToArrayLimit.js\":25,\"./nonIterableRest.js\":26,\"./unsupportedIterableToArray.js\":28}],28:[function(u,d,t){var a=u(\"@babel/runtime-corejs3/core-js/instance/slice\"),c=u(\"@babel/runtime-corejs3/core-js/array/from\"),i=u(\"./arrayLikeToArray.js\");d.exports=function _unsupportedIterableToArray(u,d){var t;if(u){if(\"string\"==typeof u)return i(u,d);var l=a(t=Object.prototype.toString.call(u)).call(t,8,-1);return\"Object\"===l&&u.constructor&&(l=u.constructor.name),\"Map\"===l||\"Set\"===l?c(u):\"Arguments\"===l||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?i(u,d):void 0}},d.exports.__esModule=!0,d.exports.default=d.exports},{\"./arrayLikeToArray.js\":22,\"@babel/runtime-corejs3/core-js/array/from\":17,\"@babel/runtime-corejs3/core-js/instance/slice\":20}],29:[function(u,d,t){var a=u(\"../../stable/array/from\");d.exports=a},{\"../../stable/array/from\":208}],30:[function(u,d,t){var a=u(\"../../stable/array/is-array\");d.exports=a},{\"../../stable/array/is-array\":209}],31:[function(u,d,t){var a=u(\"../stable/get-iterator-method\");d.exports=a},{\"../stable/get-iterator-method\":211}],32:[function(u,d,t){var a=u(\"../../stable/instance/slice\");d.exports=a},{\"../../stable/instance/slice\":216}],33:[function(u,d,t){var a=u(\"../../stable/symbol\");d.exports=a},{\"../../stable/symbol\":221}],34:[function(u,d,t){u(\"../../modules/es.string.iterator\"),u(\"../../modules/es.array.from\");var a=u(\"../../internals/path\");d.exports=a.Array.from},{\"../../internals/path\":142,\"../../modules/es.array.from\":170,\"../../modules/es.string.iterator\":184}],35:[function(u,d,t){u(\"../../modules/es.array.is-array\");var a=u(\"../../internals/path\");d.exports=a.Array.isArray},{\"../../internals/path\":142,\"../../modules/es.array.is-array\":172}],36:[function(u,d,t){u(\"../../../modules/es.array.concat\");var a=u(\"../../../internals/entry-virtual\");d.exports=a(\"Array\").concat},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.concat\":168}],37:[function(u,d,t){u(\"../../../modules/es.array.for-each\");var a=u(\"../../../internals/entry-virtual\");d.exports=a(\"Array\").forEach},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.for-each\":169}],38:[function(u,d,t){u(\"../../../modules/es.array.index-of\");var a=u(\"../../../internals/entry-virtual\");d.exports=a(\"Array\").indexOf},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.index-of\":171}],39:[function(u,d,t){u(\"../../../modules/es.array.slice\");var a=u(\"../../../internals/entry-virtual\");d.exports=a(\"Array\").slice},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.slice\":174}],40:[function(u,d,t){u(\"../../../modules/es.array.sort\");var a=u(\"../../../internals/entry-virtual\");d.exports=a(\"Array\").sort},{\"../../../internals/entry-virtual\":91,\"../../../modules/es.array.sort\":175}],41:[function(u,d,t){u(\"../modules/es.array.iterator\"),u(\"../modules/es.string.iterator\");var a=u(\"../internals/get-iterator-method\");d.exports=a},{\"../internals/get-iterator-method\":101,\"../modules/es.array.iterator\":173,\"../modules/es.string.iterator\":184}],42:[function(u,d,t){var a=u(\"../../internals/object-is-prototype-of\"),c=u(\"../array/virtual/concat\"),i=Array.prototype;d.exports=function(u){var d=u.concat;return u===i||a(i,u)&&d===i.concat?c:d}},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/concat\":36}],43:[function(u,d,t){var a=u(\"../../internals/object-is-prototype-of\"),c=u(\"../regexp/flags\"),i=RegExp.prototype;d.exports=function(u){return u===i||a(i,u)?c(u):u.flags}},{\"../../internals/object-is-prototype-of\":135,\"../regexp/flags\":50}],44:[function(u,d,t){var a=u(\"../../internals/object-is-prototype-of\"),c=u(\"../array/virtual/index-of\"),i=Array.prototype;d.exports=function(u){var d=u.indexOf;return u===i||a(i,u)&&d===i.indexOf?c:d}},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/index-of\":38}],45:[function(u,d,t){var a=u(\"../../internals/object-is-prototype-of\"),c=u(\"../array/virtual/slice\"),i=Array.prototype;d.exports=function(u){var d=u.slice;return u===i||a(i,u)&&d===i.slice?c:d}},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/slice\":39}],46:[function(u,d,t){var a=u(\"../../internals/object-is-prototype-of\"),c=u(\"../array/virtual/sort\"),i=Array.prototype;d.exports=function(u){var d=u.sort;return u===i||a(i,u)&&d===i.sort?c:d}},{\"../../internals/object-is-prototype-of\":135,\"../array/virtual/sort\":40}],47:[function(u,d,t){u(\"../../modules/es.object.create\");var a=u(\"../../internals/path\").Object;d.exports=function create(u,d){return a.create(u,d)}},{\"../../internals/path\":142,\"../../modules/es.object.create\":178}],48:[function(u,d,t){u(\"../../modules/es.object.define-property\");var a=u(\"../../internals/path\").Object,c=d.exports=function defineProperty(u,d,t){return a.defineProperty(u,d,t)};a.defineProperty.sham&&(c.sham=!0)},{\"../../internals/path\":142,\"../../modules/es.object.define-property\":179}],49:[function(u,d,t){u(\"../modules/es.parse-int\");var a=u(\"../internals/path\");d.exports=a.parseInt},{\"../internals/path\":142,\"../modules/es.parse-int\":181}],50:[function(u,d,t){u(\"../../modules/es.regexp.flags\");var a=u(\"../../internals/function-uncurry-this\"),c=u(\"../../internals/regexp-flags\");d.exports=a(c)},{\"../../internals/function-uncurry-this\":99,\"../../internals/regexp-flags\":144,\"../../modules/es.regexp.flags\":183}],51:[function(u,d,t){u(\"../../modules/es.array.concat\"),u(\"../../modules/es.object.to-string\"),u(\"../../modules/es.symbol\"),u(\"../../modules/es.symbol.async-iterator\"),u(\"../../modules/es.symbol.description\"),u(\"../../modules/es.symbol.has-instance\"),u(\"../../modules/es.symbol.is-concat-spreadable\"),u(\"../../modules/es.symbol.iterator\"),u(\"../../modules/es.symbol.match\"),u(\"../../modules/es.symbol.match-all\"),u(\"../../modules/es.symbol.replace\"),u(\"../../modules/es.symbol.search\"),u(\"../../modules/es.symbol.species\"),u(\"../../modules/es.symbol.split\"),u(\"../../modules/es.symbol.to-primitive\"),u(\"../../modules/es.symbol.to-string-tag\"),u(\"../../modules/es.symbol.unscopables\"),u(\"../../modules/es.json.to-string-tag\"),u(\"../../modules/es.math.to-string-tag\"),u(\"../../modules/es.reflect.to-string-tag\");var a=u(\"../../internals/path\");d.exports=a.Symbol},{\"../../internals/path\":142,\"../../modules/es.array.concat\":168,\"../../modules/es.json.to-string-tag\":176,\"../../modules/es.math.to-string-tag\":177,\"../../modules/es.object.to-string\":180,\"../../modules/es.reflect.to-string-tag\":182,\"../../modules/es.symbol\":190,\"../../modules/es.symbol.async-iterator\":185,\"../../modules/es.symbol.description\":186,\"../../modules/es.symbol.has-instance\":187,\"../../modules/es.symbol.is-concat-spreadable\":188,\"../../modules/es.symbol.iterator\":189,\"../../modules/es.symbol.match\":192,\"../../modules/es.symbol.match-all\":191,\"../../modules/es.symbol.replace\":193,\"../../modules/es.symbol.search\":194,\"../../modules/es.symbol.species\":195,\"../../modules/es.symbol.split\":196,\"../../modules/es.symbol.to-primitive\":197,\"../../modules/es.symbol.to-string-tag\":198,\"../../modules/es.symbol.unscopables\":199}],52:[function(u,d,t){var a=u(\"../../actual/array/from\");d.exports=a},{\"../../actual/array/from\":29}],53:[function(u,d,t){var a=u(\"../../actual/array/is-array\");d.exports=a},{\"../../actual/array/is-array\":30}],54:[function(u,d,t){var a=u(\"../actual/get-iterator-method\");d.exports=a},{\"../actual/get-iterator-method\":31}],55:[function(u,d,t){var a=u(\"../../actual/instance/slice\");d.exports=a},{\"../../actual/instance/slice\":32}],56:[function(u,d,t){var a=u(\"../../actual/symbol\");u(\"../../modules/esnext.symbol.async-dispose\"),u(\"../../modules/esnext.symbol.dispose\"),u(\"../../modules/esnext.symbol.matcher\"),u(\"../../modules/esnext.symbol.metadata\"),u(\"../../modules/esnext.symbol.observable\"),u(\"../../modules/esnext.symbol.pattern-match\"),u(\"../../modules/esnext.symbol.replace-all\"),d.exports=a},{\"../../actual/symbol\":33,\"../../modules/esnext.symbol.async-dispose\":200,\"../../modules/esnext.symbol.dispose\":201,\"../../modules/esnext.symbol.matcher\":202,\"../../modules/esnext.symbol.metadata\":203,\"../../modules/esnext.symbol.observable\":204,\"../../modules/esnext.symbol.pattern-match\":205,\"../../modules/esnext.symbol.replace-all\":206}],57:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/is-callable\"),i=u(\"../internals/try-to-string\"),l=a.TypeError;d.exports=function(u){if(c(u))return u;throw l(i(u)+\" is not a function\")}},{\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/try-to-string\":162}],58:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/is-callable\"),i=a.String,l=a.TypeError;d.exports=function(u){if(\"object\"==typeof u||c(u))return u;throw l(\"Can't set \"+i(u)+\" as a prototype\")}},{\"../internals/global\":104,\"../internals/is-callable\":114}],59:[function(u,d,t){d.exports=function(){}},{}],60:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/is-object\"),i=a.String,l=a.TypeError;d.exports=function(u){if(c(u))return u;throw l(i(u)+\" is not an object\")}},{\"../internals/global\":104,\"../internals/is-object\":117}],61:[function(u,d,t){\"use strict\";var a=u(\"../internals/array-iteration\").forEach,c=u(\"../internals/array-method-is-strict\")(\"forEach\");d.exports=c?[].forEach:function forEach(u){return a(this,u,arguments.length>1?arguments[1]:void 0)}},{\"../internals/array-iteration\":64,\"../internals/array-method-is-strict\":66}],62:[function(u,d,t){\"use strict\";var a=u(\"../internals/global\"),c=u(\"../internals/function-bind-context\"),i=u(\"../internals/function-call\"),l=u(\"../internals/to-object\"),D=u(\"../internals/call-with-safe-iteration-closing\"),p=u(\"../internals/is-array-iterator-method\"),b=u(\"../internals/is-constructor\"),y=u(\"../internals/length-of-array-like\"),m=u(\"../internals/create-property\"),A=u(\"../internals/get-iterator\"),E=u(\"../internals/get-iterator-method\"),C=a.Array;d.exports=function from(u){var d=l(u),t=b(this),a=arguments.length,g=a>1?arguments[1]:void 0,h=void 0!==g;h&&(g=c(g,a>2?arguments[2]:void 0));var x,v,B,w,j,k,S=E(d),O=0;if(!S||this==C&&p(S))for(x=y(d),v=t?new this(x):C(x);x>O;O++)k=h?g(d[O],O):d[O],m(v,O,k);else for(j=(w=A(d,S)).next,v=t?new this:[];!(B=i(j,w)).done;O++)k=h?D(w,g,[B.value,O],!0):B.value,m(v,O,k);return v.length=O,v}},{\"../internals/call-with-safe-iteration-closing\":72,\"../internals/create-property\":80,\"../internals/function-bind-context\":96,\"../internals/function-call\":97,\"../internals/get-iterator\":102,\"../internals/get-iterator-method\":101,\"../internals/global\":104,\"../internals/is-array-iterator-method\":112,\"../internals/is-constructor\":115,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157}],63:[function(u,d,t){var a=u(\"../internals/to-indexed-object\"),c=u(\"../internals/to-absolute-index\"),i=u(\"../internals/length-of-array-like\"),createMethod=function(u){return function(d,t,l){var D,p=a(d),b=i(p),y=c(l,b);if(u&&t!=t){for(;b>y;)if((D=p[y++])!=D)return!0}else for(;b>y;y++)if((u||y in p)&&p[y]===t)return u||y||0;return!u&&-1}};d.exports={includes:createMethod(!0),indexOf:createMethod(!1)}},{\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153,\"../internals/to-indexed-object\":154}],64:[function(u,d,t){var a=u(\"../internals/function-bind-context\"),c=u(\"../internals/function-uncurry-this\"),i=u(\"../internals/indexed-object\"),l=u(\"../internals/to-object\"),D=u(\"../internals/length-of-array-like\"),p=u(\"../internals/array-species-create\"),b=c([].push),createMethod=function(u){var d=1==u,t=2==u,c=3==u,y=4==u,m=6==u,A=7==u,E=5==u||m;return function(C,g,h,x){for(var v,B,w=l(C),j=i(w),k=a(g,h),S=D(j),O=0,R=x||p,_=d?R(C,S):t||A?R(C,0):void 0;S>O;O++)if((E||O in j)&&(B=k(v=j[O],O,w),u))if(d)_[O]=B;else if(B)switch(u){case 3:return!0;case 5:return v;case 6:return O;case 2:b(_,v)}else switch(u){case 4:return!1;case 7:b(_,v)}return m?-1:c||y?y:_}};d.exports={forEach:createMethod(0),map:createMethod(1),filter:createMethod(2),some:createMethod(3),every:createMethod(4),find:createMethod(5),findIndex:createMethod(6),filterReject:createMethod(7)}},{\"../internals/array-species-create\":71,\"../internals/function-bind-context\":96,\"../internals/function-uncurry-this\":99,\"../internals/indexed-object\":109,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157}],65:[function(u,d,t){var a=u(\"../internals/fails\"),c=u(\"../internals/well-known-symbol\"),i=u(\"../internals/engine-v8-version\"),l=c(\"species\");d.exports=function(u){return i>=51||!a((function(){var d=[];return(d.constructor={})[l]=function(){return{foo:1}},1!==d[u](Boolean).foo}))}},{\"../internals/engine-v8-version\":89,\"../internals/fails\":94,\"../internals/well-known-symbol\":166}],66:[function(u,d,t){\"use strict\";var a=u(\"../internals/fails\");d.exports=function(u,d){var t=[][u];return!!t&&a((function(){t.call(null,d||function(){throw 1},1)}))}},{\"../internals/fails\":94}],67:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/to-absolute-index\"),i=u(\"../internals/length-of-array-like\"),l=u(\"../internals/create-property\"),D=a.Array,p=Math.max;d.exports=function(u,d,t){for(var a=i(u),b=c(d,a),y=c(void 0===t?a:t,a),m=D(p(y-b,0)),A=0;b<y;b++,A++)l(m,A,u[b]);return m.length=A,m}},{\"../internals/create-property\":80,\"../internals/global\":104,\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153}],68:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\");d.exports=a([].slice)},{\"../internals/function-uncurry-this\":99}],69:[function(u,d,t){var a=u(\"../internals/array-slice-simple\"),c=Math.floor,mergeSort=function(u,d){var t=u.length,i=c(t/2);return t<8?insertionSort(u,d):merge(u,mergeSort(a(u,0,i),d),mergeSort(a(u,i),d),d)},insertionSort=function(u,d){for(var t,a,c=u.length,i=1;i<c;){for(a=i,t=u[i];a&&d(u[a-1],t)>0;)u[a]=u[--a];a!==i++&&(u[a]=t)}return u},merge=function(u,d,t,a){for(var c=d.length,i=t.length,l=0,D=0;l<c||D<i;)u[l+D]=l<c&&D<i?a(d[l],t[D])<=0?d[l++]:t[D++]:l<c?d[l++]:t[D++];return u};d.exports=mergeSort},{\"../internals/array-slice-simple\":67}],70:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/is-array\"),i=u(\"../internals/is-constructor\"),l=u(\"../internals/is-object\"),D=u(\"../internals/well-known-symbol\")(\"species\"),p=a.Array;d.exports=function(u){var d;return c(u)&&(d=u.constructor,(i(d)&&(d===p||c(d.prototype))||l(d)&&null===(d=d[D]))&&(d=void 0)),void 0===d?p:d}},{\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-constructor\":115,\"../internals/is-object\":117,\"../internals/well-known-symbol\":166}],71:[function(u,d,t){var a=u(\"../internals/array-species-constructor\");d.exports=function(u,d){return new(a(u))(0===d?0:d)}},{\"../internals/array-species-constructor\":70}],72:[function(u,d,t){var a=u(\"../internals/an-object\"),c=u(\"../internals/iterator-close\");d.exports=function(u,d,t,i){try{return i?d(a(t)[0],t[1]):d(t)}catch(d){c(u,\"throw\",d)}}},{\"../internals/an-object\":60,\"../internals/iterator-close\":120}],73:[function(u,d,t){var a=u(\"../internals/well-known-symbol\")(\"iterator\"),c=!1;try{var i=0,l={next:function(){return{done:!!i++}},return:function(){c=!0}};l[a]=function(){return this},Array.from(l,(function(){throw 2}))}catch(u){}d.exports=function(u,d){if(!d&&!c)return!1;var t=!1;try{var i={};i[a]=function(){return{next:function(){return{done:t=!0}}}},u(i)}catch(u){}return t}},{\"../internals/well-known-symbol\":166}],74:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=a({}.toString),i=a(\"\".slice);d.exports=function(u){return i(c(u),8,-1)}},{\"../internals/function-uncurry-this\":99}],75:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/to-string-tag-support\"),i=u(\"../internals/is-callable\"),l=u(\"../internals/classof-raw\"),D=u(\"../internals/well-known-symbol\")(\"toStringTag\"),p=a.Object,b=\"Arguments\"==l(function(){return arguments}());d.exports=c?l:function(u){var d,t,a;return void 0===u?\"Undefined\":null===u?\"Null\":\"string\"==typeof(t=function(u,d){try{return u[d]}catch(u){}}(d=p(u),D))?t:b?l(d):\"Object\"==(a=l(d))&&i(d.callee)?\"Arguments\":a}},{\"../internals/classof-raw\":74,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/to-string-tag-support\":160,\"../internals/well-known-symbol\":166}],76:[function(u,d,t){var a=u(\"../internals/fails\");d.exports=!a((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype}))},{\"../internals/fails\":94}],77:[function(u,d,t){\"use strict\";var a=u(\"../internals/iterators-core\").IteratorPrototype,c=u(\"../internals/object-create\"),i=u(\"../internals/create-property-descriptor\"),l=u(\"../internals/set-to-string-tag\"),D=u(\"../internals/iterators\"),returnThis=function(){return this};d.exports=function(u,d,t,p){var b=d+\" Iterator\";return u.prototype=c(a,{next:i(+!p,t)}),l(u,b,!1,!0),D[b]=returnThis,u}},{\"../internals/create-property-descriptor\":79,\"../internals/iterators\":122,\"../internals/iterators-core\":121,\"../internals/object-create\":127,\"../internals/set-to-string-tag\":147}],78:[function(u,d,t){var a=u(\"../internals/descriptors\"),c=u(\"../internals/object-define-property\"),i=u(\"../internals/create-property-descriptor\");d.exports=a?function(u,d,t){return c.f(u,d,i(1,t))}:function(u,d,t){return u[d]=t,u}},{\"../internals/create-property-descriptor\":79,\"../internals/descriptors\":83,\"../internals/object-define-property\":129}],79:[function(u,d,t){d.exports=function(u,d){return{enumerable:!(1&u),configurable:!(2&u),writable:!(4&u),value:d}}},{}],80:[function(u,d,t){\"use strict\";var a=u(\"../internals/to-property-key\"),c=u(\"../internals/object-define-property\"),i=u(\"../internals/create-property-descriptor\");d.exports=function(u,d,t){var l=a(d);l in u?c.f(u,l,i(0,t)):u[l]=t}},{\"../internals/create-property-descriptor\":79,\"../internals/object-define-property\":129,\"../internals/to-property-key\":159}],81:[function(u,d,t){\"use strict\";var a=u(\"../internals/export\"),c=u(\"../internals/function-call\"),i=u(\"../internals/is-pure\"),l=u(\"../internals/function-name\"),D=u(\"../internals/is-callable\"),p=u(\"../internals/create-iterator-constructor\"),b=u(\"../internals/object-get-prototype-of\"),y=u(\"../internals/object-set-prototype-of\"),m=u(\"../internals/set-to-string-tag\"),A=u(\"../internals/create-non-enumerable-property\"),E=u(\"../internals/redefine\"),C=u(\"../internals/well-known-symbol\"),g=u(\"../internals/iterators\"),h=u(\"../internals/iterators-core\"),x=l.PROPER,v=l.CONFIGURABLE,B=h.IteratorPrototype,w=h.BUGGY_SAFARI_ITERATORS,j=C(\"iterator\"),k=\"keys\",S=\"values\",O=\"entries\",returnThis=function(){return this};d.exports=function(u,d,t,l,C,h,R){p(t,d,l);var _,T,I,getIterationMethod=function(u){if(u===C&&M)return M;if(!w&&u in L)return L[u];switch(u){case k:return function keys(){return new t(this,u)};case S:return function values(){return new t(this,u)};case O:return function entries(){return new t(this,u)}}return function(){return new t(this)}},P=d+\" Iterator\",X=!1,L=u.prototype,N=L[j]||L[\"@@iterator\"]||C&&L[C],M=!w&&N||getIterationMethod(C),U=\"Array\"==d&&L.entries||N;if(U&&(_=b(U.call(new u)))!==Object.prototype&&_.next&&(i||b(_)===B||(y?y(_,B):D(_[j])||E(_,j,returnThis)),m(_,P,!0,!0),i&&(g[P]=returnThis)),x&&C==S&&N&&N.name!==S&&(!i&&v?A(L,\"name\",S):(X=!0,M=function values(){return c(N,this)})),C)if(T={values:getIterationMethod(S),keys:h?M:getIterationMethod(k),entries:getIterationMethod(O)},R)for(I in T)(w||X||!(I in L))&&E(L,I,T[I]);else a({target:d,proto:!0,forced:w||X},T);return i&&!R||L[j]===M||E(L,j,M,{name:C}),g[d]=M,T}},{\"../internals/create-iterator-constructor\":77,\"../internals/create-non-enumerable-property\":78,\"../internals/export\":93,\"../internals/function-call\":97,\"../internals/function-name\":98,\"../internals/is-callable\":114,\"../internals/is-pure\":118,\"../internals/iterators\":122,\"../internals/iterators-core\":121,\"../internals/object-get-prototype-of\":134,\"../internals/object-set-prototype-of\":139,\"../internals/redefine\":143,\"../internals/set-to-string-tag\":147,\"../internals/well-known-symbol\":166}],82:[function(u,d,t){var a=u(\"../internals/path\"),c=u(\"../internals/has-own-property\"),i=u(\"../internals/well-known-symbol-wrapped\"),l=u(\"../internals/object-define-property\").f;d.exports=function(u){var d=a.Symbol||(a.Symbol={});c(d,u)||l(d,u,{value:i.f(u)})}},{\"../internals/has-own-property\":105,\"../internals/object-define-property\":129,\"../internals/path\":142,\"../internals/well-known-symbol-wrapped\":165}],83:[function(u,d,t){var a=u(\"../internals/fails\");d.exports=!a((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},{\"../internals/fails\":94}],84:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/is-object\"),i=a.document,l=c(i)&&c(i.createElement);d.exports=function(u){return l?i.createElement(u):{}}},{\"../internals/global\":104,\"../internals/is-object\":117}],85:[function(u,d,t){d.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},{}],86:[function(u,d,t){var a=u(\"../internals/engine-user-agent\").match(/firefox\\/(\\d+)/i);d.exports=!!a&&+a[1]},{\"../internals/engine-user-agent\":88}],87:[function(u,d,t){var a=u(\"../internals/engine-user-agent\");d.exports=/MSIE|Trident/.test(a)},{\"../internals/engine-user-agent\":88}],88:[function(u,d,t){var a=u(\"../internals/get-built-in\");d.exports=a(\"navigator\",\"userAgent\")||\"\"},{\"../internals/get-built-in\":100}],89:[function(u,d,t){var a,c,i=u(\"../internals/global\"),l=u(\"../internals/engine-user-agent\"),D=i.process,p=i.Deno,b=D&&D.versions||p&&p.version,y=b&&b.v8;y&&(c=(a=y.split(\".\"))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!c&&l&&(!(a=l.match(/Edge\\/(\\d+)/))||a[1]>=74)&&(a=l.match(/Chrome\\/(\\d+)/))&&(c=+a[1]),d.exports=c},{\"../internals/engine-user-agent\":88,\"../internals/global\":104}],90:[function(u,d,t){var a=u(\"../internals/engine-user-agent\").match(/AppleWebKit\\/(\\d+)\\./);d.exports=!!a&&+a[1]},{\"../internals/engine-user-agent\":88}],91:[function(u,d,t){var a=u(\"../internals/path\");d.exports=function(u){return a[u+\"Prototype\"]}},{\"../internals/path\":142}],92:[function(u,d,t){d.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},{}],93:[function(u,d,t){\"use strict\";var a=u(\"../internals/global\"),c=u(\"../internals/function-apply\"),i=u(\"../internals/function-uncurry-this\"),l=u(\"../internals/is-callable\"),D=u(\"../internals/object-get-own-property-descriptor\").f,p=u(\"../internals/is-forced\"),b=u(\"../internals/path\"),y=u(\"../internals/function-bind-context\"),m=u(\"../internals/create-non-enumerable-property\"),A=u(\"../internals/has-own-property\"),wrapConstructor=function(u){var Wrapper=function(d,t,a){if(this instanceof Wrapper){switch(arguments.length){case 0:return new u;case 1:return new u(d);case 2:return new u(d,t)}return new u(d,t,a)}return c(u,this,arguments)};return Wrapper.prototype=u.prototype,Wrapper};d.exports=function(u,d){var t,c,E,C,g,h,x,v,B=u.target,w=u.global,j=u.stat,k=u.proto,S=w?a:j?a[B]:(a[B]||{}).prototype,O=w?b:b[B]||m(b,B,{})[B],R=O.prototype;for(E in d)t=!p(w?E:B+(j?\".\":\"#\")+E,u.forced)&&S&&A(S,E),g=O[E],t&&(h=u.noTargetGet?(v=D(S,E))&&v.value:S[E]),C=t&&h?h:d[E],t&&typeof g==typeof C||(x=u.bind&&t?y(C,a):u.wrap&&t?wrapConstructor(C):k&&l(C)?i(C):C,(u.sham||C&&C.sham||g&&g.sham)&&m(x,\"sham\",!0),m(O,E,x),k&&(A(b,c=B+\"Prototype\")||m(b,c,{}),m(b[c],E,C),u.real&&R&&!R[E]&&m(R,E,C)))}},{\"../internals/create-non-enumerable-property\":78,\"../internals/function-apply\":95,\"../internals/function-bind-context\":96,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/is-callable\":114,\"../internals/is-forced\":116,\"../internals/object-get-own-property-descriptor\":130,\"../internals/path\":142}],94:[function(u,d,t){d.exports=function(u){try{return!!u()}catch(u){return!0}}},{}],95:[function(u,d,t){var a=Function.prototype,c=a.apply,i=a.bind,l=a.call;d.exports=\"object\"==typeof Reflect&&Reflect.apply||(i?l.bind(c):function(){return l.apply(c,arguments)})},{}],96:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/a-callable\"),i=a(a.bind);d.exports=function(u,d){return c(u),void 0===d?u:i?i(u,d):function(){return u.apply(d,arguments)}}},{\"../internals/a-callable\":57,\"../internals/function-uncurry-this\":99}],97:[function(u,d,t){var a=Function.prototype.call;d.exports=a.bind?a.bind(a):function(){return a.apply(a,arguments)}},{}],98:[function(u,d,t){var a=u(\"../internals/descriptors\"),c=u(\"../internals/has-own-property\"),i=Function.prototype,l=a&&Object.getOwnPropertyDescriptor,D=c(i,\"name\"),p=D&&\"something\"===function something(){}.name,b=D&&(!a||a&&l(i,\"name\").configurable);d.exports={EXISTS:D,PROPER:p,CONFIGURABLE:b}},{\"../internals/descriptors\":83,\"../internals/has-own-property\":105}],99:[function(u,d,t){var a=Function.prototype,c=a.bind,i=a.call,l=c&&c.bind(i);d.exports=c?function(u){return u&&l(i,u)}:function(u){return u&&function(){return i.apply(u,arguments)}}},{}],100:[function(u,d,t){var a=u(\"../internals/path\"),c=u(\"../internals/global\"),i=u(\"../internals/is-callable\"),aFunction=function(u){return i(u)?u:void 0};d.exports=function(u,d){return arguments.length<2?aFunction(a[u])||aFunction(c[u]):a[u]&&a[u][d]||c[u]&&c[u][d]}},{\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/path\":142}],101:[function(u,d,t){var a=u(\"../internals/classof\"),c=u(\"../internals/get-method\"),i=u(\"../internals/iterators\"),l=u(\"../internals/well-known-symbol\")(\"iterator\");d.exports=function(u){if(null!=u)return c(u,l)||c(u,\"@@iterator\")||i[a(u)]}},{\"../internals/classof\":75,\"../internals/get-method\":103,\"../internals/iterators\":122,\"../internals/well-known-symbol\":166}],102:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/function-call\"),i=u(\"../internals/a-callable\"),l=u(\"../internals/an-object\"),D=u(\"../internals/try-to-string\"),p=u(\"../internals/get-iterator-method\"),b=a.TypeError;d.exports=function(u,d){var t=arguments.length<2?p(u):d;if(i(t))return l(c(t,u));throw b(D(u)+\" is not iterable\")}},{\"../internals/a-callable\":57,\"../internals/an-object\":60,\"../internals/function-call\":97,\"../internals/get-iterator-method\":101,\"../internals/global\":104,\"../internals/try-to-string\":162}],103:[function(u,d,t){var a=u(\"../internals/a-callable\");d.exports=function(u,d){var t=u[d];return null==t?void 0:a(t)}},{\"../internals/a-callable\":57}],104:[function(u,d,t){(function(u){(function(){var check=function(u){return u&&u.Math==Math&&u};d.exports=check(\"object\"==typeof globalThis&&globalThis)||check(\"object\"==typeof window&&window)||check(\"object\"==typeof self&&self)||check(\"object\"==typeof u&&u)||function(){return this}()||Function(\"return this\")()}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],105:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/to-object\"),i=a({}.hasOwnProperty);d.exports=Object.hasOwn||function hasOwn(u,d){return i(c(u),d)}},{\"../internals/function-uncurry-this\":99,\"../internals/to-object\":157}],106:[function(u,d,t){d.exports={}},{}],107:[function(u,d,t){var a=u(\"../internals/get-built-in\");d.exports=a(\"document\",\"documentElement\")},{\"../internals/get-built-in\":100}],108:[function(u,d,t){var a=u(\"../internals/descriptors\"),c=u(\"../internals/fails\"),i=u(\"../internals/document-create-element\");d.exports=!a&&!c((function(){return 7!=Object.defineProperty(i(\"div\"),\"a\",{get:function(){return 7}}).a}))},{\"../internals/descriptors\":83,\"../internals/document-create-element\":84,\"../internals/fails\":94}],109:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/function-uncurry-this\"),i=u(\"../internals/fails\"),l=u(\"../internals/classof-raw\"),D=a.Object,p=c(\"\".split);d.exports=i((function(){return!D(\"z\").propertyIsEnumerable(0)}))?function(u){return\"String\"==l(u)?p(u,\"\"):D(u)}:D},{\"../internals/classof-raw\":74,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/global\":104}],110:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/is-callable\"),i=u(\"../internals/shared-store\"),l=a(Function.toString);c(i.inspectSource)||(i.inspectSource=function(u){return l(u)}),d.exports=i.inspectSource},{\"../internals/function-uncurry-this\":99,\"../internals/is-callable\":114,\"../internals/shared-store\":149}],111:[function(u,d,t){var a,c,i,l=u(\"../internals/native-weak-map\"),D=u(\"../internals/global\"),p=u(\"../internals/function-uncurry-this\"),b=u(\"../internals/is-object\"),y=u(\"../internals/create-non-enumerable-property\"),m=u(\"../internals/has-own-property\"),A=u(\"../internals/shared-store\"),E=u(\"../internals/shared-key\"),C=u(\"../internals/hidden-keys\"),g=\"Object already initialized\",h=D.TypeError,x=D.WeakMap;if(l||A.state){var v=A.state||(A.state=new x),B=p(v.get),w=p(v.has),j=p(v.set);a=function(u,d){if(w(v,u))throw new h(g);return d.facade=u,j(v,u,d),d},c=function(u){return B(v,u)||{}},i=function(u){return w(v,u)}}else{var k=E(\"state\");C[k]=!0,a=function(u,d){if(m(u,k))throw new h(g);return d.facade=u,y(u,k,d),d},c=function(u){return m(u,k)?u[k]:{}},i=function(u){return m(u,k)}}d.exports={set:a,get:c,has:i,enforce:function(u){return i(u)?c(u):a(u,{})},getterFor:function(u){return function(d){var t;if(!b(d)||(t=c(d)).type!==u)throw h(\"Incompatible receiver, \"+u+\" required\");return t}}}},{\"../internals/create-non-enumerable-property\":78,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/is-object\":117,\"../internals/native-weak-map\":125,\"../internals/shared-key\":148,\"../internals/shared-store\":149}],112:[function(u,d,t){var a=u(\"../internals/well-known-symbol\"),c=u(\"../internals/iterators\"),i=a(\"iterator\"),l=Array.prototype;d.exports=function(u){return void 0!==u&&(c.Array===u||l[i]===u)}},{\"../internals/iterators\":122,\"../internals/well-known-symbol\":166}],113:[function(u,d,t){var a=u(\"../internals/classof-raw\");d.exports=Array.isArray||function isArray(u){return\"Array\"==a(u)}},{\"../internals/classof-raw\":74}],114:[function(u,d,t){d.exports=function(u){return\"function\"==typeof u}},{}],115:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/fails\"),i=u(\"../internals/is-callable\"),l=u(\"../internals/classof\"),D=u(\"../internals/get-built-in\"),p=u(\"../internals/inspect-source\"),noop=function(){},b=[],y=D(\"Reflect\",\"construct\"),m=/^\\s*(?:class|function)\\b/,A=a(m.exec),E=!m.exec(noop),C=function isConstructor(u){if(!i(u))return!1;try{return y(noop,b,u),!0}catch(u){return!1}},g=function isConstructor(u){if(!i(u))return!1;switch(l(u)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}try{return E||!!A(m,p(u))}catch(u){return!0}};g.sham=!0,d.exports=!y||c((function(){var u;return C(C.call)||!C(Object)||!C((function(){u=!0}))||u}))?g:C},{\"../internals/classof\":75,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/get-built-in\":100,\"../internals/inspect-source\":110,\"../internals/is-callable\":114}],116:[function(u,d,t){var a=u(\"../internals/fails\"),c=u(\"../internals/is-callable\"),i=/#|\\.prototype\\./,isForced=function(u,d){var t=D[l(u)];return t==b||t!=p&&(c(d)?a(d):!!d)},l=isForced.normalize=function(u){return String(u).replace(i,\".\").toLowerCase()},D=isForced.data={},p=isForced.NATIVE=\"N\",b=isForced.POLYFILL=\"P\";d.exports=isForced},{\"../internals/fails\":94,\"../internals/is-callable\":114}],117:[function(u,d,t){var a=u(\"../internals/is-callable\");d.exports=function(u){return\"object\"==typeof u?null!==u:a(u)}},{\"../internals/is-callable\":114}],118:[function(u,d,t){d.exports=!0},{}],119:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/get-built-in\"),i=u(\"../internals/is-callable\"),l=u(\"../internals/object-is-prototype-of\"),D=u(\"../internals/use-symbol-as-uid\"),p=a.Object;d.exports=D?function(u){return\"symbol\"==typeof u}:function(u){var d=c(\"Symbol\");return i(d)&&l(d.prototype,p(u))}},{\"../internals/get-built-in\":100,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/object-is-prototype-of\":135,\"../internals/use-symbol-as-uid\":164}],120:[function(u,d,t){var a=u(\"../internals/function-call\"),c=u(\"../internals/an-object\"),i=u(\"../internals/get-method\");d.exports=function(u,d,t){var l,D;c(u);try{if(!(l=i(u,\"return\"))){if(\"throw\"===d)throw t;return t}l=a(l,u)}catch(u){D=!0,l=u}if(\"throw\"===d)throw t;if(D)throw l;return c(l),t}},{\"../internals/an-object\":60,\"../internals/function-call\":97,\"../internals/get-method\":103}],121:[function(u,d,t){\"use strict\";var a,c,i,l=u(\"../internals/fails\"),D=u(\"../internals/is-callable\"),p=u(\"../internals/object-create\"),b=u(\"../internals/object-get-prototype-of\"),y=u(\"../internals/redefine\"),m=u(\"../internals/well-known-symbol\"),A=u(\"../internals/is-pure\"),E=m(\"iterator\"),C=!1;[].keys&&(\"next\"in(i=[].keys())?(c=b(b(i)))!==Object.prototype&&(a=c):C=!0),null==a||l((function(){var u={};return a[E].call(u)!==u}))?a={}:A&&(a=p(a)),D(a[E])||y(a,E,(function(){return this})),d.exports={IteratorPrototype:a,BUGGY_SAFARI_ITERATORS:C}},{\"../internals/fails\":94,\"../internals/is-callable\":114,\"../internals/is-pure\":118,\"../internals/object-create\":127,\"../internals/object-get-prototype-of\":134,\"../internals/redefine\":143,\"../internals/well-known-symbol\":166}],122:[function(u,d,t){arguments[4][106][0].apply(t,arguments)},{dup:106}],123:[function(u,d,t){var a=u(\"../internals/to-length\");d.exports=function(u){return a(u.length)}},{\"../internals/to-length\":156}],124:[function(u,d,t){var a=u(\"../internals/engine-v8-version\"),c=u(\"../internals/fails\");d.exports=!!Object.getOwnPropertySymbols&&!c((function(){var u=Symbol();return!String(u)||!(Object(u)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},{\"../internals/engine-v8-version\":89,\"../internals/fails\":94}],125:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/is-callable\"),i=u(\"../internals/inspect-source\"),l=a.WeakMap;d.exports=c(l)&&/native code/.test(i(l))},{\"../internals/global\":104,\"../internals/inspect-source\":110,\"../internals/is-callable\":114}],126:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/fails\"),i=u(\"../internals/function-uncurry-this\"),l=u(\"../internals/to-string\"),D=u(\"../internals/string-trim\").trim,p=u(\"../internals/whitespaces\"),b=a.parseInt,y=a.Symbol,m=y&&y.iterator,A=/^[+-]?0x/i,E=i(A.exec),C=8!==b(p+\"08\")||22!==b(p+\"0x16\")||m&&!c((function(){b(Object(m))}));d.exports=C?function parseInt(u,d){var t=D(l(u));return b(t,d>>>0||(E(A,t)?16:10))}:b},{\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/global\":104,\"../internals/string-trim\":152,\"../internals/to-string\":161,\"../internals/whitespaces\":167}],127:[function(u,d,t){var a,c=u(\"../internals/an-object\"),i=u(\"../internals/object-define-properties\"),l=u(\"../internals/enum-bug-keys\"),D=u(\"../internals/hidden-keys\"),p=u(\"../internals/html\"),b=u(\"../internals/document-create-element\"),y=u(\"../internals/shared-key\"),m=y(\"IE_PROTO\"),EmptyConstructor=function(){},scriptTag=function(u){return\"<script>\"+u+\"</\"+\"script>\"},NullProtoObjectViaActiveX=function(u){u.write(scriptTag(\"\")),u.close();var d=u.parentWindow.Object;return u=null,d},NullProtoObject=function(){try{a=new ActiveXObject(\"htmlfile\")}catch(u){}var u,d;NullProtoObject=\"undefined\"!=typeof document?document.domain&&a?NullProtoObjectViaActiveX(a):((d=b(\"iframe\")).style.display=\"none\",p.appendChild(d),d.src=String(\"javascript:\"),(u=d.contentWindow.document).open(),u.write(scriptTag(\"document.F=Object\")),u.close(),u.F):NullProtoObjectViaActiveX(a);for(var t=l.length;t--;)delete NullProtoObject.prototype[l[t]];return NullProtoObject()};D[m]=!0,d.exports=Object.create||function create(u,d){var t;return null!==u?(EmptyConstructor.prototype=c(u),t=new EmptyConstructor,EmptyConstructor.prototype=null,t[m]=u):t=NullProtoObject(),void 0===d?t:i(t,d)}},{\"../internals/an-object\":60,\"../internals/document-create-element\":84,\"../internals/enum-bug-keys\":92,\"../internals/hidden-keys\":106,\"../internals/html\":107,\"../internals/object-define-properties\":128,\"../internals/shared-key\":148}],128:[function(u,d,t){var a=u(\"../internals/descriptors\"),c=u(\"../internals/object-define-property\"),i=u(\"../internals/an-object\"),l=u(\"../internals/to-indexed-object\"),D=u(\"../internals/object-keys\");d.exports=a?Object.defineProperties:function defineProperties(u,d){i(u);for(var t,a=l(d),p=D(d),b=p.length,y=0;b>y;)c.f(u,t=p[y++],a[t]);return u}},{\"../internals/an-object\":60,\"../internals/descriptors\":83,\"../internals/object-define-property\":129,\"../internals/object-keys\":137,\"../internals/to-indexed-object\":154}],129:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/descriptors\"),i=u(\"../internals/ie8-dom-define\"),l=u(\"../internals/an-object\"),D=u(\"../internals/to-property-key\"),p=a.TypeError,b=Object.defineProperty;t.f=c?b:function defineProperty(u,d,t){if(l(u),d=D(d),l(t),i)try{return b(u,d,t)}catch(u){}if(\"get\"in t||\"set\"in t)throw p(\"Accessors not supported\");return\"value\"in t&&(u[d]=t.value),u}},{\"../internals/an-object\":60,\"../internals/descriptors\":83,\"../internals/global\":104,\"../internals/ie8-dom-define\":108,\"../internals/to-property-key\":159}],130:[function(u,d,t){var a=u(\"../internals/descriptors\"),c=u(\"../internals/function-call\"),i=u(\"../internals/object-property-is-enumerable\"),l=u(\"../internals/create-property-descriptor\"),D=u(\"../internals/to-indexed-object\"),p=u(\"../internals/to-property-key\"),b=u(\"../internals/has-own-property\"),y=u(\"../internals/ie8-dom-define\"),m=Object.getOwnPropertyDescriptor;t.f=a?m:function getOwnPropertyDescriptor(u,d){if(u=D(u),d=p(d),y)try{return m(u,d)}catch(u){}if(b(u,d))return l(!c(i.f,u,d),u[d])}},{\"../internals/create-property-descriptor\":79,\"../internals/descriptors\":83,\"../internals/function-call\":97,\"../internals/has-own-property\":105,\"../internals/ie8-dom-define\":108,\"../internals/object-property-is-enumerable\":138,\"../internals/to-indexed-object\":154,\"../internals/to-property-key\":159}],131:[function(u,d,t){var a=u(\"../internals/classof-raw\"),c=u(\"../internals/to-indexed-object\"),i=u(\"../internals/object-get-own-property-names\").f,l=u(\"../internals/array-slice-simple\"),D=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];d.exports.f=function getOwnPropertyNames(u){return D&&\"Window\"==a(u)?function(u){try{return i(u)}catch(u){return l(D)}}(u):i(c(u))}},{\"../internals/array-slice-simple\":67,\"../internals/classof-raw\":74,\"../internals/object-get-own-property-names\":132,\"../internals/to-indexed-object\":154}],132:[function(u,d,t){var a=u(\"../internals/object-keys-internal\"),c=u(\"../internals/enum-bug-keys\").concat(\"length\",\"prototype\");t.f=Object.getOwnPropertyNames||function getOwnPropertyNames(u){return a(u,c)}},{\"../internals/enum-bug-keys\":92,\"../internals/object-keys-internal\":136}],133:[function(u,d,t){t.f=Object.getOwnPropertySymbols},{}],134:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/has-own-property\"),i=u(\"../internals/is-callable\"),l=u(\"../internals/to-object\"),D=u(\"../internals/shared-key\"),p=u(\"../internals/correct-prototype-getter\"),b=D(\"IE_PROTO\"),y=a.Object,m=y.prototype;d.exports=p?y.getPrototypeOf:function(u){var d=l(u);if(c(d,b))return d[b];var t=d.constructor;return i(t)&&d instanceof t?t.prototype:d instanceof y?m:null}},{\"../internals/correct-prototype-getter\":76,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/is-callable\":114,\"../internals/shared-key\":148,\"../internals/to-object\":157}],135:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\");d.exports=a({}.isPrototypeOf)},{\"../internals/function-uncurry-this\":99}],136:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/has-own-property\"),i=u(\"../internals/to-indexed-object\"),l=u(\"../internals/array-includes\").indexOf,D=u(\"../internals/hidden-keys\"),p=a([].push);d.exports=function(u,d){var t,a=i(u),b=0,y=[];for(t in a)!c(D,t)&&c(a,t)&&p(y,t);for(;d.length>b;)c(a,t=d[b++])&&(~l(y,t)||p(y,t));return y}},{\"../internals/array-includes\":63,\"../internals/function-uncurry-this\":99,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/to-indexed-object\":154}],137:[function(u,d,t){var a=u(\"../internals/object-keys-internal\"),c=u(\"../internals/enum-bug-keys\");d.exports=Object.keys||function keys(u){return a(u,c)}},{\"../internals/enum-bug-keys\":92,\"../internals/object-keys-internal\":136}],138:[function(u,d,t){\"use strict\";var a={}.propertyIsEnumerable,c=Object.getOwnPropertyDescriptor,i=c&&!a.call({1:2},1);t.f=i?function propertyIsEnumerable(u){var d=c(this,u);return!!d&&d.enumerable}:a},{}],139:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/an-object\"),i=u(\"../internals/a-possible-prototype\");d.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var u,d=!1,t={};try{(u=a(Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set))(t,[]),d=t instanceof Array}catch(u){}return function setPrototypeOf(t,a){return c(t),i(a),d?u(t,a):t.__proto__=a,t}}():void 0)},{\"../internals/a-possible-prototype\":58,\"../internals/an-object\":60,\"../internals/function-uncurry-this\":99}],140:[function(u,d,t){\"use strict\";var a=u(\"../internals/to-string-tag-support\"),c=u(\"../internals/classof\");d.exports=a?{}.toString:function toString(){return\"[object \"+c(this)+\"]\"}},{\"../internals/classof\":75,\"../internals/to-string-tag-support\":160}],141:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/function-call\"),i=u(\"../internals/is-callable\"),l=u(\"../internals/is-object\"),D=a.TypeError;d.exports=function(u,d){var t,a;if(\"string\"===d&&i(t=u.toString)&&!l(a=c(t,u)))return a;if(i(t=u.valueOf)&&!l(a=c(t,u)))return a;if(\"string\"!==d&&i(t=u.toString)&&!l(a=c(t,u)))return a;throw D(\"Can't convert object to primitive value\")}},{\"../internals/function-call\":97,\"../internals/global\":104,\"../internals/is-callable\":114,\"../internals/is-object\":117}],142:[function(u,d,t){arguments[4][106][0].apply(t,arguments)},{dup:106}],143:[function(u,d,t){var a=u(\"../internals/create-non-enumerable-property\");d.exports=function(u,d,t,c){c&&c.enumerable?u[d]=t:a(u,d,t)}},{\"../internals/create-non-enumerable-property\":78}],144:[function(u,d,t){\"use strict\";var a=u(\"../internals/an-object\");d.exports=function(){var u=a(this),d=\"\";return u.global&&(d+=\"g\"),u.ignoreCase&&(d+=\"i\"),u.multiline&&(d+=\"m\"),u.dotAll&&(d+=\"s\"),u.unicode&&(d+=\"u\"),u.sticky&&(d+=\"y\"),d}},{\"../internals/an-object\":60}],145:[function(u,d,t){var a=u(\"../internals/global\").TypeError;d.exports=function(u){if(null==u)throw a(\"Can't call method on \"+u);return u}},{\"../internals/global\":104}],146:[function(u,d,t){var a=u(\"../internals/global\"),c=Object.defineProperty;d.exports=function(u,d){try{c(a,u,{value:d,configurable:!0,writable:!0})}catch(t){a[u]=d}return d}},{\"../internals/global\":104}],147:[function(u,d,t){var a=u(\"../internals/to-string-tag-support\"),c=u(\"../internals/object-define-property\").f,i=u(\"../internals/create-non-enumerable-property\"),l=u(\"../internals/has-own-property\"),D=u(\"../internals/object-to-string\"),p=u(\"../internals/well-known-symbol\")(\"toStringTag\");d.exports=function(u,d,t,b){if(u){var y=t?u:u.prototype;l(y,p)||c(y,p,{configurable:!0,value:d}),b&&!a&&i(y,\"toString\",D)}}},{\"../internals/create-non-enumerable-property\":78,\"../internals/has-own-property\":105,\"../internals/object-define-property\":129,\"../internals/object-to-string\":140,\"../internals/to-string-tag-support\":160,\"../internals/well-known-symbol\":166}],148:[function(u,d,t){var a=u(\"../internals/shared\"),c=u(\"../internals/uid\"),i=a(\"keys\");d.exports=function(u){return i[u]||(i[u]=c(u))}},{\"../internals/shared\":150,\"../internals/uid\":163}],149:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/set-global\"),i=\"__core-js_shared__\",l=a[i]||c(i,{});d.exports=l},{\"../internals/global\":104,\"../internals/set-global\":146}],150:[function(u,d,t){var a=u(\"../internals/is-pure\"),c=u(\"../internals/shared-store\");(d.exports=function(u,d){return c[u]||(c[u]=void 0!==d?d:{})})(\"versions\",[]).push({version:\"3.20.0\",mode:a?\"pure\":\"global\",copyright:\"© 2021 Denis Pushkarev (zloirock.ru)\"})},{\"../internals/is-pure\":118,\"../internals/shared-store\":149}],151:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/to-integer-or-infinity\"),i=u(\"../internals/to-string\"),l=u(\"../internals/require-object-coercible\"),D=a(\"\".charAt),p=a(\"\".charCodeAt),b=a(\"\".slice),createMethod=function(u){return function(d,t){var a,y,m=i(l(d)),A=c(t),E=m.length;return A<0||A>=E?u?\"\":void 0:(a=p(m,A))<55296||a>56319||A+1===E||(y=p(m,A+1))<56320||y>57343?u?D(m,A):a:u?b(m,A,A+2):y-56320+(a-55296<<10)+65536}};d.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},{\"../internals/function-uncurry-this\":99,\"../internals/require-object-coercible\":145,\"../internals/to-integer-or-infinity\":155,\"../internals/to-string\":161}],152:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=u(\"../internals/require-object-coercible\"),i=u(\"../internals/to-string\"),l=u(\"../internals/whitespaces\"),D=a(\"\".replace),p=\"[\"+l+\"]\",b=RegExp(\"^\"+p+p+\"*\"),y=RegExp(p+p+\"*$\"),createMethod=function(u){return function(d){var t=i(c(d));return 1&u&&(t=D(t,b,\"\")),2&u&&(t=D(t,y,\"\")),t}};d.exports={start:createMethod(1),end:createMethod(2),trim:createMethod(3)}},{\"../internals/function-uncurry-this\":99,\"../internals/require-object-coercible\":145,\"../internals/to-string\":161,\"../internals/whitespaces\":167}],153:[function(u,d,t){var a=u(\"../internals/to-integer-or-infinity\"),c=Math.max,i=Math.min;d.exports=function(u,d){var t=a(u);return t<0?c(t+d,0):i(t,d)}},{\"../internals/to-integer-or-infinity\":155}],154:[function(u,d,t){var a=u(\"../internals/indexed-object\"),c=u(\"../internals/require-object-coercible\");d.exports=function(u){return a(c(u))}},{\"../internals/indexed-object\":109,\"../internals/require-object-coercible\":145}],155:[function(u,d,t){var a=Math.ceil,c=Math.floor;d.exports=function(u){var d=+u;return d!=d||0===d?0:(d>0?c:a)(d)}},{}],156:[function(u,d,t){var a=u(\"../internals/to-integer-or-infinity\"),c=Math.min;d.exports=function(u){return u>0?c(a(u),9007199254740991):0}},{\"../internals/to-integer-or-infinity\":155}],157:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/require-object-coercible\"),i=a.Object;d.exports=function(u){return i(c(u))}},{\"../internals/global\":104,\"../internals/require-object-coercible\":145}],158:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/function-call\"),i=u(\"../internals/is-object\"),l=u(\"../internals/is-symbol\"),D=u(\"../internals/get-method\"),p=u(\"../internals/ordinary-to-primitive\"),b=u(\"../internals/well-known-symbol\"),y=a.TypeError,m=b(\"toPrimitive\");d.exports=function(u,d){if(!i(u)||l(u))return u;var t,a=D(u,m);if(a){if(void 0===d&&(d=\"default\"),t=c(a,u,d),!i(t)||l(t))return t;throw y(\"Can't convert object to primitive value\")}return void 0===d&&(d=\"number\"),p(u,d)}},{\"../internals/function-call\":97,\"../internals/get-method\":103,\"../internals/global\":104,\"../internals/is-object\":117,\"../internals/is-symbol\":119,\"../internals/ordinary-to-primitive\":141,\"../internals/well-known-symbol\":166}],159:[function(u,d,t){var a=u(\"../internals/to-primitive\"),c=u(\"../internals/is-symbol\");d.exports=function(u){var d=a(u,\"string\");return c(d)?d:d+\"\"}},{\"../internals/is-symbol\":119,\"../internals/to-primitive\":158}],160:[function(u,d,t){var a={};a[u(\"../internals/well-known-symbol\")(\"toStringTag\")]=\"z\",d.exports=\"[object z]\"===String(a)},{\"../internals/well-known-symbol\":166}],161:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/classof\"),i=a.String;d.exports=function(u){if(\"Symbol\"===c(u))throw TypeError(\"Cannot convert a Symbol value to a string\");return i(u)}},{\"../internals/classof\":75,\"../internals/global\":104}],162:[function(u,d,t){var a=u(\"../internals/global\").String;d.exports=function(u){try{return a(u)}catch(u){return\"Object\"}}},{\"../internals/global\":104}],163:[function(u,d,t){var a=u(\"../internals/function-uncurry-this\"),c=0,i=Math.random(),l=a(1..toString);d.exports=function(u){return\"Symbol(\"+(void 0===u?\"\":u)+\")_\"+l(++c+i,36)}},{\"../internals/function-uncurry-this\":99}],164:[function(u,d,t){var a=u(\"../internals/native-symbol\");d.exports=a&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},{\"../internals/native-symbol\":124}],165:[function(u,d,t){var a=u(\"../internals/well-known-symbol\");t.f=a},{\"../internals/well-known-symbol\":166}],166:[function(u,d,t){var a=u(\"../internals/global\"),c=u(\"../internals/shared\"),i=u(\"../internals/has-own-property\"),l=u(\"../internals/uid\"),D=u(\"../internals/native-symbol\"),p=u(\"../internals/use-symbol-as-uid\"),b=c(\"wks\"),y=a.Symbol,m=y&&y.for,A=p?y:y&&y.withoutSetter||l;d.exports=function(u){if(!i(b,u)||!D&&\"string\"!=typeof b[u]){var d=\"Symbol.\"+u;D&&i(y,u)?b[u]=y[u]:b[u]=p&&m?m(d):A(d)}return b[u]}},{\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/native-symbol\":124,\"../internals/shared\":150,\"../internals/uid\":163,\"../internals/use-symbol-as-uid\":164}],167:[function(u,d,t){d.exports=\"\\t\\n\\v\\f\\r                　\\u2028\\u2029\\ufeff\"},{}],168:[function(u,d,t){\"use strict\";var a=u(\"../internals/export\"),c=u(\"../internals/global\"),i=u(\"../internals/fails\"),l=u(\"../internals/is-array\"),D=u(\"../internals/is-object\"),p=u(\"../internals/to-object\"),b=u(\"../internals/length-of-array-like\"),y=u(\"../internals/create-property\"),m=u(\"../internals/array-species-create\"),A=u(\"../internals/array-method-has-species-support\"),E=u(\"../internals/well-known-symbol\"),C=u(\"../internals/engine-v8-version\"),g=E(\"isConcatSpreadable\"),h=9007199254740991,x=\"Maximum allowed index exceeded\",v=c.TypeError,B=C>=51||!i((function(){var u=[];return u[g]=!1,u.concat()[0]!==u})),w=A(\"concat\"),isConcatSpreadable=function(u){if(!D(u))return!1;var d=u[g];return void 0!==d?!!d:l(u)};a({target:\"Array\",proto:!0,forced:!B||!w},{concat:function concat(u){var d,t,a,c,i,l=p(this),D=m(l,0),A=0;for(d=-1,a=arguments.length;d<a;d++)if(isConcatSpreadable(i=-1===d?l:arguments[d])){if(A+(c=b(i))>h)throw v(x);for(t=0;t<c;t++,A++)t in i&&y(D,A,i[t])}else{if(A>=h)throw v(x);y(D,A++,i)}return D.length=A,D}})},{\"../internals/array-method-has-species-support\":65,\"../internals/array-species-create\":71,\"../internals/create-property\":80,\"../internals/engine-v8-version\":89,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-object\":117,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157,\"../internals/well-known-symbol\":166}],169:[function(u,d,t){\"use strict\";var a=u(\"../internals/export\"),c=u(\"../internals/array-for-each\");a({target:\"Array\",proto:!0,forced:[].forEach!=c},{forEach:c})},{\"../internals/array-for-each\":61,\"../internals/export\":93}],170:[function(u,d,t){var a=u(\"../internals/export\"),c=u(\"../internals/array-from\");a({target:\"Array\",stat:!0,forced:!u(\"../internals/check-correctness-of-iteration\")((function(u){Array.from(u)}))},{from:c})},{\"../internals/array-from\":62,\"../internals/check-correctness-of-iteration\":73,\"../internals/export\":93}],171:[function(u,d,t){\"use strict\";var a=u(\"../internals/export\"),c=u(\"../internals/function-uncurry-this\"),i=u(\"../internals/array-includes\").indexOf,l=u(\"../internals/array-method-is-strict\"),D=c([].indexOf),p=!!D&&1/D([1],1,-0)<0,b=l(\"indexOf\");a({target:\"Array\",proto:!0,forced:p||!b},{indexOf:function indexOf(u){var d=arguments.length>1?arguments[1]:void 0;return p?D(this,u,d)||0:i(this,u,d)}})},{\"../internals/array-includes\":63,\"../internals/array-method-is-strict\":66,\"../internals/export\":93,\"../internals/function-uncurry-this\":99}],172:[function(u,d,t){u(\"../internals/export\")({target:\"Array\",stat:!0},{isArray:u(\"../internals/is-array\")})},{\"../internals/export\":93,\"../internals/is-array\":113}],173:[function(u,d,t){\"use strict\";var a=u(\"../internals/to-indexed-object\"),c=u(\"../internals/add-to-unscopables\"),i=u(\"../internals/iterators\"),l=u(\"../internals/internal-state\"),D=u(\"../internals/object-define-property\").f,p=u(\"../internals/define-iterator\"),b=u(\"../internals/is-pure\"),y=u(\"../internals/descriptors\"),m=\"Array Iterator\",A=l.set,E=l.getterFor(m);d.exports=p(Array,\"Array\",(function(u,d){A(this,{type:m,target:a(u),index:0,kind:d})}),(function(){var u=E(this),d=u.target,t=u.kind,a=u.index++;return!d||a>=d.length?(u.target=void 0,{value:void 0,done:!0}):\"keys\"==t?{value:a,done:!1}:\"values\"==t?{value:d[a],done:!1}:{value:[a,d[a]],done:!1}}),\"values\");var C=i.Arguments=i.Array;if(c(\"keys\"),c(\"values\"),c(\"entries\"),!b&&y&&\"values\"!==C.name)try{D(C,\"name\",{value:\"values\"})}catch(u){}},{\"../internals/add-to-unscopables\":59,\"../internals/define-iterator\":81,\"../internals/descriptors\":83,\"../internals/internal-state\":111,\"../internals/is-pure\":118,\"../internals/iterators\":122,\"../internals/object-define-property\":129,\"../internals/to-indexed-object\":154}],174:[function(u,d,t){\"use strict\";var a=u(\"../internals/export\"),c=u(\"../internals/global\"),i=u(\"../internals/is-array\"),l=u(\"../internals/is-constructor\"),D=u(\"../internals/is-object\"),p=u(\"../internals/to-absolute-index\"),b=u(\"../internals/length-of-array-like\"),y=u(\"../internals/to-indexed-object\"),m=u(\"../internals/create-property\"),A=u(\"../internals/well-known-symbol\"),E=u(\"../internals/array-method-has-species-support\"),C=u(\"../internals/array-slice\"),g=E(\"slice\"),h=A(\"species\"),x=c.Array,v=Math.max;a({target:\"Array\",proto:!0,forced:!g},{slice:function slice(u,d){var t,a,c,A=y(this),E=b(A),g=p(u,E),B=p(void 0===d?E:d,E);if(i(A)&&(t=A.constructor,(l(t)&&(t===x||i(t.prototype))||D(t)&&null===(t=t[h]))&&(t=void 0),t===x||void 0===t))return C(A,g,B);for(a=new(void 0===t?x:t)(v(B-g,0)),c=0;g<B;g++,c++)g in A&&m(a,c,A[g]);return a.length=c,a}})},{\"../internals/array-method-has-species-support\":65,\"../internals/array-slice\":68,\"../internals/create-property\":80,\"../internals/export\":93,\"../internals/global\":104,\"../internals/is-array\":113,\"../internals/is-constructor\":115,\"../internals/is-object\":117,\"../internals/length-of-array-like\":123,\"../internals/to-absolute-index\":153,\"../internals/to-indexed-object\":154,\"../internals/well-known-symbol\":166}],175:[function(u,d,t){\"use strict\";var a=u(\"../internals/export\"),c=u(\"../internals/function-uncurry-this\"),i=u(\"../internals/a-callable\"),l=u(\"../internals/to-object\"),D=u(\"../internals/length-of-array-like\"),p=u(\"../internals/to-string\"),b=u(\"../internals/fails\"),y=u(\"../internals/array-sort\"),m=u(\"../internals/array-method-is-strict\"),A=u(\"../internals/engine-ff-version\"),E=u(\"../internals/engine-is-ie-or-edge\"),C=u(\"../internals/engine-v8-version\"),g=u(\"../internals/engine-webkit-version\"),h=[],x=c(h.sort),v=c(h.push),B=b((function(){h.sort(void 0)})),w=b((function(){h.sort(null)})),j=m(\"sort\"),k=!b((function(){if(C)return C<70;if(!(A&&A>3)){if(E)return!0;if(g)return g<603;var u,d,t,a,c=\"\";for(u=65;u<76;u++){switch(d=String.fromCharCode(u),u){case 66:case 69:case 70:case 72:t=3;break;case 68:case 71:t=4;break;default:t=2}for(a=0;a<47;a++)h.push({k:d+a,v:t})}for(h.sort((function(u,d){return d.v-u.v})),a=0;a<h.length;a++)d=h[a].k.charAt(0),c.charAt(c.length-1)!==d&&(c+=d);return\"DGBEFHACIJK\"!==c}}));a({target:\"Array\",proto:!0,forced:B||!w||!j||!k},{sort:function sort(u){void 0!==u&&i(u);var d=l(this);if(k)return void 0===u?x(d):x(d,u);var t,a,c=[],b=D(d);for(a=0;a<b;a++)a in d&&v(c,d[a]);for(y(c,function(u){return function(d,t){return void 0===t?-1:void 0===d?1:void 0!==u?+u(d,t)||0:p(d)>p(t)?1:-1}}(u)),t=c.length,a=0;a<t;)d[a]=c[a++];for(;a<b;)delete d[a++];return d}})},{\"../internals/a-callable\":57,\"../internals/array-method-is-strict\":66,\"../internals/array-sort\":69,\"../internals/engine-ff-version\":86,\"../internals/engine-is-ie-or-edge\":87,\"../internals/engine-v8-version\":89,\"../internals/engine-webkit-version\":90,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/function-uncurry-this\":99,\"../internals/length-of-array-like\":123,\"../internals/to-object\":157,\"../internals/to-string\":161}],176:[function(u,d,t){var a=u(\"../internals/global\");u(\"../internals/set-to-string-tag\")(a.JSON,\"JSON\",!0)},{\"../internals/global\":104,\"../internals/set-to-string-tag\":147}],177:[function(u,d,t){},{}],178:[function(u,d,t){u(\"../internals/export\")({target:\"Object\",stat:!0,sham:!u(\"../internals/descriptors\")},{create:u(\"../internals/object-create\")})},{\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/object-create\":127}],179:[function(u,d,t){var a=u(\"../internals/export\"),c=u(\"../internals/descriptors\");a({target:\"Object\",stat:!0,forced:!c,sham:!c},{defineProperty:u(\"../internals/object-define-property\").f})},{\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/object-define-property\":129}],180:[function(u,d,t){arguments[4][177][0].apply(t,arguments)},{dup:177}],181:[function(u,d,t){var a=u(\"../internals/export\"),c=u(\"../internals/number-parse-int\");a({global:!0,forced:parseInt!=c},{parseInt:c})},{\"../internals/export\":93,\"../internals/number-parse-int\":126}],182:[function(u,d,t){arguments[4][177][0].apply(t,arguments)},{dup:177}],183:[function(u,d,t){arguments[4][177][0].apply(t,arguments)},{dup:177}],184:[function(u,d,t){\"use strict\";var a=u(\"../internals/string-multibyte\").charAt,c=u(\"../internals/to-string\"),i=u(\"../internals/internal-state\"),l=u(\"../internals/define-iterator\"),D=\"String Iterator\",p=i.set,b=i.getterFor(D);l(String,\"String\",(function(u){p(this,{type:D,string:c(u),index:0})}),(function next(){var u,d=b(this),t=d.string,c=d.index;return c>=t.length?{value:void 0,done:!0}:(u=a(t,c),d.index+=u.length,{value:u,done:!1})}))},{\"../internals/define-iterator\":81,\"../internals/internal-state\":111,\"../internals/string-multibyte\":151,\"../internals/to-string\":161}],185:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"asyncIterator\")},{\"../internals/define-well-known-symbol\":82}],186:[function(u,d,t){arguments[4][177][0].apply(t,arguments)},{dup:177}],187:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"hasInstance\")},{\"../internals/define-well-known-symbol\":82}],188:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"isConcatSpreadable\")},{\"../internals/define-well-known-symbol\":82}],189:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"iterator\")},{\"../internals/define-well-known-symbol\":82}],190:[function(u,d,t){\"use strict\";var a=u(\"../internals/export\"),c=u(\"../internals/global\"),i=u(\"../internals/get-built-in\"),l=u(\"../internals/function-apply\"),D=u(\"../internals/function-call\"),p=u(\"../internals/function-uncurry-this\"),b=u(\"../internals/is-pure\"),y=u(\"../internals/descriptors\"),m=u(\"../internals/native-symbol\"),A=u(\"../internals/fails\"),E=u(\"../internals/has-own-property\"),C=u(\"../internals/is-array\"),g=u(\"../internals/is-callable\"),h=u(\"../internals/is-object\"),x=u(\"../internals/object-is-prototype-of\"),v=u(\"../internals/is-symbol\"),B=u(\"../internals/an-object\"),w=u(\"../internals/to-object\"),j=u(\"../internals/to-indexed-object\"),k=u(\"../internals/to-property-key\"),S=u(\"../internals/to-string\"),O=u(\"../internals/create-property-descriptor\"),R=u(\"../internals/object-create\"),_=u(\"../internals/object-keys\"),T=u(\"../internals/object-get-own-property-names\"),I=u(\"../internals/object-get-own-property-names-external\"),P=u(\"../internals/object-get-own-property-symbols\"),X=u(\"../internals/object-get-own-property-descriptor\"),L=u(\"../internals/object-define-property\"),N=u(\"../internals/object-property-is-enumerable\"),M=u(\"../internals/array-slice\"),U=u(\"../internals/redefine\"),G=u(\"../internals/shared\"),q=u(\"../internals/shared-key\"),z=u(\"../internals/hidden-keys\"),$=u(\"../internals/uid\"),H=u(\"../internals/well-known-symbol\"),Z=u(\"../internals/well-known-symbol-wrapped\"),Y=u(\"../internals/define-well-known-symbol\"),V=u(\"../internals/set-to-string-tag\"),W=u(\"../internals/internal-state\"),J=u(\"../internals/array-iteration\").forEach,K=q(\"hidden\"),Q=\"Symbol\",uu=H(\"toPrimitive\"),eu=W.set,du=W.getterFor(Q),nu=Object.prototype,tu=c.Symbol,ru=tu&&tu.prototype,au=c.TypeError,cu=c.QObject,ou=i(\"JSON\",\"stringify\"),iu=X.f,su=L.f,fu=I.f,lu=N.f,Du=p([].push),pu=G(\"symbols\"),bu=G(\"op-symbols\"),yu=G(\"string-to-symbol-registry\"),Fu=G(\"symbol-to-string-registry\"),mu=G(\"wks\"),Au=!cu||!cu.prototype||!cu.prototype.findChild,Eu=y&&A((function(){return 7!=R(su({},\"a\",{get:function(){return su(this,\"a\",{value:7}).a}})).a}))?function(u,d,t){var a=iu(nu,d);a&&delete nu[d],su(u,d,t),a&&u!==nu&&su(nu,d,a)}:su,wrap=function(u,d){var t=pu[u]=R(ru);return eu(t,{type:Q,tag:u,description:d}),y||(t.description=d),t},Cu=function defineProperty(u,d,t){u===nu&&Cu(bu,d,t),B(u);var a=k(d);return B(t),E(pu,a)?(t.enumerable?(E(u,K)&&u[K][a]&&(u[K][a]=!1),t=R(t,{enumerable:O(0,!1)})):(E(u,K)||su(u,K,O(1,{})),u[K][a]=!0),Eu(u,a,t)):su(u,a,t)},gu=function defineProperties(u,d){B(u);var t=j(d),a=_(t).concat(Bu(t));return J(a,(function(d){y&&!D(hu,t,d)||Cu(u,d,t[d])})),u},hu=function propertyIsEnumerable(u){var d=k(u),t=D(lu,this,d);return!(this===nu&&E(pu,d)&&!E(bu,d))&&(!(t||!E(this,d)||!E(pu,d)||E(this,K)&&this[K][d])||t)},xu=function getOwnPropertyDescriptor(u,d){var t=j(u),a=k(d);if(t!==nu||!E(pu,a)||E(bu,a)){var c=iu(t,a);return!c||!E(pu,a)||E(t,K)&&t[K][a]||(c.enumerable=!0),c}},vu=function getOwnPropertyNames(u){var d=fu(j(u)),t=[];return J(d,(function(u){E(pu,u)||E(z,u)||Du(t,u)})),t},Bu=function getOwnPropertySymbols(u){var d=u===nu,t=fu(d?bu:j(u)),a=[];return J(t,(function(u){!E(pu,u)||d&&!E(nu,u)||Du(a,pu[u])})),a};(m||(tu=function Symbol(){if(x(ru,this))throw au(\"Symbol is not a constructor\");var u=arguments.length&&void 0!==arguments[0]?S(arguments[0]):void 0,d=$(u),setter=function(u){this===nu&&D(setter,bu,u),E(this,K)&&E(this[K],d)&&(this[K][d]=!1),Eu(this,d,O(1,u))};return y&&Au&&Eu(nu,d,{configurable:!0,set:setter}),wrap(d,u)},U(ru=tu.prototype,\"toString\",(function toString(){return du(this).tag})),U(tu,\"withoutSetter\",(function(u){return wrap($(u),u)})),N.f=hu,L.f=Cu,X.f=xu,T.f=I.f=vu,P.f=Bu,Z.f=function(u){return wrap(H(u),u)},y&&(su(ru,\"description\",{configurable:!0,get:function description(){return du(this).description}}),b||U(nu,\"propertyIsEnumerable\",hu,{unsafe:!0}))),a({global:!0,wrap:!0,forced:!m,sham:!m},{Symbol:tu}),J(_(mu),(function(u){Y(u)})),a({target:Q,stat:!0,forced:!m},{for:function(u){var d=S(u);if(E(yu,d))return yu[d];var t=tu(d);return yu[d]=t,Fu[t]=d,t},keyFor:function keyFor(u){if(!v(u))throw au(u+\" is not a symbol\");if(E(Fu,u))return Fu[u]},useSetter:function(){Au=!0},useSimple:function(){Au=!1}}),a({target:\"Object\",stat:!0,forced:!m,sham:!y},{create:function create(u,d){return void 0===d?R(u):gu(R(u),d)},defineProperty:Cu,defineProperties:gu,getOwnPropertyDescriptor:xu}),a({target:\"Object\",stat:!0,forced:!m},{getOwnPropertyNames:vu,getOwnPropertySymbols:Bu}),a({target:\"Object\",stat:!0,forced:A((function(){P.f(1)}))},{getOwnPropertySymbols:function getOwnPropertySymbols(u){return P.f(w(u))}}),ou)&&a({target:\"JSON\",stat:!0,forced:!m||A((function(){var u=tu();return\"[null]\"!=ou([u])||\"{}\"!=ou({a:u})||\"{}\"!=ou(Object(u))}))},{stringify:function stringify(u,d,t){var a=M(arguments),c=d;if((h(d)||void 0!==u)&&!v(u))return C(d)||(d=function(u,d){if(g(c)&&(d=D(c,this,u,d)),!v(d))return d}),a[1]=d,l(ou,null,a)}});if(!ru[uu]){var wu=ru.valueOf;U(ru,uu,(function(u){return D(wu,this)}))}V(tu,Q),z[K]=!0},{\"../internals/an-object\":60,\"../internals/array-iteration\":64,\"../internals/array-slice\":68,\"../internals/create-property-descriptor\":79,\"../internals/define-well-known-symbol\":82,\"../internals/descriptors\":83,\"../internals/export\":93,\"../internals/fails\":94,\"../internals/function-apply\":95,\"../internals/function-call\":97,\"../internals/function-uncurry-this\":99,\"../internals/get-built-in\":100,\"../internals/global\":104,\"../internals/has-own-property\":105,\"../internals/hidden-keys\":106,\"../internals/internal-state\":111,\"../internals/is-array\":113,\"../internals/is-callable\":114,\"../internals/is-object\":117,\"../internals/is-pure\":118,\"../internals/is-symbol\":119,\"../internals/native-symbol\":124,\"../internals/object-create\":127,\"../internals/object-define-property\":129,\"../internals/object-get-own-property-descriptor\":130,\"../internals/object-get-own-property-names\":132,\"../internals/object-get-own-property-names-external\":131,\"../internals/object-get-own-property-symbols\":133,\"../internals/object-is-prototype-of\":135,\"../internals/object-keys\":137,\"../internals/object-property-is-enumerable\":138,\"../internals/redefine\":143,\"../internals/set-to-string-tag\":147,\"../internals/shared\":150,\"../internals/shared-key\":148,\"../internals/to-indexed-object\":154,\"../internals/to-object\":157,\"../internals/to-property-key\":159,\"../internals/to-string\":161,\"../internals/uid\":163,\"../internals/well-known-symbol\":166,\"../internals/well-known-symbol-wrapped\":165}],191:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"matchAll\")},{\"../internals/define-well-known-symbol\":82}],192:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"match\")},{\"../internals/define-well-known-symbol\":82}],193:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"replace\")},{\"../internals/define-well-known-symbol\":82}],194:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"search\")},{\"../internals/define-well-known-symbol\":82}],195:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"species\")},{\"../internals/define-well-known-symbol\":82}],196:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"split\")},{\"../internals/define-well-known-symbol\":82}],197:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"toPrimitive\")},{\"../internals/define-well-known-symbol\":82}],198:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"toStringTag\")},{\"../internals/define-well-known-symbol\":82}],199:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"unscopables\")},{\"../internals/define-well-known-symbol\":82}],200:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"asyncDispose\")},{\"../internals/define-well-known-symbol\":82}],201:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"dispose\")},{\"../internals/define-well-known-symbol\":82}],202:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"matcher\")},{\"../internals/define-well-known-symbol\":82}],203:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"metadata\")},{\"../internals/define-well-known-symbol\":82}],204:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"observable\")},{\"../internals/define-well-known-symbol\":82}],205:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"patternMatch\")},{\"../internals/define-well-known-symbol\":82}],206:[function(u,d,t){u(\"../internals/define-well-known-symbol\")(\"replaceAll\")},{\"../internals/define-well-known-symbol\":82}],207:[function(u,d,t){u(\"../modules/es.array.iterator\");var a=u(\"../internals/dom-iterables\"),c=u(\"../internals/global\"),i=u(\"../internals/classof\"),l=u(\"../internals/create-non-enumerable-property\"),D=u(\"../internals/iterators\"),p=u(\"../internals/well-known-symbol\")(\"toStringTag\");for(var b in a){var y=c[b],m=y&&y.prototype;m&&i(m)!==p&&l(m,p,b),D[b]=D.Array}},{\"../internals/classof\":75,\"../internals/create-non-enumerable-property\":78,\"../internals/dom-iterables\":85,\"../internals/global\":104,\"../internals/iterators\":122,\"../internals/well-known-symbol\":166,\"../modules/es.array.iterator\":173}],208:[function(u,d,t){var a=u(\"../../es/array/from\");d.exports=a},{\"../../es/array/from\":34}],209:[function(u,d,t){var a=u(\"../../es/array/is-array\");d.exports=a},{\"../../es/array/is-array\":35}],210:[function(u,d,t){var a=u(\"../../../es/array/virtual/for-each\");d.exports=a},{\"../../../es/array/virtual/for-each\":37}],211:[function(u,d,t){var a=u(\"../es/get-iterator-method\");u(\"../modules/web.dom-collections.iterator\"),d.exports=a},{\"../es/get-iterator-method\":41,\"../modules/web.dom-collections.iterator\":207}],212:[function(u,d,t){var a=u(\"../../es/instance/concat\");d.exports=a},{\"../../es/instance/concat\":42}],213:[function(u,d,t){var a=u(\"../../es/instance/flags\");d.exports=a},{\"../../es/instance/flags\":43}],214:[function(u,d,t){u(\"../../modules/web.dom-collections.iterator\");var a=u(\"../../internals/classof\"),c=u(\"../../internals/has-own-property\"),i=u(\"../../internals/object-is-prototype-of\"),l=u(\"../array/virtual/for-each\"),D=Array.prototype,p={DOMTokenList:!0,NodeList:!0};d.exports=function(u){var d=u.forEach;return u===D||i(D,u)&&d===D.forEach||c(p,a(u))?l:d}},{\"../../internals/classof\":75,\"../../internals/has-own-property\":105,\"../../internals/object-is-prototype-of\":135,\"../../modules/web.dom-collections.iterator\":207,\"../array/virtual/for-each\":210}],215:[function(u,d,t){var a=u(\"../../es/instance/index-of\");d.exports=a},{\"../../es/instance/index-of\":44}],216:[function(u,d,t){var a=u(\"../../es/instance/slice\");d.exports=a},{\"../../es/instance/slice\":45}],217:[function(u,d,t){var a=u(\"../../es/instance/sort\");d.exports=a},{\"../../es/instance/sort\":46}],218:[function(u,d,t){var a=u(\"../../es/object/create\");d.exports=a},{\"../../es/object/create\":47}],219:[function(u,d,t){var a=u(\"../../es/object/define-property\");d.exports=a},{\"../../es/object/define-property\":48}],220:[function(u,d,t){var a=u(\"../es/parse-int\");d.exports=a},{\"../es/parse-int\":49}],221:[function(u,d,t){var a=u(\"../../es/symbol\");u(\"../../modules/web.dom-collections.iterator\"),d.exports=a},{\"../../es/symbol\":51,\"../../modules/web.dom-collections.iterator\":207}],222:[function(u,d,t){d.exports=[{name:\"C\",alias:\"Other\",isBmpLast:!0,bmp:\"\\0-\u001f-­͸͹΀-΃΋΍΢԰՗՘֋֌֐׈-׏׫-׮׵-؅؜۝܎܏݋݌޲-޿߻߼࠮࠯࠿࡜࡝࡟࡫-࡯࢏-ࢗ࣢঄঍঎঑঒঩঱঳-঵঺঻৅৆৉৊৏-৖৘-৛৞৤৥৿਀਄਋-਎਑਒਩਱਴਷਺਻਽੃-੆੉੊੎-੐੒-੘੝੟-੥੷-઀઄઎઒઩઱઴઺઻૆૊૎૏૑-૟૤૥૲-૸଀଄଍଎଑଒଩଱଴଺଻୅୆୉୊୎-୔୘-୛୞୤୥୸-஁஄஋-஍஑஖-஘஛஝஠-஢஥-஧஫-஭஺-஽௃-௅௉௎௏௑-௖௘-௥௻-௿఍఑఩఺఻౅౉౎-౔౗౛౜౞౟౤౥౰-౶಍಑಩಴಺಻೅೉೎-೔೗-೜೟೤೥೰ೳ-೿഍഑൅൉൐-൓൤൥඀඄඗-඙඲඼඾඿෇-෉෋-෎෕෗෠-෥෰෱෵-฀฻-฾๜-຀຃຅຋຤຦຾຿໅໇໎໏໚໛໠-໿཈཭-཰྘྽࿍࿛-࿿჆჈-჌჎჏቉቎቏቗቙቞቟኉኎኏኱኶኷኿዁዆዇዗጑጖጗፛፜፽-፿᎚-᎟᏶᏷᏾᏿᚝-᚟᛹-᛿᜖-᜞᜷-᜿᝔-᝟᝭᝱᝴-᝿៞៟៪-៯៺-៿᠎᠚-᠟᡹-᡿᢫-᢯᣶-᣿᤟᤬-᤯᤼-᤿᥁-᥃᥮᥯᥵-᥿᦬-᦯᧊-᧏᧛-᧝᨜᨝᩟᩽᩾᪊-᪏᪚-᪟᪮᪯᫏-᫿᭍-᭏᭿᯴-᯻᰸-᰺᱊-᱌Ᲊ-᲏᲻᲼᳈-᳏᳻-᳿἖἗἞἟὆὇὎὏὘὚὜὞὾὿᾵῅῔῕῜῰῱῵῿​-‏‪-‮⁠-⁯⁲⁳₏₝-₟⃁-⃏⃱-⃿↌-↏␧-␿⑋-⑟⭴⭵⮖⳴-⳸⴦⴨-⴬⴮⴯⵨-⵮⵱-⵾⶗-⶟⶧⶯⶷⶿⷇⷏⷗⷟⹞-⹿⺚⻴-⻿⿖-⿯⿼-⿿぀゗゘㄀-㄄㄰㆏㇤-㇯㈟꒍-꒏꓇-꓏꘬-꘿꛸-꛿Ɤ-꟏꟒꟔Ꟛ-꟱꠭-꠯꠺-꠿꡸-꡿꣆-꣍꣚-꣟꥔-꥞꥽-꥿꧎꧚-꧝꧿꨷-꨿꩎꩏꩚꩛꫃-꫚꫷-꬀꬇꬈꬏꬐꬗-꬟꬧꬯꭬-꭯꯮꯯꯺-꯿힤-힯퟇-퟊퟼-﩮﩯﫚-﫿﬇-﬒﬘-﬜﬷﬽﬿﭂﭅﯃-﯒﶐﶑﷈-﷎﷐-﷯︚-︟﹓﹧﹬-﹯﹵﻽-＀﾿-￁￈￉￐￑￘￙￝-￟￧￯-￻￾￿\",astral:\"\\ud800[\\udc0c\\udc27\\udc3b\\udc3e\\udc4e\\udc4f\\udc5e-\\udc7f\\udcfb-\\udcff\\udd03-\\udd06\\udd34-\\udd36\\udd8f\\udd9d-\\udd9f\\udda1-\\uddcf\\uddfe-\\ude7f\\ude9d-\\ude9f\\uded1-\\udedf\\udefc-\\udeff\\udf24-\\udf2c\\udf4b-\\udf4f\\udf7b-\\udf7f\\udf9e\\udfc4-\\udfc7\\udfd6-\\udfff]|\\ud801[\\udc9e\\udc9f\\udcaa-\\udcaf\\udcd4-\\udcd7\\udcfc-\\udcff\\udd28-\\udd2f\\udd64-\\udd6e\\udd7b\\udd8b\\udd93\\udd96\\udda2\\uddb2\\uddba\\uddbd-\\uddff\\udf37-\\udf3f\\udf56-\\udf5f\\udf68-\\udf7f\\udf86\\udfb1\\udfbb-\\udfff]|\\ud802[\\udc06\\udc07\\udc09\\udc36\\udc39-\\udc3b\\udc3d\\udc3e\\udc56\\udc9f-\\udca6\\udcb0-\\udcdf\\udcf3\\udcf6-\\udcfa\\udd1c-\\udd1e\\udd3a-\\udd3e\\udd40-\\udd7f\\uddb8-\\uddbb\\uddd0\\uddd1\\ude04\\ude07-\\ude0b\\ude14\\ude18\\ude36\\ude37\\ude3b-\\ude3e\\ude49-\\ude4f\\ude59-\\ude5f\\udea0-\\udebf\\udee7-\\udeea\\udef7-\\udeff\\udf36-\\udf38\\udf56\\udf57\\udf73-\\udf77\\udf92-\\udf98\\udf9d-\\udfa8\\udfb0-\\udfff]|\\ud803[\\udc49-\\udc7f\\udcb3-\\udcbf\\udcf3-\\udcf9\\udd28-\\udd2f\\udd3a-\\ude5f\\ude7f\\udeaa\\udeae\\udeaf\\udeb2-\\udeff\\udf28-\\udf2f\\udf5a-\\udf6f\\udf8a-\\udfaf\\udfcc-\\udfdf\\udff7-\\udfff]|\\ud804[\\udc4e-\\udc51\\udc76-\\udc7e\\udcbd\\udcc3-\\udccf\\udce9-\\udcef\\udcfa-\\udcff\\udd35\\udd48-\\udd4f\\udd77-\\udd7f\\udde0\\uddf5-\\uddff\\ude12\\ude3f-\\ude7f\\ude87\\ude89\\ude8e\\ude9e\\udeaa-\\udeaf\\udeeb-\\udeef\\udefa-\\udeff\\udf04\\udf0d\\udf0e\\udf11\\udf12\\udf29\\udf31\\udf34\\udf3a\\udf45\\udf46\\udf49\\udf4a\\udf4e\\udf4f\\udf51-\\udf56\\udf58-\\udf5c\\udf64\\udf65\\udf6d-\\udf6f\\udf75-\\udfff]|\\ud805[\\udc5c\\udc62-\\udc7f\\udcc8-\\udccf\\udcda-\\udd7f\\uddb6\\uddb7\\uddde-\\uddff\\ude45-\\ude4f\\ude5a-\\ude5f\\ude6d-\\ude7f\\udeba-\\udebf\\udeca-\\udeff\\udf1b\\udf1c\\udf2c-\\udf2f\\udf47-\\udfff]|\\ud806[\\udc3c-\\udc9f\\udcf3-\\udcfe\\udd07\\udd08\\udd0a\\udd0b\\udd14\\udd17\\udd36\\udd39\\udd3a\\udd47-\\udd4f\\udd5a-\\udd9f\\udda8\\udda9\\uddd8\\uddd9\\udde5-\\uddff\\ude48-\\ude4f\\udea3-\\udeaf\\udef9-\\udfff]|\\ud807[\\udc09\\udc37\\udc46-\\udc4f\\udc6d-\\udc6f\\udc90\\udc91\\udca8\\udcb7-\\udcff\\udd07\\udd0a\\udd37-\\udd39\\udd3b\\udd3e\\udd48-\\udd4f\\udd5a-\\udd5f\\udd66\\udd69\\udd8f\\udd92\\udd99-\\udd9f\\uddaa-\\udedf\\udef9-\\udfaf\\udfb1-\\udfbf\\udff2-\\udffe]|\\ud808[\\udf9a-\\udfff]|\\ud809[\\udc6f\\udc75-\\udc7f\\udd44-\\udfff]|[\\ud80a\\ud80e-\\ud810\\ud812-\\ud819\\ud824-\\ud82a\\ud82d\\ud82e\\ud830-\\ud832\\ud83f\\ud87b-\\ud87d\\ud87f\\ud885-\\udb3f\\udb41-\\udbff][\\udc00-\\udfff]|\\ud80b[\\udc00-\\udf8f\\udff3-\\udfff]|\\ud80d[\\udc2f-\\udfff]|\\ud811[\\ude47-\\udfff]|\\ud81a[\\ude39-\\ude3f\\ude5f\\ude6a-\\ude6d\\udebf\\udeca-\\udecf\\udeee\\udeef\\udef6-\\udeff\\udf46-\\udf4f\\udf5a\\udf62\\udf78-\\udf7c\\udf90-\\udfff]|\\ud81b[\\udc00-\\ude3f\\ude9b-\\udeff\\udf4b-\\udf4e\\udf88-\\udf8e\\udfa0-\\udfdf\\udfe5-\\udfef\\udff2-\\udfff]|\\ud821[\\udff8-\\udfff]|\\ud823[\\udcd6-\\udcff\\udd09-\\udfff]|\\ud82b[\\udc00-\\udfef\\udff4\\udffc\\udfff]|\\ud82c[\\udd23-\\udd4f\\udd53-\\udd63\\udd68-\\udd6f\\udefc-\\udfff]|\\ud82f[\\udc6b-\\udc6f\\udc7d-\\udc7f\\udc89-\\udc8f\\udc9a\\udc9b\\udca0-\\udfff]|\\ud833[\\udc00-\\udeff\\udf2e\\udf2f\\udf47-\\udf4f\\udfc4-\\udfff]|\\ud834[\\udcf6-\\udcff\\udd27\\udd28\\udd73-\\udd7a\\uddeb-\\uddff\\ude46-\\udedf\\udef4-\\udeff\\udf57-\\udf5f\\udf79-\\udfff]|\\ud835[\\udc55\\udc9d\\udca0\\udca1\\udca3\\udca4\\udca7\\udca8\\udcad\\udcba\\udcbc\\udcc4\\udd06\\udd0b\\udd0c\\udd15\\udd1d\\udd3a\\udd3f\\udd45\\udd47-\\udd49\\udd51\\udea6\\udea7\\udfcc\\udfcd]|\\ud836[\\ude8c-\\ude9a\\udea0\\udeb0-\\udfff]|\\ud837[\\udc00-\\udeff\\udf1f-\\udfff]|\\ud838[\\udc07\\udc19\\udc1a\\udc22\\udc25\\udc2b-\\udcff\\udd2d-\\udd2f\\udd3e\\udd3f\\udd4a-\\udd4d\\udd50-\\ude8f\\udeaf-\\udebf\\udefa-\\udefe\\udf00-\\udfff]|\\ud839[\\udc00-\\udfdf\\udfe7\\udfec\\udfef\\udfff]|\\ud83a[\\udcc5\\udcc6\\udcd7-\\udcff\\udd4c-\\udd4f\\udd5a-\\udd5d\\udd60-\\udfff]|\\ud83b[\\udc00-\\udc70\\udcb5-\\udd00\\udd3e-\\uddff\\ude04\\ude20\\ude23\\ude25\\ude26\\ude28\\ude33\\ude38\\ude3a\\ude3c-\\ude41\\ude43-\\ude46\\ude48\\ude4a\\ude4c\\ude50\\ude53\\ude55\\ude56\\ude58\\ude5a\\ude5c\\ude5e\\ude60\\ude63\\ude65\\ude66\\ude6b\\ude73\\ude78\\ude7d\\ude7f\\ude8a\\ude9c-\\udea0\\udea4\\udeaa\\udebc-\\udeef\\udef2-\\udfff]|\\ud83c[\\udc2c-\\udc2f\\udc94-\\udc9f\\udcaf\\udcb0\\udcc0\\udcd0\\udcf6-\\udcff\\uddae-\\udde5\\ude03-\\ude0f\\ude3c-\\ude3f\\ude49-\\ude4f\\ude52-\\ude5f\\ude66-\\udeff]|\\ud83d[\\uded8-\\udedc\\udeed-\\udeef\\udefd-\\udeff\\udf74-\\udf7f\\udfd9-\\udfdf\\udfec-\\udfef\\udff1-\\udfff]|\\ud83e[\\udc0c-\\udc0f\\udc48-\\udc4f\\udc5a-\\udc5f\\udc88-\\udc8f\\udcae\\udcaf\\udcb2-\\udcff\\ude54-\\ude5f\\ude6e\\ude6f\\ude75-\\ude77\\ude7d-\\ude7f\\ude87-\\ude8f\\udead-\\udeaf\\udebb-\\udebf\\udec6-\\udecf\\udeda-\\udedf\\udee8-\\udeef\\udef7-\\udeff\\udf93\\udfcb-\\udfef\\udffa-\\udfff]|\\ud869[\\udee0-\\udeff]|\\ud86d[\\udf39-\\udf3f]|\\ud86e[\\udc1e\\udc1f]|\\ud873[\\udea2-\\udeaf]|\\ud87a[\\udfe1-\\udfff]|\\ud87e[\\ude1e-\\udfff]|\\ud884[\\udf4b-\\udfff]|\\udb40[\\udc00-\\udcff\\uddf0-\\udfff]\"},{name:\"Cc\",alias:\"Control\",bmp:\"\\0-\u001f-\"},{name:\"Cf\",alias:\"Format\",bmp:\"­؀-؅؜۝܏࢐࢑࣢᠎​-‏‪-‮⁠-⁤⁦-⁯\\ufeff￹-￻\",astral:\"\\ud804[\\udcbd\\udccd]|\\ud80d[\\udc30-\\udc38]|\\ud82f[\\udca0-\\udca3]|\\ud834[\\udd73-\\udd7a]|\\udb40[\\udc01\\udc20-\\udc7f]\"},{name:\"Cn\",alias:\"Unassigned\",bmp:\"͸͹΀-΃΋΍΢԰՗՘֋֌֐׈-׏׫-׮׵-׿܎݋݌޲-޿߻߼࠮࠯࠿࡜࡝࡟࡫-࡯࢏࢒-ࢗ঄঍঎঑঒঩঱঳-঵঺঻৅৆৉৊৏-৖৘-৛৞৤৥৿਀਄਋-਎਑਒਩਱਴਷਺਻਽੃-੆੉੊੎-੐੒-੘੝੟-੥੷-઀઄઎઒઩઱઴઺઻૆૊૎૏૑-૟૤૥૲-૸଀଄଍଎଑଒଩଱଴଺଻୅୆୉୊୎-୔୘-୛୞୤୥୸-஁஄஋-஍஑஖-஘஛஝஠-஢஥-஧஫-஭஺-஽௃-௅௉௎௏௑-௖௘-௥௻-௿఍఑఩఺఻౅౉౎-౔౗౛౜౞౟౤౥౰-౶಍಑಩಴಺಻೅೉೎-೔೗-೜೟೤೥೰ೳ-೿഍഑൅൉൐-൓൤൥඀඄඗-඙඲඼඾඿෇-෉෋-෎෕෗෠-෥෰෱෵-฀฻-฾๜-຀຃຅຋຤຦຾຿໅໇໎໏໚໛໠-໿཈཭-཰྘྽࿍࿛-࿿჆჈-჌჎჏቉቎቏቗቙቞቟኉኎኏኱኶኷኿዁዆዇዗጑጖጗፛፜፽-፿᎚-᎟᏶᏷᏾᏿᚝-᚟᛹-᛿᜖-᜞᜷-᜿᝔-᝟᝭᝱᝴-᝿៞៟៪-៯៺-៿᠚-᠟᡹-᡿᢫-᢯᣶-᣿᤟᤬-᤯᤼-᤿᥁-᥃᥮᥯᥵-᥿᦬-᦯᧊-᧏᧛-᧝᨜᨝᩟᩽᩾᪊-᪏᪚-᪟᪮᪯᫏-᫿᭍-᭏᭿᯴-᯻᰸-᰺᱊-᱌Ᲊ-᲏᲻᲼᳈-᳏᳻-᳿἖἗἞἟὆὇὎὏὘὚὜὞὾὿᾵῅῔῕῜῰῱῵῿⁥⁲⁳₏₝-₟⃁-⃏⃱-⃿↌-↏␧-␿⑋-⑟⭴⭵⮖⳴-⳸⴦⴨-⴬⴮⴯⵨-⵮⵱-⵾⶗-⶟⶧⶯⶷⶿⷇⷏⷗⷟⹞-⹿⺚⻴-⻿⿖-⿯⿼-⿿぀゗゘㄀-㄄㄰㆏㇤-㇯㈟꒍-꒏꓇-꓏꘬-꘿꛸-꛿Ɤ-꟏꟒꟔Ꟛ-꟱꠭-꠯꠺-꠿꡸-꡿꣆-꣍꣚-꣟꥔-꥞꥽-꥿꧎꧚-꧝꧿꨷-꨿꩎꩏꩚꩛꫃-꫚꫷-꬀꬇꬈꬏꬐꬗-꬟꬧꬯꭬-꭯꯮꯯꯺-꯿힤-힯퟇-퟊퟼-퟿﩮﩯﫚-﫿﬇-﬒﬘-﬜﬷﬽﬿﭂﭅﯃-﯒﶐﶑﷈-﷎﷐-﷯︚-︟﹓﹧﹬-﹯﹵﻽﻾＀﾿-￁￈￉￐￑￘￙￝-￟￧￯-￸￾￿\",astral:\"\\ud800[\\udc0c\\udc27\\udc3b\\udc3e\\udc4e\\udc4f\\udc5e-\\udc7f\\udcfb-\\udcff\\udd03-\\udd06\\udd34-\\udd36\\udd8f\\udd9d-\\udd9f\\udda1-\\uddcf\\uddfe-\\ude7f\\ude9d-\\ude9f\\uded1-\\udedf\\udefc-\\udeff\\udf24-\\udf2c\\udf4b-\\udf4f\\udf7b-\\udf7f\\udf9e\\udfc4-\\udfc7\\udfd6-\\udfff]|\\ud801[\\udc9e\\udc9f\\udcaa-\\udcaf\\udcd4-\\udcd7\\udcfc-\\udcff\\udd28-\\udd2f\\udd64-\\udd6e\\udd7b\\udd8b\\udd93\\udd96\\udda2\\uddb2\\uddba\\uddbd-\\uddff\\udf37-\\udf3f\\udf56-\\udf5f\\udf68-\\udf7f\\udf86\\udfb1\\udfbb-\\udfff]|\\ud802[\\udc06\\udc07\\udc09\\udc36\\udc39-\\udc3b\\udc3d\\udc3e\\udc56\\udc9f-\\udca6\\udcb0-\\udcdf\\udcf3\\udcf6-\\udcfa\\udd1c-\\udd1e\\udd3a-\\udd3e\\udd40-\\udd7f\\uddb8-\\uddbb\\uddd0\\uddd1\\ude04\\ude07-\\ude0b\\ude14\\ude18\\ude36\\ude37\\ude3b-\\ude3e\\ude49-\\ude4f\\ude59-\\ude5f\\udea0-\\udebf\\udee7-\\udeea\\udef7-\\udeff\\udf36-\\udf38\\udf56\\udf57\\udf73-\\udf77\\udf92-\\udf98\\udf9d-\\udfa8\\udfb0-\\udfff]|\\ud803[\\udc49-\\udc7f\\udcb3-\\udcbf\\udcf3-\\udcf9\\udd28-\\udd2f\\udd3a-\\ude5f\\ude7f\\udeaa\\udeae\\udeaf\\udeb2-\\udeff\\udf28-\\udf2f\\udf5a-\\udf6f\\udf8a-\\udfaf\\udfcc-\\udfdf\\udff7-\\udfff]|\\ud804[\\udc4e-\\udc51\\udc76-\\udc7e\\udcc3-\\udccc\\udcce\\udccf\\udce9-\\udcef\\udcfa-\\udcff\\udd35\\udd48-\\udd4f\\udd77-\\udd7f\\udde0\\uddf5-\\uddff\\ude12\\ude3f-\\ude7f\\ude87\\ude89\\ude8e\\ude9e\\udeaa-\\udeaf\\udeeb-\\udeef\\udefa-\\udeff\\udf04\\udf0d\\udf0e\\udf11\\udf12\\udf29\\udf31\\udf34\\udf3a\\udf45\\udf46\\udf49\\udf4a\\udf4e\\udf4f\\udf51-\\udf56\\udf58-\\udf5c\\udf64\\udf65\\udf6d-\\udf6f\\udf75-\\udfff]|\\ud805[\\udc5c\\udc62-\\udc7f\\udcc8-\\udccf\\udcda-\\udd7f\\uddb6\\uddb7\\uddde-\\uddff\\ude45-\\ude4f\\ude5a-\\ude5f\\ude6d-\\ude7f\\udeba-\\udebf\\udeca-\\udeff\\udf1b\\udf1c\\udf2c-\\udf2f\\udf47-\\udfff]|\\ud806[\\udc3c-\\udc9f\\udcf3-\\udcfe\\udd07\\udd08\\udd0a\\udd0b\\udd14\\udd17\\udd36\\udd39\\udd3a\\udd47-\\udd4f\\udd5a-\\udd9f\\udda8\\udda9\\uddd8\\uddd9\\udde5-\\uddff\\ude48-\\ude4f\\udea3-\\udeaf\\udef9-\\udfff]|\\ud807[\\udc09\\udc37\\udc46-\\udc4f\\udc6d-\\udc6f\\udc90\\udc91\\udca8\\udcb7-\\udcff\\udd07\\udd0a\\udd37-\\udd39\\udd3b\\udd3e\\udd48-\\udd4f\\udd5a-\\udd5f\\udd66\\udd69\\udd8f\\udd92\\udd99-\\udd9f\\uddaa-\\udedf\\udef9-\\udfaf\\udfb1-\\udfbf\\udff2-\\udffe]|\\ud808[\\udf9a-\\udfff]|\\ud809[\\udc6f\\udc75-\\udc7f\\udd44-\\udfff]|[\\ud80a\\ud80e-\\ud810\\ud812-\\ud819\\ud824-\\ud82a\\ud82d\\ud82e\\ud830-\\ud832\\ud83f\\ud87b-\\ud87d\\ud87f\\ud885-\\udb3f\\udb41-\\udb7f][\\udc00-\\udfff]|\\ud80b[\\udc00-\\udf8f\\udff3-\\udfff]|\\ud80d[\\udc2f\\udc39-\\udfff]|\\ud811[\\ude47-\\udfff]|\\ud81a[\\ude39-\\ude3f\\ude5f\\ude6a-\\ude6d\\udebf\\udeca-\\udecf\\udeee\\udeef\\udef6-\\udeff\\udf46-\\udf4f\\udf5a\\udf62\\udf78-\\udf7c\\udf90-\\udfff]|\\ud81b[\\udc00-\\ude3f\\ude9b-\\udeff\\udf4b-\\udf4e\\udf88-\\udf8e\\udfa0-\\udfdf\\udfe5-\\udfef\\udff2-\\udfff]|\\ud821[\\udff8-\\udfff]|\\ud823[\\udcd6-\\udcff\\udd09-\\udfff]|\\ud82b[\\udc00-\\udfef\\udff4\\udffc\\udfff]|\\ud82c[\\udd23-\\udd4f\\udd53-\\udd63\\udd68-\\udd6f\\udefc-\\udfff]|\\ud82f[\\udc6b-\\udc6f\\udc7d-\\udc7f\\udc89-\\udc8f\\udc9a\\udc9b\\udca4-\\udfff]|\\ud833[\\udc00-\\udeff\\udf2e\\udf2f\\udf47-\\udf4f\\udfc4-\\udfff]|\\ud834[\\udcf6-\\udcff\\udd27\\udd28\\uddeb-\\uddff\\ude46-\\udedf\\udef4-\\udeff\\udf57-\\udf5f\\udf79-\\udfff]|\\ud835[\\udc55\\udc9d\\udca0\\udca1\\udca3\\udca4\\udca7\\udca8\\udcad\\udcba\\udcbc\\udcc4\\udd06\\udd0b\\udd0c\\udd15\\udd1d\\udd3a\\udd3f\\udd45\\udd47-\\udd49\\udd51\\udea6\\udea7\\udfcc\\udfcd]|\\ud836[\\ude8c-\\ude9a\\udea0\\udeb0-\\udfff]|\\ud837[\\udc00-\\udeff\\udf1f-\\udfff]|\\ud838[\\udc07\\udc19\\udc1a\\udc22\\udc25\\udc2b-\\udcff\\udd2d-\\udd2f\\udd3e\\udd3f\\udd4a-\\udd4d\\udd50-\\ude8f\\udeaf-\\udebf\\udefa-\\udefe\\udf00-\\udfff]|\\ud839[\\udc00-\\udfdf\\udfe7\\udfec\\udfef\\udfff]|\\ud83a[\\udcc5\\udcc6\\udcd7-\\udcff\\udd4c-\\udd4f\\udd5a-\\udd5d\\udd60-\\udfff]|\\ud83b[\\udc00-\\udc70\\udcb5-\\udd00\\udd3e-\\uddff\\ude04\\ude20\\ude23\\ude25\\ude26\\ude28\\ude33\\ude38\\ude3a\\ude3c-\\ude41\\ude43-\\ude46\\ude48\\ude4a\\ude4c\\ude50\\ude53\\ude55\\ude56\\ude58\\ude5a\\ude5c\\ude5e\\ude60\\ude63\\ude65\\ude66\\ude6b\\ude73\\ude78\\ude7d\\ude7f\\ude8a\\ude9c-\\udea0\\udea4\\udeaa\\udebc-\\udeef\\udef2-\\udfff]|\\ud83c[\\udc2c-\\udc2f\\udc94-\\udc9f\\udcaf\\udcb0\\udcc0\\udcd0\\udcf6-\\udcff\\uddae-\\udde5\\ude03-\\ude0f\\ude3c-\\ude3f\\ude49-\\ude4f\\ude52-\\ude5f\\ude66-\\udeff]|\\ud83d[\\uded8-\\udedc\\udeed-\\udeef\\udefd-\\udeff\\udf74-\\udf7f\\udfd9-\\udfdf\\udfec-\\udfef\\udff1-\\udfff]|\\ud83e[\\udc0c-\\udc0f\\udc48-\\udc4f\\udc5a-\\udc5f\\udc88-\\udc8f\\udcae\\udcaf\\udcb2-\\udcff\\ude54-\\ude5f\\ude6e\\ude6f\\ude75-\\ude77\\ude7d-\\ude7f\\ude87-\\ude8f\\udead-\\udeaf\\udebb-\\udebf\\udec6-\\udecf\\udeda-\\udedf\\udee8-\\udeef\\udef7-\\udeff\\udf93\\udfcb-\\udfef\\udffa-\\udfff]|\\ud869[\\udee0-\\udeff]|\\ud86d[\\udf39-\\udf3f]|\\ud86e[\\udc1e\\udc1f]|\\ud873[\\udea2-\\udeaf]|\\ud87a[\\udfe1-\\udfff]|\\ud87e[\\ude1e-\\udfff]|\\ud884[\\udf4b-\\udfff]|\\udb40[\\udc00\\udc02-\\udc1f\\udc80-\\udcff\\uddf0-\\udfff]|[\\udbbf\\udbff][\\udffe\\udfff]\"},{name:\"Co\",alias:\"Private_Use\",bmp:\"-\",astral:\"[\\udb80-\\udbbe\\udbc0-\\udbfe][\\udc00-\\udfff]|[\\udbbf\\udbff][\\udc00-\\udffd]\"},{name:\"Cs\",alias:\"Surrogate\",bmp:\"\\ud800-\\udfff\"},{name:\"L\",alias:\"Letter\",bmp:\"A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣉऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೝೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々〆〱-〵〻〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛥꜗ-ꜟꜢ-ꞈꞋ-ꟊꟐꟑꟓꟕ-ꟙꟲ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼＡ-Ｚａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ\",astral:\"\\ud800[\\udc00-\\udc0b\\udc0d-\\udc26\\udc28-\\udc3a\\udc3c\\udc3d\\udc3f-\\udc4d\\udc50-\\udc5d\\udc80-\\udcfa\\ude80-\\ude9c\\udea0-\\uded0\\udf00-\\udf1f\\udf2d-\\udf40\\udf42-\\udf49\\udf50-\\udf75\\udf80-\\udf9d\\udfa0-\\udfc3\\udfc8-\\udfcf]|\\ud801[\\udc00-\\udc9d\\udcb0-\\udcd3\\udcd8-\\udcfb\\udd00-\\udd27\\udd30-\\udd63\\udd70-\\udd7a\\udd7c-\\udd8a\\udd8c-\\udd92\\udd94\\udd95\\udd97-\\udda1\\udda3-\\uddb1\\uddb3-\\uddb9\\uddbb\\uddbc\\ude00-\\udf36\\udf40-\\udf55\\udf60-\\udf67\\udf80-\\udf85\\udf87-\\udfb0\\udfb2-\\udfba]|\\ud802[\\udc00-\\udc05\\udc08\\udc0a-\\udc35\\udc37\\udc38\\udc3c\\udc3f-\\udc55\\udc60-\\udc76\\udc80-\\udc9e\\udce0-\\udcf2\\udcf4\\udcf5\\udd00-\\udd15\\udd20-\\udd39\\udd80-\\uddb7\\uddbe\\uddbf\\ude00\\ude10-\\ude13\\ude15-\\ude17\\ude19-\\ude35\\ude60-\\ude7c\\ude80-\\ude9c\\udec0-\\udec7\\udec9-\\udee4\\udf00-\\udf35\\udf40-\\udf55\\udf60-\\udf72\\udf80-\\udf91]|\\ud803[\\udc00-\\udc48\\udc80-\\udcb2\\udcc0-\\udcf2\\udd00-\\udd23\\ude80-\\udea9\\udeb0\\udeb1\\udf00-\\udf1c\\udf27\\udf30-\\udf45\\udf70-\\udf81\\udfb0-\\udfc4\\udfe0-\\udff6]|\\ud804[\\udc03-\\udc37\\udc71\\udc72\\udc75\\udc83-\\udcaf\\udcd0-\\udce8\\udd03-\\udd26\\udd44\\udd47\\udd50-\\udd72\\udd76\\udd83-\\uddb2\\uddc1-\\uddc4\\uddda\\udddc\\ude00-\\ude11\\ude13-\\ude2b\\ude80-\\ude86\\ude88\\ude8a-\\ude8d\\ude8f-\\ude9d\\ude9f-\\udea8\\udeb0-\\udede\\udf05-\\udf0c\\udf0f\\udf10\\udf13-\\udf28\\udf2a-\\udf30\\udf32\\udf33\\udf35-\\udf39\\udf3d\\udf50\\udf5d-\\udf61]|\\ud805[\\udc00-\\udc34\\udc47-\\udc4a\\udc5f-\\udc61\\udc80-\\udcaf\\udcc4\\udcc5\\udcc7\\udd80-\\uddae\\uddd8-\\udddb\\ude00-\\ude2f\\ude44\\ude80-\\udeaa\\udeb8\\udf00-\\udf1a\\udf40-\\udf46]|\\ud806[\\udc00-\\udc2b\\udca0-\\udcdf\\udcff-\\udd06\\udd09\\udd0c-\\udd13\\udd15\\udd16\\udd18-\\udd2f\\udd3f\\udd41\\udda0-\\udda7\\uddaa-\\uddd0\\udde1\\udde3\\ude00\\ude0b-\\ude32\\ude3a\\ude50\\ude5c-\\ude89\\ude9d\\udeb0-\\udef8]|\\ud807[\\udc00-\\udc08\\udc0a-\\udc2e\\udc40\\udc72-\\udc8f\\udd00-\\udd06\\udd08\\udd09\\udd0b-\\udd30\\udd46\\udd60-\\udd65\\udd67\\udd68\\udd6a-\\udd89\\udd98\\udee0-\\udef2\\udfb0]|\\ud808[\\udc00-\\udf99]|\\ud809[\\udc80-\\udd43]|\\ud80b[\\udf90-\\udff0]|[\\ud80c\\ud81c-\\ud820\\ud822\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879\\ud880-\\ud883][\\udc00-\\udfff]|\\ud80d[\\udc00-\\udc2e]|\\ud811[\\udc00-\\ude46]|\\ud81a[\\udc00-\\ude38\\ude40-\\ude5e\\ude70-\\udebe\\uded0-\\udeed\\udf00-\\udf2f\\udf40-\\udf43\\udf63-\\udf77\\udf7d-\\udf8f]|\\ud81b[\\ude40-\\ude7f\\udf00-\\udf4a\\udf50\\udf93-\\udf9f\\udfe0\\udfe1\\udfe3]|\\ud821[\\udc00-\\udff7]|\\ud823[\\udc00-\\udcd5\\udd00-\\udd08]|\\ud82b[\\udff0-\\udff3\\udff5-\\udffb\\udffd\\udffe]|\\ud82c[\\udc00-\\udd22\\udd50-\\udd52\\udd64-\\udd67\\udd70-\\udefb]|\\ud82f[\\udc00-\\udc6a\\udc70-\\udc7c\\udc80-\\udc88\\udc90-\\udc99]|\\ud835[\\udc00-\\udc54\\udc56-\\udc9c\\udc9e\\udc9f\\udca2\\udca5\\udca6\\udca9-\\udcac\\udcae-\\udcb9\\udcbb\\udcbd-\\udcc3\\udcc5-\\udd05\\udd07-\\udd0a\\udd0d-\\udd14\\udd16-\\udd1c\\udd1e-\\udd39\\udd3b-\\udd3e\\udd40-\\udd44\\udd46\\udd4a-\\udd50\\udd52-\\udea5\\udea8-\\udec0\\udec2-\\udeda\\udedc-\\udefa\\udefc-\\udf14\\udf16-\\udf34\\udf36-\\udf4e\\udf50-\\udf6e\\udf70-\\udf88\\udf8a-\\udfa8\\udfaa-\\udfc2\\udfc4-\\udfcb]|\\ud837[\\udf00-\\udf1e]|\\ud838[\\udd00-\\udd2c\\udd37-\\udd3d\\udd4e\\ude90-\\udead\\udec0-\\udeeb]|\\ud839[\\udfe0-\\udfe6\\udfe8-\\udfeb\\udfed\\udfee\\udff0-\\udffe]|\\ud83a[\\udc00-\\udcc4\\udd00-\\udd43\\udd4b]|\\ud83b[\\ude00-\\ude03\\ude05-\\ude1f\\ude21\\ude22\\ude24\\ude27\\ude29-\\ude32\\ude34-\\ude37\\ude39\\ude3b\\ude42\\ude47\\ude49\\ude4b\\ude4d-\\ude4f\\ude51\\ude52\\ude54\\ude57\\ude59\\ude5b\\ude5d\\ude5f\\ude61\\ude62\\ude64\\ude67-\\ude6a\\ude6c-\\ude72\\ude74-\\ude77\\ude79-\\ude7c\\ude7e\\ude80-\\ude89\\ude8b-\\ude9b\\udea1-\\udea3\\udea5-\\udea9\\udeab-\\udebb]|\\ud869[\\udc00-\\udedf\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf38\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d]|\\ud884[\\udc00-\\udf4a]\"},{name:\"LC\",alias:\"Cased_Letter\",bmp:\"A-Za-zµÀ-ÖØ-öø-ƺƼ-ƿǄ-ʓʕ-ʯͰ-ͳͶͷͻ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՠ-ֈႠ-ჅჇჍა-ჺჽ-ჿᎠ-Ᏽᏸ-ᏽᲀ-ᲈᲐ-ᲺᲽ-Ჿᴀ-ᴫᵫ-ᵷᵹ-ᶚḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℴℹℼ-ℿⅅ-ⅉⅎↃↄⰀ-ⱻⱾ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭꙀ-ꙭꚀ-ꚛꜢ-ꝯꝱ-ꞇꞋ-ꞎꞐ-ꟊꟐꟑꟓꟕ-ꟙꟵꟶꟺꬰ-ꭚꭠ-ꭨꭰ-ꮿﬀ-ﬆﬓ-ﬗＡ-Ｚａ-ｚ\",astral:\"\\ud801[\\udc00-\\udc4f\\udcb0-\\udcd3\\udcd8-\\udcfb\\udd70-\\udd7a\\udd7c-\\udd8a\\udd8c-\\udd92\\udd94\\udd95\\udd97-\\udda1\\udda3-\\uddb1\\uddb3-\\uddb9\\uddbb\\uddbc]|\\ud803[\\udc80-\\udcb2\\udcc0-\\udcf2]|\\ud806[\\udca0-\\udcdf]|\\ud81b[\\ude40-\\ude7f]|\\ud835[\\udc00-\\udc54\\udc56-\\udc9c\\udc9e\\udc9f\\udca2\\udca5\\udca6\\udca9-\\udcac\\udcae-\\udcb9\\udcbb\\udcbd-\\udcc3\\udcc5-\\udd05\\udd07-\\udd0a\\udd0d-\\udd14\\udd16-\\udd1c\\udd1e-\\udd39\\udd3b-\\udd3e\\udd40-\\udd44\\udd46\\udd4a-\\udd50\\udd52-\\udea5\\udea8-\\udec0\\udec2-\\udeda\\udedc-\\udefa\\udefc-\\udf14\\udf16-\\udf34\\udf36-\\udf4e\\udf50-\\udf6e\\udf70-\\udf88\\udf8a-\\udfa8\\udfaa-\\udfc2\\udfc4-\\udfcb]|\\ud837[\\udf00-\\udf09\\udf0b-\\udf1e]|\\ud83a[\\udd00-\\udd43]\"},{name:\"Ll\",alias:\"Lowercase_Letter\",bmp:\"a-zµß-öø-ÿāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįıĳĵķĸĺļľŀłńņňŉŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷźżž-ƀƃƅƈƌƍƒƕƙ-ƛƞơƣƥƨƪƫƭưƴƶƹƺƽ-ƿǆǉǌǎǐǒǔǖǘǚǜǝǟǡǣǥǧǩǫǭǯǰǳǵǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟȡȣȥȧȩȫȭȯȱȳ-ȹȼȿɀɂɇɉɋɍɏ-ʓʕ-ʯͱͳͷͻ-ͽΐά-ώϐϑϕ-ϗϙϛϝϟϡϣϥϧϩϫϭϯ-ϳϵϸϻϼа-џѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӏӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯՠ-ֈა-ჺჽ-ჿᏸ-ᏽᲀ-ᲈᴀ-ᴫᵫ-ᵷᵹ-ᶚḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕ-ẝẟạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿ-ἇἐ-ἕἠ-ἧἰ-ἷὀ-ὅὐ-ὗὠ-ὧὰ-ώᾀ-ᾇᾐ-ᾗᾠ-ᾧᾰ-ᾴᾶᾷιῂ-ῄῆῇῐ-ΐῖῗῠ-ῧῲ-ῴῶῷℊℎℏℓℯℴℹℼℽⅆ-ⅉⅎↄⰰ-ⱟⱡⱥⱦⱨⱪⱬⱱⱳⱴⱶ-ⱻⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳤⳬⳮⳳⴀ-ⴥⴧⴭꙁꙃꙅꙇꙉꙋꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛꜣꜥꜧꜩꜫꜭꜯ-ꜱꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝱ-ꝸꝺꝼꝿꞁꞃꞅꞇꞌꞎꞑꞓ-ꞕꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩꞯꞵꞷꞹꞻꞽꞿꟁꟃꟈꟊꟑꟓꟕꟗꟙꟶꟺꬰ-ꭚꭠ-ꭨꭰ-ꮿﬀ-ﬆﬓ-ﬗａ-ｚ\",astral:\"\\ud801[\\udc28-\\udc4f\\udcd8-\\udcfb\\udd97-\\udda1\\udda3-\\uddb1\\uddb3-\\uddb9\\uddbb\\uddbc]|\\ud803[\\udcc0-\\udcf2]|\\ud806[\\udcc0-\\udcdf]|\\ud81b[\\ude60-\\ude7f]|\\ud835[\\udc1a-\\udc33\\udc4e-\\udc54\\udc56-\\udc67\\udc82-\\udc9b\\udcb6-\\udcb9\\udcbb\\udcbd-\\udcc3\\udcc5-\\udccf\\udcea-\\udd03\\udd1e-\\udd37\\udd52-\\udd6b\\udd86-\\udd9f\\uddba-\\uddd3\\uddee-\\ude07\\ude22-\\ude3b\\ude56-\\ude6f\\ude8a-\\udea5\\udec2-\\udeda\\udedc-\\udee1\\udefc-\\udf14\\udf16-\\udf1b\\udf36-\\udf4e\\udf50-\\udf55\\udf70-\\udf88\\udf8a-\\udf8f\\udfaa-\\udfc2\\udfc4-\\udfc9\\udfcb]|\\ud837[\\udf00-\\udf09\\udf0b-\\udf1e]|\\ud83a[\\udd22-\\udd43]\"},{name:\"Lm\",alias:\"Modifier_Letter\",bmp:\"ʰ-ˁˆ-ˑˠ-ˤˬˮʹͺՙـۥۦߴߵߺࠚࠤࠨࣉॱๆໆჼៗᡃᪧᱸ-ᱽᴬ-ᵪᵸᶛ-ᶿⁱⁿₐ-ₜⱼⱽⵯⸯ々〱-〵〻ゝゞー-ヾꀕꓸ-ꓽꘌꙿꚜꚝꜗ-ꜟꝰꞈꟲ-ꟴꟸꟹꧏꧦꩰꫝꫳꫴꭜ-ꭟꭩｰﾞﾟ\",astral:\"\\ud801[\\udf80-\\udf85\\udf87-\\udfb0\\udfb2-\\udfba]|\\ud81a[\\udf40-\\udf43]|\\ud81b[\\udf93-\\udf9f\\udfe0\\udfe1\\udfe3]|\\ud82b[\\udff0-\\udff3\\udff5-\\udffb\\udffd\\udffe]|\\ud838[\\udd37-\\udd3d]|𞥋\"},{name:\"Lo\",alias:\"Other_Letter\",bmp:\"ªºƻǀ-ǃʔא-תׯ-ײؠ-ؿف-يٮٯٱ-ۓەۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪࠀ-ࠕࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢎࢠ-ࣈऄ-हऽॐक़-ॡॲ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೝೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๅກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎᄀ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛱ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៜᠠ-ᡂᡄ-ᡸᢀ-ᢄᢇ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱷᳩ-ᳬᳮ-ᳳᳵᳶᳺℵ-ℸⴰ-ⵧⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ〆〼ぁ-ゖゟァ-ヺヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꀔꀖ-ꒌꓐ-ꓷꔀ-ꘋꘐ-ꘟꘪꘫꙮꚠ-ꛥꞏꟷꟻ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧠ-ꧤꧧ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩯꩱ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛꫜꫠ-ꫪꫲꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎יִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼｦ-ｯｱ-ﾝﾠ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ\",astral:\"\\ud800[\\udc00-\\udc0b\\udc0d-\\udc26\\udc28-\\udc3a\\udc3c\\udc3d\\udc3f-\\udc4d\\udc50-\\udc5d\\udc80-\\udcfa\\ude80-\\ude9c\\udea0-\\uded0\\udf00-\\udf1f\\udf2d-\\udf40\\udf42-\\udf49\\udf50-\\udf75\\udf80-\\udf9d\\udfa0-\\udfc3\\udfc8-\\udfcf]|\\ud801[\\udc50-\\udc9d\\udd00-\\udd27\\udd30-\\udd63\\ude00-\\udf36\\udf40-\\udf55\\udf60-\\udf67]|\\ud802[\\udc00-\\udc05\\udc08\\udc0a-\\udc35\\udc37\\udc38\\udc3c\\udc3f-\\udc55\\udc60-\\udc76\\udc80-\\udc9e\\udce0-\\udcf2\\udcf4\\udcf5\\udd00-\\udd15\\udd20-\\udd39\\udd80-\\uddb7\\uddbe\\uddbf\\ude00\\ude10-\\ude13\\ude15-\\ude17\\ude19-\\ude35\\ude60-\\ude7c\\ude80-\\ude9c\\udec0-\\udec7\\udec9-\\udee4\\udf00-\\udf35\\udf40-\\udf55\\udf60-\\udf72\\udf80-\\udf91]|\\ud803[\\udc00-\\udc48\\udd00-\\udd23\\ude80-\\udea9\\udeb0\\udeb1\\udf00-\\udf1c\\udf27\\udf30-\\udf45\\udf70-\\udf81\\udfb0-\\udfc4\\udfe0-\\udff6]|\\ud804[\\udc03-\\udc37\\udc71\\udc72\\udc75\\udc83-\\udcaf\\udcd0-\\udce8\\udd03-\\udd26\\udd44\\udd47\\udd50-\\udd72\\udd76\\udd83-\\uddb2\\uddc1-\\uddc4\\uddda\\udddc\\ude00-\\ude11\\ude13-\\ude2b\\ude80-\\ude86\\ude88\\ude8a-\\ude8d\\ude8f-\\ude9d\\ude9f-\\udea8\\udeb0-\\udede\\udf05-\\udf0c\\udf0f\\udf10\\udf13-\\udf28\\udf2a-\\udf30\\udf32\\udf33\\udf35-\\udf39\\udf3d\\udf50\\udf5d-\\udf61]|\\ud805[\\udc00-\\udc34\\udc47-\\udc4a\\udc5f-\\udc61\\udc80-\\udcaf\\udcc4\\udcc5\\udcc7\\udd80-\\uddae\\uddd8-\\udddb\\ude00-\\ude2f\\ude44\\ude80-\\udeaa\\udeb8\\udf00-\\udf1a\\udf40-\\udf46]|\\ud806[\\udc00-\\udc2b\\udcff-\\udd06\\udd09\\udd0c-\\udd13\\udd15\\udd16\\udd18-\\udd2f\\udd3f\\udd41\\udda0-\\udda7\\uddaa-\\uddd0\\udde1\\udde3\\ude00\\ude0b-\\ude32\\ude3a\\ude50\\ude5c-\\ude89\\ude9d\\udeb0-\\udef8]|\\ud807[\\udc00-\\udc08\\udc0a-\\udc2e\\udc40\\udc72-\\udc8f\\udd00-\\udd06\\udd08\\udd09\\udd0b-\\udd30\\udd46\\udd60-\\udd65\\udd67\\udd68\\udd6a-\\udd89\\udd98\\udee0-\\udef2\\udfb0]|\\ud808[\\udc00-\\udf99]|\\ud809[\\udc80-\\udd43]|\\ud80b[\\udf90-\\udff0]|[\\ud80c\\ud81c-\\ud820\\ud822\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879\\ud880-\\ud883][\\udc00-\\udfff]|\\ud80d[\\udc00-\\udc2e]|\\ud811[\\udc00-\\ude46]|\\ud81a[\\udc00-\\ude38\\ude40-\\ude5e\\ude70-\\udebe\\uded0-\\udeed\\udf00-\\udf2f\\udf63-\\udf77\\udf7d-\\udf8f]|\\ud81b[\\udf00-\\udf4a\\udf50]|\\ud821[\\udc00-\\udff7]|\\ud823[\\udc00-\\udcd5\\udd00-\\udd08]|\\ud82c[\\udc00-\\udd22\\udd50-\\udd52\\udd64-\\udd67\\udd70-\\udefb]|\\ud82f[\\udc00-\\udc6a\\udc70-\\udc7c\\udc80-\\udc88\\udc90-\\udc99]|𝼊|\\ud838[\\udd00-\\udd2c\\udd4e\\ude90-\\udead\\udec0-\\udeeb]|\\ud839[\\udfe0-\\udfe6\\udfe8-\\udfeb\\udfed\\udfee\\udff0-\\udffe]|\\ud83a[\\udc00-\\udcc4]|\\ud83b[\\ude00-\\ude03\\ude05-\\ude1f\\ude21\\ude22\\ude24\\ude27\\ude29-\\ude32\\ude34-\\ude37\\ude39\\ude3b\\ude42\\ude47\\ude49\\ude4b\\ude4d-\\ude4f\\ude51\\ude52\\ude54\\ude57\\ude59\\ude5b\\ude5d\\ude5f\\ude61\\ude62\\ude64\\ude67-\\ude6a\\ude6c-\\ude72\\ude74-\\ude77\\ude79-\\ude7c\\ude7e\\ude80-\\ude89\\ude8b-\\ude9b\\udea1-\\udea3\\udea5-\\udea9\\udeab-\\udebb]|\\ud869[\\udc00-\\udedf\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf38\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d]|\\ud884[\\udc00-\\udf4a]\"},{name:\"Lt\",alias:\"Titlecase_Letter\",bmp:\"ǅǈǋǲᾈ-ᾏᾘ-ᾟᾨ-ᾯᾼῌῼ\"},{name:\"Lu\",alias:\"Uppercase_Letter\",bmp:\"A-ZÀ-ÖØ-ÞĀĂĄĆĈĊČĎĐĒĔĖĘĚĜĞĠĢĤĦĨĪĬĮİĲĴĶĹĻĽĿŁŃŅŇŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶŸŹŻŽƁƂƄƆƇƉ-ƋƎ-ƑƓƔƖ-ƘƜƝƟƠƢƤƦƧƩƬƮƯƱ-ƳƵƷƸƼǄǇǊǍǏǑǓǕǗǙǛǞǠǢǤǦǨǪǬǮǱǴǶ-ǸǺǼǾȀȂȄȆȈȊȌȎȐȒȔȖȘȚȜȞȠȢȤȦȨȪȬȮȰȲȺȻȽȾɁɃ-ɆɈɊɌɎͰͲͶͿΆΈ-ΊΌΎΏΑ-ΡΣ-ΫϏϒ-ϔϘϚϜϞϠϢϤϦϨϪϬϮϴϷϹϺϽ-ЯѠѢѤѦѨѪѬѮѰѲѴѶѸѺѼѾҀҊҌҎҐҒҔҖҘҚҜҞҠҢҤҦҨҪҬҮҰҲҴҶҸҺҼҾӀӁӃӅӇӉӋӍӐӒӔӖӘӚӜӞӠӢӤӦӨӪӬӮӰӲӴӶӸӺӼӾԀԂԄԆԈԊԌԎԐԒԔԖԘԚԜԞԠԢԤԦԨԪԬԮԱ-ՖႠ-ჅჇჍᎠ-ᏵᲐ-ᲺᲽ-ᲿḀḂḄḆḈḊḌḎḐḒḔḖḘḚḜḞḠḢḤḦḨḪḬḮḰḲḴḶḸḺḼḾṀṂṄṆṈṊṌṎṐṒṔṖṘṚṜṞṠṢṤṦṨṪṬṮṰṲṴṶṸṺṼṾẀẂẄẆẈẊẌẎẐẒẔẞẠẢẤẦẨẪẬẮẰẲẴẶẸẺẼẾỀỂỄỆỈỊỌỎỐỒỔỖỘỚỜỞỠỢỤỦỨỪỬỮỰỲỴỶỸỺỼỾἈ-ἏἘ-ἝἨ-ἯἸ-ἿὈ-ὍὙὛὝὟὨ-ὯᾸ-ΆῈ-ΉῘ-ΊῨ-ῬῸ-Ώℂℇℋ-ℍℐ-ℒℕℙ-ℝℤΩℨK-ℭℰ-ℳℾℿⅅↃⰀ-ⰯⱠⱢ-ⱤⱧⱩⱫⱭ-ⱰⱲⱵⱾ-ⲀⲂⲄⲆⲈⲊⲌⲎⲐⲒⲔⲖⲘⲚⲜⲞⲠⲢⲤⲦⲨⲪⲬⲮⲰⲲⲴⲶⲸⲺⲼⲾⳀⳂⳄⳆⳈⳊⳌⳎⳐⳒⳔⳖⳘⳚⳜⳞⳠⳢⳫⳭⳲꙀꙂꙄꙆꙈꙊꙌꙎꙐꙒꙔꙖꙘꙚꙜꙞꙠꙢꙤꙦꙨꙪꙬꚀꚂꚄꚆꚈꚊꚌꚎꚐꚒꚔꚖꚘꚚꜢꜤꜦꜨꜪꜬꜮꜲꜴꜶꜸꜺꜼꜾꝀꝂꝄꝆꝈꝊꝌꝎꝐꝒꝔꝖꝘꝚꝜꝞꝠꝢꝤꝦꝨꝪꝬꝮꝹꝻꝽꝾꞀꞂꞄꞆꞋꞍꞐꞒꞖꞘꞚꞜꞞꞠꞢꞤꞦꞨꞪ-ꞮꞰ-ꞴꞶꞸꞺꞼꞾꟀꟂꟄ-ꟇꟉꟐꟖꟘꟵＡ-Ｚ\",astral:\"\\ud801[\\udc00-\\udc27\\udcb0-\\udcd3\\udd70-\\udd7a\\udd7c-\\udd8a\\udd8c-\\udd92\\udd94\\udd95]|\\ud803[\\udc80-\\udcb2]|\\ud806[\\udca0-\\udcbf]|\\ud81b[\\ude40-\\ude5f]|\\ud835[\\udc00-\\udc19\\udc34-\\udc4d\\udc68-\\udc81\\udc9c\\udc9e\\udc9f\\udca2\\udca5\\udca6\\udca9-\\udcac\\udcae-\\udcb5\\udcd0-\\udce9\\udd04\\udd05\\udd07-\\udd0a\\udd0d-\\udd14\\udd16-\\udd1c\\udd38\\udd39\\udd3b-\\udd3e\\udd40-\\udd44\\udd46\\udd4a-\\udd50\\udd6c-\\udd85\\udda0-\\uddb9\\uddd4-\\udded\\ude08-\\ude21\\ude3c-\\ude55\\ude70-\\ude89\\udea8-\\udec0\\udee2-\\udefa\\udf1c-\\udf34\\udf56-\\udf6e\\udf90-\\udfa8\\udfca]|\\ud83a[\\udd00-\\udd21]\"},{name:\"M\",alias:\"Mark\",bmp:\"̀-ͯ҃-҉֑-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࢘-࢟࣊-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣঁ-ঃ়া-ৄেৈো-্ৗৢৣ৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑੰੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍୕-ୗୢୣஂா-ூெ-ைொ-்ௗఀ-ఄ఼ా-ౄె-ైొ-్ౕౖౢౣಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣඁ-ඃ්ා-ුූෘ-ෟෲෳัิ-ฺ็-๎ັິ-ຼ່-ໍ༹༘༙༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏႚ-ႝ፝-፟ᜒ-᜕ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝᠋-᠍᠏ᢅᢆᢩᤠ-ᤫᤰ-᤻ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼᪰-ᫎᬀ-ᬄ᬴-᭄᭫-᭳ᮀ-ᮂᮡ-ᮭ᯦-᯳ᰤ-᰷᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷿⃐-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꙯-꙲ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧ꠬ꢀꢁꢴ-ꣅ꣠-꣱ꣿꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀ꧥꨩ-ꨶꩃꩌꩍꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭ﬞ︀-️︠-︯\",astral:\"\\ud800[\\uddfd\\udee0\\udf76-\\udf7a]|\\ud802[\\ude01-\\ude03\\ude05\\ude06\\ude0c-\\ude0f\\ude38-\\ude3a\\ude3f\\udee5\\udee6]|\\ud803[\\udd24-\\udd27\\udeab\\udeac\\udf46-\\udf50\\udf82-\\udf85]|\\ud804[\\udc00-\\udc02\\udc38-\\udc46\\udc70\\udc73\\udc74\\udc7f-\\udc82\\udcb0-\\udcba\\udcc2\\udd00-\\udd02\\udd27-\\udd34\\udd45\\udd46\\udd73\\udd80-\\udd82\\uddb3-\\uddc0\\uddc9-\\uddcc\\uddce\\uddcf\\ude2c-\\ude37\\ude3e\\udedf-\\udeea\\udf00-\\udf03\\udf3b\\udf3c\\udf3e-\\udf44\\udf47\\udf48\\udf4b-\\udf4d\\udf57\\udf62\\udf63\\udf66-\\udf6c\\udf70-\\udf74]|\\ud805[\\udc35-\\udc46\\udc5e\\udcb0-\\udcc3\\uddaf-\\uddb5\\uddb8-\\uddc0\\udddc\\udddd\\ude30-\\ude40\\udeab-\\udeb7\\udf1d-\\udf2b]|\\ud806[\\udc2c-\\udc3a\\udd30-\\udd35\\udd37\\udd38\\udd3b-\\udd3e\\udd40\\udd42\\udd43\\uddd1-\\uddd7\\uddda-\\udde0\\udde4\\ude01-\\ude0a\\ude33-\\ude39\\ude3b-\\ude3e\\ude47\\ude51-\\ude5b\\ude8a-\\ude99]|\\ud807[\\udc2f-\\udc36\\udc38-\\udc3f\\udc92-\\udca7\\udca9-\\udcb6\\udd31-\\udd36\\udd3a\\udd3c\\udd3d\\udd3f-\\udd45\\udd47\\udd8a-\\udd8e\\udd90\\udd91\\udd93-\\udd97\\udef3-\\udef6]|\\ud81a[\\udef0-\\udef4\\udf30-\\udf36]|\\ud81b[\\udf4f\\udf51-\\udf87\\udf8f-\\udf92\\udfe4\\udff0\\udff1]|\\ud82f[\\udc9d\\udc9e]|\\ud833[\\udf00-\\udf2d\\udf30-\\udf46]|\\ud834[\\udd65-\\udd69\\udd6d-\\udd72\\udd7b-\\udd82\\udd85-\\udd8b\\uddaa-\\uddad\\ude42-\\ude44]|\\ud836[\\ude00-\\ude36\\ude3b-\\ude6c\\ude75\\ude84\\ude9b-\\ude9f\\udea1-\\udeaf]|\\ud838[\\udc00-\\udc06\\udc08-\\udc18\\udc1b-\\udc21\\udc23\\udc24\\udc26-\\udc2a\\udd30-\\udd36\\udeae\\udeec-\\udeef]|\\ud83a[\\udcd0-\\udcd6\\udd44-\\udd4a]|\\udb40[\\udd00-\\uddef]\"},{name:\"Mc\",alias:\"Spacing_Mark\",bmp:\"ःऻा-ीॉ-ौॎॏংঃা-ীেৈোৌৗਃਾ-ੀઃા-ીૉોૌଂଃାୀେୈୋୌୗாிுூெ-ைொ-ௌௗఁ-ఃు-ౄಂಃಾೀ-ೄೇೈೊೋೕೖംഃാ-ീെ-ൈൊ-ൌൗංඃා-ෑෘ-ෟෲෳ༾༿ཿါာေးျြၖၗၢ-ၤၧ-ၭႃႄႇ-ႌႏႚ-ႜ᜕᜴ាើ-ៅះៈᤣ-ᤦᤩ-ᤫᤰᤱᤳ-ᤸᨙᨚᩕᩗᩡᩣᩤᩭ-ᩲᬄᬵᬻᬽ-ᭁᭃ᭄ᮂᮡᮦᮧ᮪ᯧᯪ-ᯬᯮ᯲᯳ᰤ-ᰫᰴᰵ᳡᳷〮〯ꠣꠤꠧꢀꢁꢴ-ꣃꥒ꥓ꦃꦴꦵꦺꦻꦾ-꧀ꨯꨰꨳꨴꩍꩻꩽꫫꫮꫯꫵꯣꯤꯦꯧꯩꯪ꯬\",astral:\"\\ud804[\\udc00\\udc02\\udc82\\udcb0-\\udcb2\\udcb7\\udcb8\\udd2c\\udd45\\udd46\\udd82\\uddb3-\\uddb5\\uddbf\\uddc0\\uddce\\ude2c-\\ude2e\\ude32\\ude33\\ude35\\udee0-\\udee2\\udf02\\udf03\\udf3e\\udf3f\\udf41-\\udf44\\udf47\\udf48\\udf4b-\\udf4d\\udf57\\udf62\\udf63]|\\ud805[\\udc35-\\udc37\\udc40\\udc41\\udc45\\udcb0-\\udcb2\\udcb9\\udcbb-\\udcbe\\udcc1\\uddaf-\\uddb1\\uddb8-\\uddbb\\uddbe\\ude30-\\ude32\\ude3b\\ude3c\\ude3e\\udeac\\udeae\\udeaf\\udeb6\\udf20\\udf21\\udf26]|\\ud806[\\udc2c-\\udc2e\\udc38\\udd30-\\udd35\\udd37\\udd38\\udd3d\\udd40\\udd42\\uddd1-\\uddd3\\udddc-\\udddf\\udde4\\ude39\\ude57\\ude58\\ude97]|\\ud807[\\udc2f\\udc3e\\udca9\\udcb1\\udcb4\\udd8a-\\udd8e\\udd93\\udd94\\udd96\\udef5\\udef6]|\\ud81b[\\udf51-\\udf87\\udff0\\udff1]|\\ud834[\\udd65\\udd66\\udd6d-\\udd72]\"},{name:\"Me\",alias:\"Enclosing_Mark\",bmp:\"҈҉᪾⃝-⃠⃢-⃤꙰-꙲\"},{name:\"Mn\",alias:\"Nonspacing_Mark\",bmp:\"̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࢘-࢟࣊-ࣣ࣡-ंऺ़ु-ै्॑-ॗॢॣঁ়ু-ৄ্ৢৣ৾ਁਂ਼ੁੂੇੈੋ-੍ੑੰੱੵઁં઼ુ-ૅેૈ્ૢૣૺ-૿ଁ଼ିୁ-ୄ୍୕ୖୢୣஂீ்ఀఄ఼ా-ీె-ైొ-్ౕౖౢౣಁ಼ಿೆೌ್ೢೣഀഁ഻഼ു-ൄ്ൢൣඁ්ි-ුූัิ-ฺ็-๎ັິ-ຼ່-ໍཱ༹༘༙༵༷-ཾྀ-྄྆྇ྍ-ྗྙ-ྼ࿆ိ-ူဲ-့္်ွှၘၙၞ-ၠၱ-ၴႂႅႆႍႝ፝-፟ᜒ-᜔ᜲᜳᝒᝓᝲᝳ឴឵ិ-ួំ៉-៓៝᠋-᠍᠏ᢅᢆᢩᤠ-ᤢᤧᤨᤲ᤹-᤻ᨘᨗᨛᩖᩘ-ᩞ᩠ᩢᩥ-ᩬᩳ-᩿᩼᪰-᪽ᪿ-ᫎᬀ-ᬃ᬴ᬶ-ᬺᬼᭂ᭫-᭳ᮀᮁᮢ-ᮥᮨᮩ᮫-ᮭ᯦ᯨᯩᯭᯯ-ᯱᰬ-ᰳᰶ᰷᳐-᳔᳒-᳢᳠-᳨᳭᳴᳸᳹᷀-᷿⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〭꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠥꠦ꠬꣄ꣅ꣠-꣱ꣿꤦ-꤭ꥇ-ꥑꦀ-ꦂ꦳ꦶ-ꦹꦼꦽꧥꨩ-ꨮꨱꨲꨵꨶꩃꩌꩼꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫬꫭ꫶ꯥꯨ꯭ﬞ︀-️︠-︯\",astral:\"\\ud800[\\uddfd\\udee0\\udf76-\\udf7a]|\\ud802[\\ude01-\\ude03\\ude05\\ude06\\ude0c-\\ude0f\\ude38-\\ude3a\\ude3f\\udee5\\udee6]|\\ud803[\\udd24-\\udd27\\udeab\\udeac\\udf46-\\udf50\\udf82-\\udf85]|\\ud804[\\udc01\\udc38-\\udc46\\udc70\\udc73\\udc74\\udc7f-\\udc81\\udcb3-\\udcb6\\udcb9\\udcba\\udcc2\\udd00-\\udd02\\udd27-\\udd2b\\udd2d-\\udd34\\udd73\\udd80\\udd81\\uddb6-\\uddbe\\uddc9-\\uddcc\\uddcf\\ude2f-\\ude31\\ude34\\ude36\\ude37\\ude3e\\udedf\\udee3-\\udeea\\udf00\\udf01\\udf3b\\udf3c\\udf40\\udf66-\\udf6c\\udf70-\\udf74]|\\ud805[\\udc38-\\udc3f\\udc42-\\udc44\\udc46\\udc5e\\udcb3-\\udcb8\\udcba\\udcbf\\udcc0\\udcc2\\udcc3\\uddb2-\\uddb5\\uddbc\\uddbd\\uddbf\\uddc0\\udddc\\udddd\\ude33-\\ude3a\\ude3d\\ude3f\\ude40\\udeab\\udead\\udeb0-\\udeb5\\udeb7\\udf1d-\\udf1f\\udf22-\\udf25\\udf27-\\udf2b]|\\ud806[\\udc2f-\\udc37\\udc39\\udc3a\\udd3b\\udd3c\\udd3e\\udd43\\uddd4-\\uddd7\\uddda\\udddb\\udde0\\ude01-\\ude0a\\ude33-\\ude38\\ude3b-\\ude3e\\ude47\\ude51-\\ude56\\ude59-\\ude5b\\ude8a-\\ude96\\ude98\\ude99]|\\ud807[\\udc30-\\udc36\\udc38-\\udc3d\\udc3f\\udc92-\\udca7\\udcaa-\\udcb0\\udcb2\\udcb3\\udcb5\\udcb6\\udd31-\\udd36\\udd3a\\udd3c\\udd3d\\udd3f-\\udd45\\udd47\\udd90\\udd91\\udd95\\udd97\\udef3\\udef4]|\\ud81a[\\udef0-\\udef4\\udf30-\\udf36]|\\ud81b[\\udf4f\\udf8f-\\udf92\\udfe4]|\\ud82f[\\udc9d\\udc9e]|\\ud833[\\udf00-\\udf2d\\udf30-\\udf46]|\\ud834[\\udd67-\\udd69\\udd7b-\\udd82\\udd85-\\udd8b\\uddaa-\\uddad\\ude42-\\ude44]|\\ud836[\\ude00-\\ude36\\ude3b-\\ude6c\\ude75\\ude84\\ude9b-\\ude9f\\udea1-\\udeaf]|\\ud838[\\udc00-\\udc06\\udc08-\\udc18\\udc1b-\\udc21\\udc23\\udc24\\udc26-\\udc2a\\udd30-\\udd36\\udeae\\udeec-\\udeef]|\\ud83a[\\udcd0-\\udcd6\\udd44-\\udd4a]|\\udb40[\\udd00-\\uddef]\"},{name:\"N\",alias:\"Number\",bmp:\"0-9²³¹¼-¾٠-٩۰-۹߀-߉०-९০-৯৴-৹੦-੯૦-૯୦-୯୲-୷௦-௲౦-౯౸-౾೦-೯൘-൞൦-൸෦-෯๐-๙໐-໙༠-༳၀-၉႐-႙፩-፼ᛮ-ᛰ០-៩៰-៹᠐-᠙᥆-᥏᧐-᧚᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙⁰⁴-⁹₀-₉⅐-ↂↅ-↉①-⒛⓪-⓿❶-➓⳽〇〡-〩〸-〺㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꘠-꘩ꛦ-ꛯ꠰-꠵꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９\",astral:\"\\ud800[\\udd07-\\udd33\\udd40-\\udd78\\udd8a\\udd8b\\udee1-\\udefb\\udf20-\\udf23\\udf41\\udf4a\\udfd1-\\udfd5]|\\ud801[\\udca0-\\udca9]|\\ud802[\\udc58-\\udc5f\\udc79-\\udc7f\\udca7-\\udcaf\\udcfb-\\udcff\\udd16-\\udd1b\\uddbc\\uddbd\\uddc0-\\uddcf\\uddd2-\\uddff\\ude40-\\ude48\\ude7d\\ude7e\\ude9d-\\ude9f\\udeeb-\\udeef\\udf58-\\udf5f\\udf78-\\udf7f\\udfa9-\\udfaf]|\\ud803[\\udcfa-\\udcff\\udd30-\\udd39\\ude60-\\ude7e\\udf1d-\\udf26\\udf51-\\udf54\\udfc5-\\udfcb]|\\ud804[\\udc52-\\udc6f\\udcf0-\\udcf9\\udd36-\\udd3f\\uddd0-\\uddd9\\udde1-\\uddf4\\udef0-\\udef9]|\\ud805[\\udc50-\\udc59\\udcd0-\\udcd9\\ude50-\\ude59\\udec0-\\udec9\\udf30-\\udf3b]|\\ud806[\\udce0-\\udcf2\\udd50-\\udd59]|\\ud807[\\udc50-\\udc6c\\udd50-\\udd59\\udda0-\\udda9\\udfc0-\\udfd4]|\\ud809[\\udc00-\\udc6e]|\\ud81a[\\ude60-\\ude69\\udec0-\\udec9\\udf50-\\udf59\\udf5b-\\udf61]|\\ud81b[\\ude80-\\ude96]|\\ud834[\\udee0-\\udef3\\udf60-\\udf78]|\\ud835[\\udfce-\\udfff]|\\ud838[\\udd40-\\udd49\\udef0-\\udef9]|\\ud83a[\\udcc7-\\udccf\\udd50-\\udd59]|\\ud83b[\\udc71-\\udcab\\udcad-\\udcaf\\udcb1-\\udcb4\\udd01-\\udd2d\\udd2f-\\udd3d]|\\ud83c[\\udd00-\\udd0c]|\\ud83e[\\udff0-\\udff9]\"},{name:\"Nd\",alias:\"Decimal_Number\",bmp:\"0-9٠-٩۰-۹߀-߉०-९০-৯੦-੯૦-૯୦-୯௦-௯౦-౯೦-೯൦-൯෦-෯๐-๙໐-໙༠-༩၀-၉႐-႙០-៩᠐-᠙᥆-᥏᧐-᧙᪀-᪉᪐-᪙᭐-᭙᮰-᮹᱀-᱉᱐-᱙꘠-꘩꣐-꣙꤀-꤉꧐-꧙꧰-꧹꩐-꩙꯰-꯹０-９\",astral:\"\\ud801[\\udca0-\\udca9]|\\ud803[\\udd30-\\udd39]|\\ud804[\\udc66-\\udc6f\\udcf0-\\udcf9\\udd36-\\udd3f\\uddd0-\\uddd9\\udef0-\\udef9]|\\ud805[\\udc50-\\udc59\\udcd0-\\udcd9\\ude50-\\ude59\\udec0-\\udec9\\udf30-\\udf39]|\\ud806[\\udce0-\\udce9\\udd50-\\udd59]|\\ud807[\\udc50-\\udc59\\udd50-\\udd59\\udda0-\\udda9]|\\ud81a[\\ude60-\\ude69\\udec0-\\udec9\\udf50-\\udf59]|\\ud835[\\udfce-\\udfff]|\\ud838[\\udd40-\\udd49\\udef0-\\udef9]|\\ud83a[\\udd50-\\udd59]|\\ud83e[\\udff0-\\udff9]\"},{name:\"Nl\",alias:\"Letter_Number\",bmp:\"ᛮ-ᛰⅠ-ↂↅ-ↈ〇〡-〩〸-〺ꛦ-ꛯ\",astral:\"\\ud800[\\udd40-\\udd74\\udf41\\udf4a\\udfd1-\\udfd5]|\\ud809[\\udc00-\\udc6e]\"},{name:\"No\",alias:\"Other_Number\",bmp:\"²³¹¼-¾৴-৹୲-୷௰-௲౸-౾൘-൞൰-൸༪-༳፩-፼៰-៹᧚⁰⁴-⁹₀-₉⅐-⅟↉①-⒛⓪-⓿❶-➓⳽㆒-㆕㈠-㈩㉈-㉏㉑-㉟㊀-㊉㊱-㊿꠰-꠵\",astral:\"\\ud800[\\udd07-\\udd33\\udd75-\\udd78\\udd8a\\udd8b\\udee1-\\udefb\\udf20-\\udf23]|\\ud802[\\udc58-\\udc5f\\udc79-\\udc7f\\udca7-\\udcaf\\udcfb-\\udcff\\udd16-\\udd1b\\uddbc\\uddbd\\uddc0-\\uddcf\\uddd2-\\uddff\\ude40-\\ude48\\ude7d\\ude7e\\ude9d-\\ude9f\\udeeb-\\udeef\\udf58-\\udf5f\\udf78-\\udf7f\\udfa9-\\udfaf]|\\ud803[\\udcfa-\\udcff\\ude60-\\ude7e\\udf1d-\\udf26\\udf51-\\udf54\\udfc5-\\udfcb]|\\ud804[\\udc52-\\udc65\\udde1-\\uddf4]|\\ud805[\\udf3a\\udf3b]|\\ud806[\\udcea-\\udcf2]|\\ud807[\\udc5a-\\udc6c\\udfc0-\\udfd4]|\\ud81a[\\udf5b-\\udf61]|\\ud81b[\\ude80-\\ude96]|\\ud834[\\udee0-\\udef3\\udf60-\\udf78]|\\ud83a[\\udcc7-\\udccf]|\\ud83b[\\udc71-\\udcab\\udcad-\\udcaf\\udcb1-\\udcb4\\udd01-\\udd2d\\udd2f-\\udd3d]|\\ud83c[\\udd00-\\udd0c]\"},{name:\"P\",alias:\"Punctuation\",bmp:\"!-#%-\\\\*,-\\\\/:;\\\\?@\\\\[-\\\\]_\\\\{\\\\}¡§«¶·»¿;·՚-՟։֊־׀׃׆׳״؉؊،؍؛؝-؟٪-٭۔܀-܍߷-߹࠰-࠾࡞।॥॰৽੶૰౷಄෴๏๚๛༄-༒༔༺-༽྅࿐-࿔࿙࿚၊-၏჻፠-፨᐀᙮᚛᚜᛫-᛭᜵᜶។-៖៘-៚᠀-᠊᥄᥅᨞᨟᪠-᪦᪨-᪭᭚-᭠᭽᭾᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓‐-‧‰-⁃⁅-⁑⁓-⁞⁽⁾₍₎⌈-⌋〈〉❨-❵⟅⟆⟦-⟯⦃-⦘⧘-⧛⧼⧽⳹-⳼⳾⳿⵰⸀-⸮⸰-⹏⹒-⹝、-〃〈-】〔-〟〰〽゠・꓾꓿꘍-꘏꙳꙾꛲-꛷꡴-꡷꣎꣏꣸-꣺꣼꤮꤯꥟꧁-꧍꧞꧟꩜-꩟꫞꫟꫰꫱꯫﴾﴿︐-︙︰-﹒﹔-﹡﹣﹨﹪﹫！-＃％-＊，-／：；？＠［-］＿｛｝｟-･\",astral:\"\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|𐕯|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udead\\udf55-\\udf59\\udf86-\\udf89]|\\ud804[\\udc47-\\udc4d\\udcbb\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5a\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udeb9\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udd44-\\udd46\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70\\udc71\\udef7\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud80b[\\udff1\\udff2]|\\ud81a[\\ude6e\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|𛲟|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e\\udd5f]\"},{name:\"Pc\",alias:\"Connector_Punctuation\",bmp:\"_‿⁀⁔︳︴﹍-﹏＿\"},{name:\"Pd\",alias:\"Dash_Punctuation\",bmp:\"\\\\-֊־᐀᠆‐-―⸗⸚⸺⸻⹀⹝〜〰゠︱︲﹘﹣－\",astral:\"𐺭\"},{name:\"Pe\",alias:\"Close_Punctuation\",bmp:\"\\\\)\\\\]\\\\}༻༽᚜⁆⁾₎⌉⌋〉❩❫❭❯❱❳❵⟆⟧⟩⟫⟭⟯⦄⦆⦈⦊⦌⦎⦐⦒⦔⦖⦘⧙⧛⧽⸣⸥⸧⸩⹖⹘⹚⹜〉》」』】〕〗〙〛〞〟﴾︘︶︸︺︼︾﹀﹂﹄﹈﹚﹜﹞）］｝｠｣\"},{name:\"Pf\",alias:\"Final_Punctuation\",bmp:\"»’”›⸃⸅⸊⸍⸝⸡\"},{name:\"Pi\",alias:\"Initial_Punctuation\",bmp:\"«‘‛“‟‹⸂⸄⸉⸌⸜⸠\"},{name:\"Po\",alias:\"Other_Punctuation\",bmp:\"!-#%-'\\\\*,\\\\.\\\\/:;\\\\?@\\\\¡§¶·¿;·՚-՟։׀׃׆׳״؉؊،؍؛؝-؟٪-٭۔܀-܍߷-߹࠰-࠾࡞।॥॰৽੶૰౷಄෴๏๚๛༄-༒༔྅࿐-࿔࿙࿚၊-၏჻፠-፨᙮᛫-᛭᜵᜶។-៖៘-៚᠀-᠅᠇-᠊᥄᥅᨞᨟᪠-᪦᪨-᪭᭚-᭠᭽᭾᯼-᯿᰻-᰿᱾᱿᳀-᳇᳓‖‗†-‧‰-‸※-‾⁁-⁃⁇-⁑⁓⁕-⁞⳹-⳼⳾⳿⵰⸀⸁⸆-⸈⸋⸎-⸖⸘⸙⸛⸞⸟⸪-⸮⸰-⸹⸼-⸿⹁⹃-⹏⹒-⹔、-〃〽・꓾꓿꘍-꘏꙳꙾꛲-꛷꡴-꡷꣎꣏꣸-꣺꣼꤮꤯꥟꧁-꧍꧞꧟꩜-꩟꫞꫟꫰꫱꯫︐-︖︙︰﹅﹆﹉-﹌﹐-﹒﹔-﹗﹟-﹡﹨﹪﹫！-＃％-＇＊，．／：；？＠＼｡､･\",astral:\"\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|𐕯|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59\\udf86-\\udf89]|\\ud804[\\udc47-\\udc4d\\udcbb\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5a\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udeb9\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udd44-\\udd46\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70\\udc71\\udef7\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud80b[\\udff1\\udff2]|\\ud81a[\\ude6e\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|𛲟|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e\\udd5f]\"},{name:\"Ps\",alias:\"Open_Punctuation\",bmp:\"\\\\(\\\\[\\\\{༺༼᚛‚„⁅⁽₍⌈⌊〈❨❪❬❮❰❲❴⟅⟦⟨⟪⟬⟮⦃⦅⦇⦉⦋⦍⦏⦑⦓⦕⦗⧘⧚⧼⸢⸤⸦⸨⹂⹕⹗⹙⹛〈《「『【〔〖〘〚〝﴿︗︵︷︹︻︽︿﹁﹃﹇﹙﹛﹝（［｛｟｢\"},{name:\"S\",alias:\"Symbol\",bmp:\"\\\\$\\\\+<->\\\\^`\\\\|~¢-¦¨©¬®-±´¸×÷˂-˅˒-˟˥-˫˭˯-˿͵΄΅϶҂֍-֏؆-؈؋؎؏۞۩۽۾߶߾߿࢈৲৳৺৻૱୰௳-௺౿൏൹฿༁-༃༓༕-༗༚-༟༴༶༸྾-࿅࿇-࿌࿎࿏࿕-࿘႞႟᎐-᎙᙭៛᥀᧞-᧿᭡-᭪᭴-᭼᾽᾿-῁῍-῏῝-῟῭-`´῾⁄⁒⁺-⁼₊-₌₠-⃀℀℁℃-℆℈℉℔№-℘℞-℣℥℧℩℮℺℻⅀-⅄⅊-⅍⅏↊↋←-⌇⌌-⌨⌫-␦⑀-⑊⒜-ⓩ─-❧➔-⟄⟇-⟥⟰-⦂⦙-⧗⧜-⧻⧾-⭳⭶-⮕⮗-⯿⳥-⳪⹐⹑⺀-⺙⺛-⻳⼀-⿕⿰-⿻〄〒〓〠〶〷〾〿゛゜㆐㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉇㉐㉠-㉿㊊-㊰㋀-㏿䷀-䷿꒐-꓆꜀-꜖꜠꜡꞉꞊꠨-꠫꠶-꠹꩷-꩹꭛꭪꭫﬩﮲-﯂﵀-﵏﷏﷼-﷿﹢﹤-﹦﹩＄＋＜-＞＾｀｜～￠-￦￨-￮￼�\",astral:\"\\ud800[\\udd37-\\udd3f\\udd79-\\udd89\\udd8c-\\udd8e\\udd90-\\udd9c\\udda0\\uddd0-\\uddfc]|\\ud802[\\udc77\\udc78\\udec8]|𑜿|\\ud807[\\udfd5-\\udff1]|\\ud81a[\\udf3c-\\udf3f\\udf45]|𛲜|\\ud833[\\udf50-\\udfc3]|\\ud834[\\udc00-\\udcf5\\udd00-\\udd26\\udd29-\\udd64\\udd6a-\\udd6c\\udd83\\udd84\\udd8c-\\udda9\\uddae-\\uddea\\ude00-\\ude41\\ude45\\udf00-\\udf56]|\\ud835[\\udec1\\udedb\\udefb\\udf15\\udf35\\udf4f\\udf6f\\udf89\\udfa9\\udfc3]|\\ud836[\\udc00-\\uddff\\ude37-\\ude3a\\ude6d-\\ude74\\ude76-\\ude83\\ude85\\ude86]|\\ud838[\\udd4f\\udeff]|\\ud83b[\\udcac\\udcb0\\udd2e\\udef0\\udef1]|\\ud83c[\\udc00-\\udc2b\\udc30-\\udc93\\udca0-\\udcae\\udcb1-\\udcbf\\udcc1-\\udccf\\udcd1-\\udcf5\\udd0d-\\uddad\\udde6-\\ude02\\ude10-\\ude3b\\ude40-\\ude48\\ude50\\ude51\\ude60-\\ude65\\udf00-\\udfff]|\\ud83d[\\udc00-\\uded7\\udedd-\\udeec\\udef0-\\udefc\\udf00-\\udf73\\udf80-\\udfd8\\udfe0-\\udfeb\\udff0]|\\ud83e[\\udc00-\\udc0b\\udc10-\\udc47\\udc50-\\udc59\\udc60-\\udc87\\udc90-\\udcad\\udcb0\\udcb1\\udd00-\\ude53\\ude60-\\ude6d\\ude70-\\ude74\\ude78-\\ude7c\\ude80-\\ude86\\ude90-\\udeac\\udeb0-\\udeba\\udec0-\\udec5\\uded0-\\uded9\\udee0-\\udee7\\udef0-\\udef6\\udf00-\\udf92\\udf94-\\udfca]\"},{name:\"Sc\",alias:\"Currency_Symbol\",bmp:\"\\\\$¢-¥֏؋߾߿৲৳৻૱௹฿៛₠-⃀꠸﷼﹩＄￠￡￥￦\",astral:\"\\ud807[\\udfdd-\\udfe0]|𞋿|𞲰\"},{name:\"Sk\",alias:\"Modifier_Symbol\",bmp:\"\\\\^`¨¯´¸˂-˅˒-˟˥-˫˭˯-˿͵΄΅࢈᾽᾿-῁῍-῏῝-῟῭-`´῾゛゜꜀-꜖꜠꜡꞉꞊꭛꭪꭫﮲-﯂＾｀￣\",astral:\"\\ud83c[\\udffb-\\udfff]\"},{name:\"Sm\",alias:\"Math_Symbol\",bmp:\"\\\\+<->\\\\|~¬±×÷϶؆-؈⁄⁒⁺-⁼₊-₌℘⅀-⅄⅋←-↔↚↛↠↣↦↮⇎⇏⇒⇔⇴-⋿⌠⌡⍼⎛-⎳⏜-⏡▷◁◸-◿♯⟀-⟄⟇-⟥⟰-⟿⤀-⦂⦙-⧗⧜-⧻⧾-⫿⬰-⭄⭇-⭌﬩﹢﹤-﹦＋＜-＞｜～￢￩-￬\",astral:\"\\ud835[\\udec1\\udedb\\udefb\\udf15\\udf35\\udf4f\\udf6f\\udf89\\udfa9\\udfc3]|\\ud83b[\\udef0\\udef1]\"},{name:\"So\",alias:\"Other_Symbol\",bmp:\"¦©®°҂֍֎؎؏۞۩۽۾߶৺୰௳-௸௺౿൏൹༁-༃༓༕-༗༚-༟༴༶༸྾-࿅࿇-࿌࿎࿏࿕-࿘႞႟᎐-᎙᙭᥀᧞-᧿᭡-᭪᭴-᭼℀℁℃-℆℈℉℔№℗℞-℣℥℧℩℮℺℻⅊⅌⅍⅏↊↋↕-↙↜-↟↡↢↤↥↧-↭↯-⇍⇐⇑⇓⇕-⇳⌀-⌇⌌-⌟⌢-⌨⌫-⍻⍽-⎚⎴-⏛⏢-␦⑀-⑊⒜-ⓩ─-▶▸-◀◂-◷☀-♮♰-❧➔-➿⠀-⣿⬀-⬯⭅⭆⭍-⭳⭶-⮕⮗-⯿⳥-⳪⹐⹑⺀-⺙⺛-⻳⼀-⿕⿰-⿻〄〒〓〠〶〷〾〿㆐㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉇㉐㉠-㉿㊊-㊰㋀-㏿䷀-䷿꒐-꓆꠨-꠫꠶꠷꠹꩷-꩹﵀-﵏﷏﷽-﷿￤￨￭￮￼�\",astral:\"\\ud800[\\udd37-\\udd3f\\udd79-\\udd89\\udd8c-\\udd8e\\udd90-\\udd9c\\udda0\\uddd0-\\uddfc]|\\ud802[\\udc77\\udc78\\udec8]|𑜿|\\ud807[\\udfd5-\\udfdc\\udfe1-\\udff1]|\\ud81a[\\udf3c-\\udf3f\\udf45]|𛲜|\\ud833[\\udf50-\\udfc3]|\\ud834[\\udc00-\\udcf5\\udd00-\\udd26\\udd29-\\udd64\\udd6a-\\udd6c\\udd83\\udd84\\udd8c-\\udda9\\uddae-\\uddea\\ude00-\\ude41\\ude45\\udf00-\\udf56]|\\ud836[\\udc00-\\uddff\\ude37-\\ude3a\\ude6d-\\ude74\\ude76-\\ude83\\ude85\\ude86]|𞅏|\\ud83b[\\udcac\\udd2e]|\\ud83c[\\udc00-\\udc2b\\udc30-\\udc93\\udca0-\\udcae\\udcb1-\\udcbf\\udcc1-\\udccf\\udcd1-\\udcf5\\udd0d-\\uddad\\udde6-\\ude02\\ude10-\\ude3b\\ude40-\\ude48\\ude50\\ude51\\ude60-\\ude65\\udf00-\\udffa]|\\ud83d[\\udc00-\\uded7\\udedd-\\udeec\\udef0-\\udefc\\udf00-\\udf73\\udf80-\\udfd8\\udfe0-\\udfeb\\udff0]|\\ud83e[\\udc00-\\udc0b\\udc10-\\udc47\\udc50-\\udc59\\udc60-\\udc87\\udc90-\\udcad\\udcb0\\udcb1\\udd00-\\ude53\\ude60-\\ude6d\\ude70-\\ude74\\ude78-\\ude7c\\ude80-\\ude86\\ude90-\\udeac\\udeb0-\\udeba\\udec0-\\udec5\\uded0-\\uded9\\udee0-\\udee7\\udef0-\\udef6\\udf00-\\udf92\\udf94-\\udfca]\"},{name:\"Z\",alias:\"Separator\",bmp:\"    - \\u2028\\u2029  　\"},{name:\"Zl\",alias:\"Line_Separator\",bmp:\"\\u2028\"},{name:\"Zp\",alias:\"Paragraph_Separator\",bmp:\"\\u2029\"},{name:\"Zs\",alias:\"Space_Separator\",bmp:\"    -   　\"}]},{}]},{},[3])(3)}));\n"
  },
  {
    "path": "src/staticfiles/bulk_update/table.19dbdd92634b.py",
    "content": "from django_components import component\n\nfrom django.middleware.csrf import get_token\n\nfrom app.models import Contact\n\n\n@component.register(\"table_bulk_update\")\nclass TableBulkUpdateComponent(component.Component):\n    template = \"\"\"\n        <form id=\"checked-contacts\">\n            <table class=\"table\">\n                <thead class=\"thead\">\n                    <tr>\n                        <th class=\"th\"></th>\n                        <th class=\"th\">Name</th>\n                        <th class=\"th\">Email</th>\n                        <th class=\"th\">Status</th>\n                    </tr>\n                </thead>\n                <tbody id=\"tbody\">\n                    {% component \"tbody_bulk_update\" contacts=contacts only %}{% endcomponent %}\n                </tbody>\n            </table>\n        </form>\n        <div class=\"mt-4\" hx-include=\"#checked-contacts\" hx-target=\"#tbody\">\n            <button class=\"btn-primary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='activate' %}\">Activate</button>\n            <button class=\"btn-secondary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='deactivate' %}\">Deactivate</button>\n        </div>\n    \"\"\"\n\n    css = \"\"\"\n        .htmx-settling tr.deactivate td {\n            background: lightcoral;\n        }\n        .htmx-settling tr.activate td {\n            background: darkseagreen;\n        }\n        tr td {\n            transition: all 1.2s;\n        }\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/staticfiles/bulk_update/table.ece66eda3489.py",
    "content": "from django_components import component\n\nfrom django.middleware.csrf import get_token\n\nfrom app.models import Contact\n\n\n@component.register(\"table_bulk_update\")\nclass TableBulkUpdateComponent(component.Component):\n    template = \"\"\"\n        <form id=\"checked-contacts\">\n            <table class=\"table\">\n                <thead class=\"thead\">\n                    <tr>\n                        <th class=\"th\"></th>\n                        <th class=\"th\">Name</th>\n                        <th class=\"th\">Email</th>\n                        <th class=\"th\">Status</th>\n                    </tr>\n                </thead>\n                <tbody id=\"tbody\">\n                    {% component \"tbody_bulk_update\" contacts=contacts only %}\n                </tbody>\n            </table>\n        </form>\n        <div class=\"mt-4\" hx-include=\"#checked-contacts\" hx-target=\"#tbody\">\n            <button class=\"btn-primary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='activate' %}\">Activate</button>\n            <button class=\"btn-secondary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='deactivate' %}\">Deactivate</button>\n        </div>\n    \"\"\"\n\n    css = \"\"\"\n        .htmx-settling tr.deactivate td {\n            background: lightcoral;\n        }\n        .htmx-settling tr.activate td {\n            background: darkseagreen;\n        }\n        tr td {\n            transition: all 1.2s;\n        }\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/staticfiles/bulk_update/table.py",
    "content": "from django_components import component\n\nfrom django.middleware.csrf import get_token\n\nfrom app.models import Contact\n\n\n@component.register(\"table_bulk_update\")\nclass TableBulkUpdateComponent(component.Component):\n    template = \"\"\"\n        <form id=\"checked-contacts\">\n            <table class=\"table\">\n                <thead class=\"thead\">\n                    <tr>\n                        <th class=\"th\"></th>\n                        <th class=\"th\">Name</th>\n                        <th class=\"th\">Email</th>\n                        <th class=\"th\">Status</th>\n                    </tr>\n                </thead>\n                <tbody id=\"tbody\">\n                    {% component \"tbody_bulk_update\" contacts=contacts only %}{% endcomponent %}\n                </tbody>\n            </table>\n        </form>\n        <div class=\"mt-4\" hx-include=\"#checked-contacts\" hx-target=\"#tbody\">\n            <button class=\"btn-primary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='activate' %}\">Activate</button>\n            <button class=\"btn-secondary\"\n                    hx-post=\"{% url 'contacts_bulk_update' update='deactivate' %}\">Deactivate</button>\n        </div>\n    \"\"\"\n\n    css = \"\"\"\n        .htmx-settling tr.deactivate td {\n            background: lightcoral;\n        }\n        .htmx-settling tr.activate td {\n            background: darkseagreen;\n        }\n        tr td {\n            transition: all 1.2s;\n        }\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/staticfiles/bulk_update/tbody.0b798d7e4a5e.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_bulk_update\")\nclass TBodyBulkUpdateComponent(component.Component):\n    template = \"\"\"\n        {% for contact in contacts %}\n        <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n            <td class=\"td\"><input class=\"checkbox\" type='checkbox' name='ids' value='{{ contact.id }}'></td>\n            <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n            <td class=\"td\">{{ contact.email }}</td>\n            <td class=\"td\">{{ contact.status }}</td>\n        </tr>\n        {% endfor %}\n    \"\"\"\n\n    css = \"\"\"\n        .htmx-settling tr.deactivate td {\n            background: lightcoral;\n        }\n        .htmx-settling tr.activate td {\n            background: darkseagreen;\n        }\n        tr td {\n            transition: all 1.2s;\n        }\n    \"\"\"\n\n    def get_context_data(self, contacts, **kwargs):\n        return {\"contacts\": contacts}\n\n    def post(self, request, update, *args, **kwargs):\n        if update == \"activate\":\n            Contact.objects.filter(id__in=request.POST.getlist(\"ids\")).update(\n                status=\"Active\"\n            )\n        elif update == \"deactivate\":\n            Contact.objects.filter(id__in=request.POST.getlist(\"ids\")).update(\n                status=\"Inactive\"\n            )\n        context = {\n            \"contacts\": Contact.objects.all().order_by(\"id\")[:5],  # remove limit\n            \"update\": update,\n            \"ids\": [int(id_) for id_ in request.POST.getlist(\"ids\")],\n        }\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/bulk_update/tbody.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_bulk_update\")\nclass TBodyBulkUpdateComponent(component.Component):\n    template = \"\"\"\n        {% for contact in contacts %}\n        <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n            <td class=\"td\"><input class=\"checkbox\" type='checkbox' name='ids' value='{{ contact.id }}'></td>\n            <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n            <td class=\"td\">{{ contact.email }}</td>\n            <td class=\"td\">{{ contact.status }}</td>\n        </tr>\n        {% endfor %}\n    \"\"\"\n\n    css = \"\"\"\n        .htmx-settling tr.deactivate td {\n            background: lightcoral;\n        }\n        .htmx-settling tr.activate td {\n            background: darkseagreen;\n        }\n        tr td {\n            transition: all 1.2s;\n        }\n    \"\"\"\n\n    def get_context_data(self, contacts, **kwargs):\n        return {\"contacts\": contacts}\n\n    def post(self, request, update, *args, **kwargs):\n        if update == \"activate\":\n            Contact.objects.filter(id__in=request.POST.getlist(\"ids\")).update(\n                status=\"Active\"\n            )\n        elif update == \"deactivate\":\n            Contact.objects.filter(id__in=request.POST.getlist(\"ids\")).update(\n                status=\"Inactive\"\n            )\n        context = {\n            \"contacts\": Contact.objects.all().order_by(\"id\")[:5],  # remove limit\n            \"update\": update,\n            \"ids\": [int(id_) for id_ in request.POST.getlist(\"ids\")],\n        }\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/bulk_update/urls.4e760d1714af.py",
    "content": "from django.urls import path\n\nfrom components.bulk_update.tbody import TBodyBulkUpdateComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<str:update>\",\n        TBodyBulkUpdateComponent.as_view(),\n        name=\"contacts_bulk_update\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/bulk_update/urls.py",
    "content": "from django.urls import path\n\nfrom components.bulk_update.tbody import TBodyBulkUpdateComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<str:update>\",\n        TBodyBulkUpdateComponent.as_view(),\n        name=\"contacts_bulk_update\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/bulk_update.09b471a09100.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_bulk_update\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/bulk_update.3010cd02c183.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_bulk_update\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/bulk_update.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_bulk_update\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/cascading_selects/parent_select.663100c7b50f.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\n\nfrom app.models import Brand\n\n\n@component.register(\"parent_select_cascading_selects\")\nclass ParentSelectCascadingSelectsComponent(component.Component):\n    template = \"\"\"\n        <div>\n            <label class=\"label\">Brand</label>\n            <select class=\"input\" name=\"brand\" hx-get=\"{% url 'select_cascading_selects' %}\" hx-target=\"#models\">\n            {% for brand in brands %}\n                <option value=\"{{ brand.id }}\">{{ brand.name }}</option>\n            {% endfor %}\n            </select>\n        </div>\n        <div class=\"mt-2\">\n            <label class=\"label\">Model</label>\n            <select id=\"models\" name=\"model\" class=\"input\">\n                {% component \"select_cascading_selects\" brand=brands.0.id %}{% endcomponent %}\n            </select>\n        </div>\n    \"\"\"\n\n    def get_context_data(self, *args, **kwargs) -> Dict[str, Any]:\n        brands = Brand.objects.order_by(\"name\")\n        return {\"brands\": brands}\n"
  },
  {
    "path": "src/staticfiles/cascading_selects/parent_select.ffa4c4dbe794.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\n\nfrom app.models import Brand\n\n\n@component.register(\"parent_select_cascading_selects\")\nclass ParentSelectCascadingSelectsComponent(component.Component):\n    template = \"\"\"\n        <div>\n            <label class=\"label\">Brand</label>\n            <select class=\"input\" name=\"brand\" hx-get=\"{% url 'select_cascading_selects' %}\" hx-target=\"#models\">\n            {% for brand in brands %}\n                <option value=\"{{ brand.id }}\">{{ brand.name }}</option>\n            {% endfor %}\n            </select>\n        </div>\n        <div class=\"mt-2\">\n            <label class=\"label\">Model</label>\n            <select id=\"models\" name=\"model\" class=\"input\">\n                {% component \"select_cascading_selects\" brand=brands.0.id %}\n            </select>\n        </div>\n    \"\"\"\n\n    def get_context_data(self, *args, **kwargs) -> Dict[str, Any]:\n        brands = Brand.objects.order_by(\"name\")\n        return {\"brands\": brands}\n"
  },
  {
    "path": "src/staticfiles/cascading_selects/parent_select.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\n\nfrom app.models import Brand\n\n\n@component.register(\"parent_select_cascading_selects\")\nclass ParentSelectCascadingSelectsComponent(component.Component):\n    template = \"\"\"\n        <div>\n            <label class=\"label\">Brand</label>\n            <select class=\"input\" name=\"brand\" hx-get=\"{% url 'select_cascading_selects' %}\" hx-target=\"#models\">\n            {% for brand in brands %}\n                <option value=\"{{ brand.id }}\">{{ brand.name }}</option>\n            {% endfor %}\n            </select>\n        </div>\n        <div class=\"mt-2\">\n            <label class=\"label\">Model</label>\n            <select id=\"models\" name=\"model\" class=\"input\">\n                {% component \"select_cascading_selects\" brand=brands.0.id %}{% endcomponent %}\n            </select>\n        </div>\n    \"\"\"\n\n    def get_context_data(self, *args, **kwargs) -> Dict[str, Any]:\n        brands = Brand.objects.order_by(\"name\")\n        return {\"brands\": brands}\n"
  },
  {
    "path": "src/staticfiles/cascading_selects/select.158aa777d411.py",
    "content": "from django_components import component\n\nfrom app.models import CarModel\n\n\n@component.register(\"select_cascading_selects\")\nclass SelectCascadingSelectsComponent(component.Component):\n    template = \"\"\"\n        {% for model in models %}\n            <option value=\"{{ model.id }}\">{{ model.name }}</option>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, brand, *args, **kwargs):\n        models = CarModel.objects.filter(brand=brand).order_by(\"name\")\n        return {\"models\": models}\n\n    def get(self, request, *args, **kwargs):\n        brand = request.GET.get(\"brand\")\n        models = CarModel.objects.filter(brand=brand).order_by(\"name\")\n        return self.render_to_response({\"models\": models})\n"
  },
  {
    "path": "src/staticfiles/cascading_selects/select.py",
    "content": "from django_components import component\n\nfrom app.models import CarModel\n\n\n@component.register(\"select_cascading_selects\")\nclass SelectCascadingSelectsComponent(component.Component):\n    template = \"\"\"\n        {% for model in models %}\n            <option value=\"{{ model.id }}\">{{ model.name }}</option>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, brand, *args, **kwargs):\n        models = CarModel.objects.filter(brand=brand).order_by(\"name\")\n        return {\"models\": models}\n\n    def get(self, request, *args, **kwargs):\n        brand = request.GET.get(\"brand\")\n        models = CarModel.objects.filter(brand=brand).order_by(\"name\")\n        return self.render_to_response({\"models\": models})\n"
  },
  {
    "path": "src/staticfiles/cascading_selects/urls.cf66c75263f5.py",
    "content": "from django.urls import path\n\nfrom components.cascading_selects.select import SelectCascadingSelectsComponent\n\n\nurlpatterns = [\n    path(\n        \"models/\",\n        SelectCascadingSelectsComponent.as_view(),\n        name=\"select_cascading_selects\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/cascading_selects/urls.py",
    "content": "from django.urls import path\n\nfrom components.cascading_selects.select import SelectCascadingSelectsComponent\n\n\nurlpatterns = [\n    path(\n        \"models/\",\n        SelectCascadingSelectsComponent.as_view(),\n        name=\"select_cascading_selects\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/cascading_selects.3f302e32ce84.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"parent_select_cascading_selects\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/cascading_selects.6609b643d2c7.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"parent_select_cascading_selects\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/cascading_selects.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"parent_select_cascading_selects\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/click_to_edit.2527ba5d7858.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\ndef build_context(contact, editing=False):\n    return {\n        \"first_name\": contact.first_name,\n        \"last_name\": contact.last_name,\n        \"email\": contact.email,\n        \"id\": contact.id,\n        \"editing\": editing,\n    }\n\n\n@component.register(\"click_to_edit\")\nclass ClickToEditComponent(component.Component):\n    template = \"\"\"\n        {% if editing %}\n            <form hx-post=\"{% url 'contact' id=id %}\" hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n                <div class=\"mb-5\">\n                    <label class=\"label\" >First Name</label>\n                    <input class=\"input\" type=\"text\" name=\"firstName\" value=\"{{ first_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Last Name</label>\n                    <input class=\"input\" type=\"text\" name=\"lastName\" value=\"{{ last_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Email Address</label>\n                    <input class=\"input\" type=\"email\" name=\"email\" value=\"{{ email }}\">\n                </div>\n                <div>\n                    <button class=\"btn-primary\">Submit</button>\n                    <button class=\"btn-secondary\" hx-get=\"{% url 'contact' id=id %}\">\n                        Cancel\n                    </button>\n                </div>\n            </form>\n        {% else %}\n        <div hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n            <div class=\"mb-5\">\n                <label class=\"label\" >First Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ first_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Last Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ last_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Email Address</label>\n                <input class=\"disabled-input\" type=\"email\" value=\"{{ email }}\" disabled>\n            </div>\n            <button class=\"btn-primary\" hx-get=\"{% url 'contact_edit' id=id %}\">Edit contact</button>\n        </div>\n        {% endif %}\n    \"\"\"\n\n    def get_context_data(self, id, **kwargs):\n        contact = Contact.objects.get(id=id)\n        return build_context(contact)\n\n    def get(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n\n    def post(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        contact.first_name = request.POST.get(\"firstName\")\n        contact.last_name = request.POST.get(\"lastName\")\n        contact.email = request.POST.get(\"email\")\n        contact.save()\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/click_to_edit.38f8beda892c.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"click_to_edit\" id=first_available_id %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/click_to_edit.6c67df9f7cb4.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"click_to_edit\" id=1 %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/click_to_edit.8084c1fdc479.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"click_to_edit\" id=first_available_id %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/click_to_edit.e860a5aa4d24.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\ndef build_context(contact, editing=False):\n    return {\n        \"first_name\": contact.first_name,\n        \"last_name\": contact.last_name,\n        \"email\": contact.email,\n        \"id\": contact.id,\n        \"editing\": editing,\n    }\n\n\n@component.register(\"click_to_edit\")\nclass ClickToEditComponent(component.Component):\n    template = \"\"\"\n        {% if editing %}\n            <form hx-post=\"{% url 'contact' id=id %}\" hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n                <div class=\"mb-5\">\n                    <label class=\"label\" >First Name</label>\n                    <input class=\"input\" type=\"text\" name=\"firstName\" value=\"{{ first_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Last Name</label>\n                    <input class=\"input\" type=\"text\" name=\"lastName\" value=\"{{ last_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Email Address</label>\n                    <input class=\"input\" type=\"email\" name=\"email\" value=\"{{ email }}\">\n                </div>\n                <div>\n                    <button class=\"btn-primary\">Submit</button>\n                    <button class=\"btn-secondary\" hx-get=\"{% url 'contact' id=id %}\" preload>\n                        Cancel\n                    </button>\n                </div>\n            </form>\n        {% else %}\n        <div hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n            <div class=\"mb-5\">\n                <label class=\"label\" >First Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ first_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Last Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ last_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Email Address</label>\n                <input class=\"disabled-input\" type=\"email\" value=\"{{ email }}\" disabled>\n            </div>\n            <button class=\"btn-primary\" hx-get=\"{% url 'contact_edit' id=id %}\" preload>Edit contact</button>\n        </div>\n        {% endif %}\n    \"\"\"\n\n    def get_context_data(self, id, **kwargs):\n        contact = Contact.objects.get(id=id)\n        return build_context(contact)\n\n    def get(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n\n    def post(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        contact.first_name = request.POST.get(\"firstName\")\n        contact.last_name = request.POST.get(\"lastName\")\n        contact.email = request.POST.get(\"email\")\n        contact.save()\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/click_to_edit.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"click_to_edit\" id=first_available_id %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/click_to_edit.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\ndef build_context(contact, editing=False):\n    return {\n        \"first_name\": contact.first_name,\n        \"last_name\": contact.last_name,\n        \"email\": contact.email,\n        \"id\": contact.id,\n        \"editing\": editing,\n    }\n\n\n@component.register(\"click_to_edit\")\nclass ClickToEditComponent(component.Component):\n    template = \"\"\"\n        {% if editing %}\n            <form hx-post=\"{% url 'contact' id=id %}\" hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n                <div class=\"mb-5\">\n                    <label class=\"label\" >First Name</label>\n                    <input class=\"input\" type=\"text\" name=\"firstName\" value=\"{{ first_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Last Name</label>\n                    <input class=\"input\" type=\"text\" name=\"lastName\" value=\"{{ last_name }}\">\n                </div>\n                <div class=\"mb-5\">\n                    <label class=\"label\">Email Address</label>\n                    <input class=\"input\" type=\"email\" name=\"email\" value=\"{{ email }}\">\n                </div>\n                <div>\n                    <button class=\"btn-primary\">Submit</button>\n                    <button class=\"btn-secondary\" hx-get=\"{% url 'contact' id=id %}\" preload>\n                        Cancel\n                    </button>\n                </div>\n            </form>\n        {% else %}\n        <div hx-target=\"this\" hx-swap=\"outerHTML\" class=\"form\">\n            <div class=\"mb-5\">\n                <label class=\"label\" >First Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ first_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Last Name</label>\n                <input class=\"disabled-input\" type=\"text\" value=\"{{ last_name }}\" disabled>\n            </div>\n            <div class=\"mb-5\">\n                <label class=\"label\">Email Address</label>\n                <input class=\"disabled-input\" type=\"email\" value=\"{{ email }}\" disabled>\n            </div>\n            <button class=\"btn-primary\" hx-get=\"{% url 'contact_edit' id=id %}\" preload>Edit contact</button>\n        </div>\n        {% endif %}\n    \"\"\"\n\n    def get_context_data(self, id, **kwargs):\n        contact = Contact.objects.get(id=id)\n        return build_context(contact)\n\n    def get(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n\n    def post(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        contact.first_name = request.POST.get(\"firstName\")\n        contact.last_name = request.POST.get(\"lastName\")\n        contact.email = request.POST.get(\"email\")\n        contact.save()\n        context = build_context(contact, request.path.endswith(\"edit\"))\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/click_to_load/table.0b1bb8bf7c91.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_click_to_load\")\nclass TableClickToLoadComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_click_to_load\" page_obj=page_obj only %}{% endcomponent %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/staticfiles/click_to_load/table.7b9417c3d2ed.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_click_to_load\")\nclass TableClickToLoadComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_click_to_load\" page_obj=page_obj only %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/staticfiles/click_to_load/table.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_click_to_load\")\nclass TableClickToLoadComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_click_to_load\" page_obj=page_obj only %}{% endcomponent %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/staticfiles/click_to_load/tbody.b43c2a210a14.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_click_to_load\")\nclass TBodyClickToLoadComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"> \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n            {% if forloop.last and page_obj.has_next %} \n                <tr id=\"replaceMe\">\n                    <td colspan=\"4\" class=\"td-tight text-center\">\n                        <button \n                            class='btn-primary' \n                            hx-get=\"{% url 'tbody_click_to_load' page=page_obj.next_page_number %}\"\n                            hx-target=\"#replaceMe\"\n                            hx-swap=\"outerHTML\">\n                            Load more\n                        </button>\n                    </td>\n                </tr>\n            {% endif %}\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/click_to_load/tbody.e59bf7e3e1be.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_click_to_load\")\nclass TBodyClickToLoadComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"> \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n            {% if forloop.last and page_obj.has_next %} \n                <tr id=\"replaceMe\">\n                    <td colspan=\"4\" class=\"td-tight text-center\">\n                        <button \n                            class='btn-primary' \n                            hx-get=\"{% url 'tbody_click_to_load' page=page_obj.next_page_number %}\"\n                            hx-target=\"#replaceMe\"\n                            hx-swap=\"outerHTML\"\n                            preload\n                            >\n                            Load more\n                        </button>\n                    </td>\n                </tr>\n            {% endif %}\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/click_to_load/tbody.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_click_to_load\")\nclass TBodyClickToLoadComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"> \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n            {% if forloop.last and page_obj.has_next %} \n                <tr id=\"replaceMe\">\n                    <td colspan=\"4\" class=\"td-tight text-center\">\n                        <button \n                            class='btn-primary' \n                            hx-get=\"{% url 'tbody_click_to_load' page=page_obj.next_page_number %}\"\n                            hx-target=\"#replaceMe\"\n                            hx-swap=\"outerHTML\"\n                            preload\n                            >\n                            Load more\n                        </button>\n                    </td>\n                </tr>\n            {% endif %}\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 3)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/click_to_load/urls.b6ab5fb54fd4.py",
    "content": "from django.urls import path\n\nfrom components.click_to_load.tbody import TBodyClickToLoadComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<int:page>\",\n        TBodyClickToLoadComponent.as_view(),\n        name=\"tbody_click_to_load\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/click_to_load/urls.py",
    "content": "from django.urls import path\n\nfrom components.click_to_load.tbody import TBodyClickToLoadComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<int:page>\",\n        TBodyClickToLoadComponent.as_view(),\n        name=\"tbody_click_to_load\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/click_to_load.10c9b98d47d9.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_click_to_load\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/click_to_load.5b3914747c41.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_click_to_load\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/click_to_load.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_click_to_load\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.00b940293d23.html",
    "content": "{% load static %}\n<div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between\">\n    <div class=\"w-full md:w-1/2 mx-auto my-10 flex flex-col items-center px-4\">\n        <h1 class=\"text-center text-4xl font-bold mt-20\">{{ title }}</h1>\n        <p class=\"text-center font-light\">{{ description }}</p>\n        <div class=\"w-full flex flex-col items-center\">{% slot \"component_code\" %} {% endslot %}</div>\n    </div>\n    <div class=\"px-8 py-12 lg:py-8 flex flex-col items-center min-h-screen w-full lg:mt-0 lg:w-1/2 bg-slate-100\">\n        <div class=\"w-full flex flex-col gap-2 items-center sm:flex sm:flex-row sm:items-start justify-between lg:mt-20\">\n            <div>\n                <label for=\"tabs\" class=\"sr-only\">Select a file</label>\n                <select id=\"tabs\"\n                        class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\">\n                    {% for file in files %}\n                        <option value=\"button-{{ forloop.counter }}\"\n                                id=\"button-{{ forloop.counter }}\"\n                                data-target=\"content-{{ forloop.counter }}\">{{ file.name }}</option>\n                    {% endfor %}\n                </select>\n            </div>\n            <a href=\"{{ full_code_url }}\"\n               class=\"btn-primary flex flex-row items-center gap-2 whitespace-nowrap\"\n               target=\"_blank\"\n               rel=\"noopener noreferrer\">\n                <svg class=\"w-[16px] h-[16px] text-white-600 dark:text-slate-800\"\n                     aria-hidden=\"true\"\n                     xmlns=\"http://www.w3.org/2000/svg\"\n                     fill=\"none\"\n                     viewBox=\"0 0 24 24\">\n                    <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 14v4.8a1.2 1.2 0 0 1-1.2 1.2H5.2A1.2 1.2 0 0 1 4 18.8V7.2A1.2 1.2 0 0 1 5.2 6h4.6m4.4-2H20v5.8m-7.9 2L20 4.2\" />\n                </svg>\n            Source code</a>\n        </div>\n        <div class=\"w-full\">\n            {% for file in files %}\n                <div id=\"content-{{ forloop.counter }}\"\n                     role=\"tabpanel\"\n                     class=\"tab-content\"\n                     aria-labelledby=\"button-{{ forloop.counter }}\">\n                    {# djlint: off #}\n                    <pre class=\"language-python line-numbers\" \n                         {% if file.lines %}data-range=\"{{ file.lines.0 }}, {{ file.lines.1 }}\"{% endif %} \n                         data-src=\"{% static ''|add:file.path %}\">\n                    </pre>\n                    {# djlint:  on #}\n                </div>\n            {% endfor %}\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.25ef95b81a22.py",
    "content": "from django_components import component\n\n\n@component.register(\"component_tabs\")\nclass ComponentTabsComponent(component.Component):\n    template_name = \"component_tabs/component_tabs.html\"\n\n    class Media:\n        js = \"component_tabs/component_tabs.js\"\n        css = \"component_tabs/component_tabs.css\"\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.28d0d597d814.html",
    "content": "{% load static %}\n<div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between\">\n    <div class=\"w-full md:w-1/2 mx-auto my-10 flex flex-col items-center px-4\">\n        <h1 class=\"text-center text-4xl font-bold mt-20\">{{ title }}</h1>\n        <p class=\"text-center font-light\">{{ description }}</p>\n        <div class=\" w-full flex flex-col items-center mt-6\">{% slot \"component_code\" %} {% endslot %}</div>\n    </div>\n    <div class=\"px-8 py-12 lg:py-8 flex flex-col items-center min-h-screen w-full lg:mt-0 lg:w-1/2 bg-slate-100\">\n        <div class=\"w-full flex flex-col gap-2 items-center sm:flex sm:flex-row sm:items-start justify-between lg:mt-20\">\n            <div>\n                <label for=\"tabs\" class=\"sr-only\">Select a file</label>\n                <select id=\"tabs\"\n                        class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\">\n                    {% for file in files %}\n                        <option value=\"button-{{ forloop.counter }}\"\n                                id=\"button-{{ forloop.counter }}\"\n                                data-target=\"content-{{ forloop.counter }}\">{{ file.name }}</option>\n                    {% endfor %}\n                </select>\n            </div>\n            <a href=\"{{ full_code_url }}\"\n               class=\"btn-primary flex flex-row items-center gap-2 whitespace-nowrap\"\n               target=\"_blank\"\n               rel=\"noopener noreferrer\">\n                <svg class=\"w-[16px] h-[16px] text-white-600 dark:text-slate-800\"\n                     aria-hidden=\"true\"\n                     xmlns=\"http://www.w3.org/2000/svg\"\n                     fill=\"none\"\n                     viewBox=\"0 0 24 24\">\n                    <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 14v4.8a1.2 1.2 0 0 1-1.2 1.2H5.2A1.2 1.2 0 0 1 4 18.8V7.2A1.2 1.2 0 0 1 5.2 6h4.6m4.4-2H20v5.8m-7.9 2L20 4.2\" />\n                </svg>\n            Source code</a>\n        </div>\n        <div class=\"w-full\">\n            {% for file in files %}\n                <div id=\"content-{{ forloop.counter }}\"\n                     role=\"tabpanel\"\n                     class=\"tab-content\"\n                     aria-labelledby=\"button-{{ forloop.counter }}\">\n                    {# djlint: off #}\n                    <pre class=\"language-python line-numbers\" \n                         {% if file.lines %}data-range=\"{{ file.lines.0 }}, {{ file.lines.1 }}\"{% endif %} \n                         data-src=\"{% static ''|add:file.path %}\">\n                    </pre>\n                    {# djlint:  on #}\n                </div>\n            {% endfor %}\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.4c76e3fe56f0.css",
    "content": "pre {\n  font-size: 14px !important;\n  max-height: 100vh;\n  overflow: scroll;\n}\n\ndiv.code-toolbar > .toolbar {\n  top: 0.8em;\n  right: 0.5em;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a,\ndiv.code-toolbar > .toolbar > .toolbar-item > button,\ndiv.code-toolbar > .toolbar > .toolbar-item > span {\n  padding: 0.2em 0.5em;\n  border-radius: 0.3rem;\n}\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.689c07ee933a.js",
    "content": "document.addEventListener(\"DOMContentLoaded\", function () {\n  const tabsSelect = document.getElementById(\"tabs\");\n  const contentTabs = document.getElementsByClassName(\"tab-content\");\n\n  for (let i = 0; i < contentTabs.length; i++) {\n    contentTabs[i].classList.add(\"hidden\");\n  }\n\n  let tabOption = document.getElementById(tabsSelect.value);\n  let tabContent = document.getElementById(tabOption.dataset.target);\n  tabContent.classList.remove(\"hidden\");\n\n  tabsSelect.addEventListener(\"change\", function (event) {\n    tabOption = document.getElementById(event.target.value);\n    tabContent = document.getElementById(tabOption.dataset.target);\n\n    for (let i = 0; i < contentTabs.length; i++) {\n      contentTabs[i].classList.add(\"hidden\");\n    }\n\n    tabContent.classList.remove(\"hidden\");\n  });\n});\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.css",
    "content": "pre {\n  font-size: 14px !important;\n  max-height: 100vh;\n  overflow: scroll;\n}\n\ndiv.code-toolbar > .toolbar {\n  top: 0.8em;\n  right: 0.5em;\n}\n\ndiv.code-toolbar > .toolbar > .toolbar-item > a,\ndiv.code-toolbar > .toolbar > .toolbar-item > button,\ndiv.code-toolbar > .toolbar > .toolbar-item > span {\n  padding: 0.2em 0.5em;\n  border-radius: 0.3rem;\n}\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.f3bd68dc790a.js",
    "content": "function updateTabs() {\n  Prism.highlightAll();\n  const tabsSelect = document.getElementById(\"tabs\");\n  const contentTabs = document.getElementsByClassName(\"tab-content\");\n\n  for (let i = 0; i < contentTabs.length; i++) {\n    contentTabs[i].classList.add(\"hidden\");\n  }\n\n  let tabOption = document.getElementById(tabsSelect.value);\n  let tabContent = document.getElementById(tabOption.dataset.target);\n  console.log(tabContent);\n  tabContent.classList.remove(\"hidden\");\n\n  tabsSelect.addEventListener(\"change\", function (event) {\n    tabOption = document.getElementById(event.target.value);\n    tabContent = document.getElementById(tabOption.dataset.target);\n\n    for (let i = 0; i < contentTabs.length; i++) {\n      contentTabs[i].classList.add(\"hidden\");\n    }\n\n    tabContent.classList.remove(\"hidden\");\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\n  if (window.location.pathname !== \"/\") {\n    updateTabs();\n  }\n});\n\ndocument.addEventListener(\"htmx:afterSwap\", function (event) {\n  if (event.detail.target.id == \"header\" && window.location.pathname !== \"/\") {\n    updateTabs();\n  }\n});\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.html",
    "content": "{% load static %}\n<div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between\">\n    <div class=\"w-full md:w-1/2 mx-auto my-10 flex flex-col items-center px-4\">\n        <h1 class=\"text-center text-4xl font-bold mt-20\">{{ title }}</h1>\n        <p class=\"text-center font-light\">{{ description }}</p>\n        <div class=\" w-full flex flex-col items-center mt-6\">{% slot \"component_code\" %} {% endslot %}</div>\n    </div>\n    <div class=\"px-8 py-12 lg:py-8 flex flex-col items-center min-h-screen w-full lg:mt-0 lg:w-1/2 bg-slate-100\">\n        <div class=\"w-full flex flex-col gap-2 items-center sm:flex sm:flex-row sm:items-start justify-between lg:mt-20\">\n            <div>\n                <label for=\"tabs\" class=\"sr-only\">Select a file</label>\n                <select id=\"tabs\"\n                        class=\"bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500\">\n                    {% for file in files %}\n                        <option value=\"button-{{ forloop.counter }}\"\n                                id=\"button-{{ forloop.counter }}\"\n                                data-target=\"content-{{ forloop.counter }}\">{{ file.name }}</option>\n                    {% endfor %}\n                </select>\n            </div>\n            <a href=\"{{ full_code_url }}\"\n               class=\"btn-primary flex flex-row items-center gap-2 whitespace-nowrap\"\n               target=\"_blank\"\n               rel=\"noopener noreferrer\">\n                <svg class=\"w-[16px] h-[16px] text-white-600 dark:text-slate-800\"\n                     aria-hidden=\"true\"\n                     xmlns=\"http://www.w3.org/2000/svg\"\n                     fill=\"none\"\n                     viewBox=\"0 0 24 24\">\n                    <path stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M18 14v4.8a1.2 1.2 0 0 1-1.2 1.2H5.2A1.2 1.2 0 0 1 4 18.8V7.2A1.2 1.2 0 0 1 5.2 6h4.6m4.4-2H20v5.8m-7.9 2L20 4.2\" />\n                </svg>\n            Source code</a>\n        </div>\n        <div class=\"w-full\">\n            {% for file in files %}\n                <div id=\"content-{{ forloop.counter }}\"\n                     role=\"tabpanel\"\n                     class=\"tab-content\"\n                     aria-labelledby=\"button-{{ forloop.counter }}\">\n                    {# djlint: off #}\n                    <pre class=\"language-python line-numbers\" \n                         {% if file.lines %}data-range=\"{{ file.lines.0 }}, {{ file.lines.1 }}\"{% endif %} \n                         data-src=\"{% static ''|add:file.path %}\">\n                    </pre>\n                    {# djlint:  on #}\n                </div>\n            {% endfor %}\n        </div>\n    </div>\n</div>\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.js",
    "content": "function updateTabs() {\n  Prism.highlightAll();\n  const tabsSelect = document.getElementById(\"tabs\");\n  const contentTabs = document.getElementsByClassName(\"tab-content\");\n\n  for (let i = 0; i < contentTabs.length; i++) {\n    contentTabs[i].classList.add(\"hidden\");\n  }\n\n  let tabOption = document.getElementById(tabsSelect.value);\n  let tabContent = document.getElementById(tabOption.dataset.target);\n  console.log(tabContent);\n  tabContent.classList.remove(\"hidden\");\n\n  tabsSelect.addEventListener(\"change\", function (event) {\n    tabOption = document.getElementById(event.target.value);\n    tabContent = document.getElementById(tabOption.dataset.target);\n\n    for (let i = 0; i < contentTabs.length; i++) {\n      contentTabs[i].classList.add(\"hidden\");\n    }\n\n    tabContent.classList.remove(\"hidden\");\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function (event) {\n  if (window.location.pathname !== \"/\") {\n    updateTabs();\n  }\n});\n\ndocument.addEventListener(\"htmx:afterSwap\", function (event) {\n  if (event.detail.target.id == \"header\" && window.location.pathname !== \"/\") {\n    updateTabs();\n  }\n});\n"
  },
  {
    "path": "src/staticfiles/component_tabs/component_tabs.py",
    "content": "from django_components import component\n\n\n@component.register(\"component_tabs\")\nclass ComponentTabsComponent(component.Component):\n    template_name = \"component_tabs/component_tabs.html\"\n\n    class Media:\n        js = \"component_tabs/component_tabs.js\"\n        css = \"component_tabs/component_tabs.css\"\n"
  },
  {
    "path": "src/staticfiles/delete_row.08dbca324200.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"delete_row\")\nclass DeleteRowComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                    <th class=\"td\"></th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\" hx-confirm=\"Are you sure?\" hx-target=\"closest tr\" hx-swap=\"outerHTML\">\n                {% for contact in contacts %}\n                <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n                    <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                    <td class=\"td\">{{ contact.email }}</td>\n                    <td class=\"td\">{{ contact.status }}</td>\n                    <td class=\"td-tight\">\n                        <button class=\"btn-red-small\" hx-delete=\"{% url 'contact_delete_row' id=contact.id %}\">\n                        Delete\n                        </button>\n                    </td>\n                </tr>\n                {% endfor %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    css = \"\"\"\n        tr.htmx-swapping td {\n        opacity: 0;\n        transition: opacity 1s ease-out;\n        }\n    \"\"\"\n\n    def delete(self, request, id, *args, **kwargs):\n        delete_id = int(id)\n        Contact.objects.filter(id=delete_id).delete()\n        return HttpResponse(status=200)\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]} # remove limit\n"
  },
  {
    "path": "src/staticfiles/delete_row.3d715f1d83c7.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"delete_row\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/delete_row.65b5c6777191.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"delete_row\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/delete_row.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"delete_row\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/delete_row.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"delete_row\")\nclass DeleteRowComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                    <th class=\"td\"></th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\" hx-confirm=\"Are you sure?\" hx-target=\"closest tr\" hx-swap=\"outerHTML\">\n                {% for contact in contacts %}\n                <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n                    <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                    <td class=\"td\">{{ contact.email }}</td>\n                    <td class=\"td\">{{ contact.status }}</td>\n                    <td class=\"td-tight\">\n                        <button class=\"btn-red-small\" hx-delete=\"{% url 'contact_delete_row' id=contact.id %}\">\n                        Delete\n                        </button>\n                    </td>\n                </tr>\n                {% endfor %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    css = \"\"\"\n        tr.htmx-swapping td {\n        opacity: 0;\n        transition: opacity 1s ease-out;\n        }\n    \"\"\"\n\n    def delete(self, request, id, *args, **kwargs):\n        delete_id = int(id)\n        Contact.objects.filter(id=delete_id).delete()\n        return HttpResponse(status=200)\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]} # remove limit\n"
  },
  {
    "path": "src/staticfiles/django-htmx.b395a6831ba0.js",
    "content": "{\n  const data = document.currentScript.dataset;\n  const isDebug = data.debug === \"True\";\n\n  if (isDebug) {\n    document.addEventListener(\"htmx:beforeOnLoad\", function (event) {\n      const xhr = event.detail.xhr;\n      if (xhr.status == 500 || xhr.status == 404) {\n        // Tell htmx to stop processing this response\n        event.stopPropagation();\n\n        document.children[0].innerHTML = xhr.response;\n\n        // Run Django’s inline script\n        // (1, eval) wtf - see https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript\n        (1, eval)(document.scripts[0].innerText);\n        // Need to directly call Django’s onload function since browser won’t\n        window.onload();\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "src/staticfiles/django-htmx.js",
    "content": "{\n  const data = document.currentScript.dataset;\n  const isDebug = data.debug === \"True\";\n\n  if (isDebug) {\n    document.addEventListener(\"htmx:beforeOnLoad\", function (event) {\n      const xhr = event.detail.xhr;\n      if (xhr.status == 500 || xhr.status == 404) {\n        // Tell htmx to stop processing this response\n        event.stopPropagation();\n\n        document.children[0].innerHTML = xhr.response;\n\n        // Run Django’s inline script\n        // (1, eval) wtf - see https://stackoverflow.com/questions/9107240/1-evalthis-vs-evalthis-in-javascript\n        (1, eval)(document.scripts[0].innerText);\n        // Need to directly call Django’s onload function since browser won’t\n        window.onload();\n      }\n    });\n  }\n}\n"
  },
  {
    "path": "src/staticfiles/edit_row/row.101ee2e30322.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"row_edit_row\")\nclass RowEditRowComponent(component.Component):\n    template = \"\"\"\n        {% if not editing %}\n            <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n                <td class=\"td\">{{ contact.first_name }}</td>\n                <td class=\"td\">{{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">\n                    <button class=\"link\" hx-get=\"{% url 'row_edit_row' id=contact.id %}?edit=True\" hx-trigger=\"edit\" onClick=\"editClick(this)\">\n                    Edit \n                    </button>\n                </td>\n            </tr>\n        {% else %}\n            <tr hx-trigger='cancel' class='tr editing' hx-get=\"{% url 'row_edit_row' id=contact.id %}\">\n                <td class=\"td-tight\"><input class=\"input\" name='first_name' value='{{ contact.first_name }}'></td>\n                <td class=\"td-tight\"><input class=\"input\" name='last_name' value='{{ contact.last_name }}'></td>\n                <td class=\"td-tight\"><input class=\"input\" name='email' value='{{ contact.email }}'></td>\n                <td class=\"td-tight flex flex-row gap-1\">\n                    <button class=\"btn-secondary-small\" hx-get=\"{% url 'row_edit_row' id=contact.id %}\">\n                    ✘\n                    </button>\n                    <button class=\"btn-primary-small\" hx-post=\"{% url 'row_edit_row' id=contact.id %}\" hx-include=\"closest tr\">\n                    ✓\n                    </button>\n                </td>\n            </tr>\n        {% endif %}\n    \"\"\"\n\n    js = \"\"\"\n        function editClick(e) {\n            let editing = document.querySelector(\".editing\");\n            if (editing) {\n                let changeRow = confirm(\n                    \"Hey!  You are already editing a row!  Do you want to cancel that edit and continue?\"\n                );\n\n                if (changeRow) {\n                    htmx.trigger(editing, \"cancel\");\n                } else {\n                    return;\n                }\n                \n                htmx.trigger(e, \"edit\");\n            } else {\n                htmx.trigger(e, \"edit\");\n            }\n        }\n    \"\"\"\n\n    def get(self, request, id, *args, **kwargs):\n        editing = request.GET.get(\"edit\", False)\n        contact = Contact.objects.get(id=id)\n        context = {\"contact\": contact, \"editing\": editing}\n        return self.render_to_response(context)\n\n    def post(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        contact.first_name = request.POST.get(\"first_name\")\n        contact.last_name = request.POST.get(\"last_name\")\n        contact.email = request.POST.get(\"email\")\n        contact.save()\n        return self.render_to_response({\"contact\": contact, \"editing\": False})\n\n    def get_context_data(self, contact, **kwargs):\n        return {\"contact\": contact}\n"
  },
  {
    "path": "src/staticfiles/edit_row/row.py",
    "content": "from django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"row_edit_row\")\nclass RowEditRowComponent(component.Component):\n    template = \"\"\"\n        {% if not editing %}\n            <tr class=\"tr {% if contact.id in ids %} {{ update }} {% endif %}\"> \n                <td class=\"td\">{{ contact.first_name }}</td>\n                <td class=\"td\">{{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">\n                    <button class=\"link\" hx-get=\"{% url 'row_edit_row' id=contact.id %}?edit=True\" hx-trigger=\"edit\" onClick=\"editClick(this)\">\n                    Edit \n                    </button>\n                </td>\n            </tr>\n        {% else %}\n            <tr hx-trigger='cancel' class='tr editing' hx-get=\"{% url 'row_edit_row' id=contact.id %}\">\n                <td class=\"td-tight\"><input class=\"input\" name='first_name' value='{{ contact.first_name }}'></td>\n                <td class=\"td-tight\"><input class=\"input\" name='last_name' value='{{ contact.last_name }}'></td>\n                <td class=\"td-tight\"><input class=\"input\" name='email' value='{{ contact.email }}'></td>\n                <td class=\"td-tight flex flex-row gap-1\">\n                    <button class=\"btn-secondary-small\" hx-get=\"{% url 'row_edit_row' id=contact.id %}\">\n                    ✘\n                    </button>\n                    <button class=\"btn-primary-small\" hx-post=\"{% url 'row_edit_row' id=contact.id %}\" hx-include=\"closest tr\">\n                    ✓\n                    </button>\n                </td>\n            </tr>\n        {% endif %}\n    \"\"\"\n\n    js = \"\"\"\n        function editClick(e) {\n            let editing = document.querySelector(\".editing\");\n            if (editing) {\n                let changeRow = confirm(\n                    \"Hey!  You are already editing a row!  Do you want to cancel that edit and continue?\"\n                );\n\n                if (changeRow) {\n                    htmx.trigger(editing, \"cancel\");\n                } else {\n                    return;\n                }\n                \n                htmx.trigger(e, \"edit\");\n            } else {\n                htmx.trigger(e, \"edit\");\n            }\n        }\n    \"\"\"\n\n    def get(self, request, id, *args, **kwargs):\n        editing = request.GET.get(\"edit\", False)\n        contact = Contact.objects.get(id=id)\n        context = {\"contact\": contact, \"editing\": editing}\n        return self.render_to_response(context)\n\n    def post(self, request, id, *args, **kwargs):\n        contact = Contact.objects.get(id=id)\n        contact.first_name = request.POST.get(\"first_name\")\n        contact.last_name = request.POST.get(\"last_name\")\n        contact.email = request.POST.get(\"email\")\n        contact.save()\n        return self.render_to_response({\"contact\": contact, \"editing\": False})\n\n    def get_context_data(self, contact, **kwargs):\n        return {\"contact\": contact}\n"
  },
  {
    "path": "src/staticfiles/edit_row/table.49d751742877.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_edit_row\")\nclass TableEditRowComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th scope=\"col\" class=\"th\">First name</th>\n                    <th scope=\"col\" class=\"th\">Last name</th>\n                    <th scope=\"col\" class=\"th\">Email</th>\n                    <th scope=\"col\" class=\"th\"></th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\" hx-target=\"closest tr\" hx-swap=\"outerHTML\">\n                {% for contact in contacts %}\n                    {% component \"row_edit_row\" contact=contact only %}{% endcomponent %}\n                {% endfor %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/staticfiles/edit_row/table.b2e07e31fe0d.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_edit_row\")\nclass TableEditRowComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th scope=\"col\" class=\"th\">First name</th>\n                    <th scope=\"col\" class=\"th\">Last name</th>\n                    <th scope=\"col\" class=\"th\">Email</th>\n                    <th scope=\"col\" class=\"th\"></th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\" hx-target=\"closest tr\" hx-swap=\"outerHTML\">\n                {% for contact in contacts %}\n                    {% component \"row_edit_row\" contact=contact only %}\n                {% endfor %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/staticfiles/edit_row/table.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_edit_row\")\nclass TableEditRowComponent(component.Component):\n    template = \"\"\"\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th scope=\"col\" class=\"th\">First name</th>\n                    <th scope=\"col\" class=\"th\">Last name</th>\n                    <th scope=\"col\" class=\"th\">Email</th>\n                    <th scope=\"col\" class=\"th\"></th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\" hx-target=\"closest tr\" hx-swap=\"outerHTML\">\n                {% for contact in contacts %}\n                    {% component \"row_edit_row\" contact=contact only %}{% endcomponent %}\n                {% endfor %}\n            </tbody>\n        </table>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        return {\"contacts\": Contact.objects.all().order_by(\"id\")[:5]}  # remove limit\n"
  },
  {
    "path": "src/staticfiles/edit_row/urls.afbd9697c969.py",
    "content": "from django.urls import path\n\nfrom components.edit_row.row import RowEditRowComponent\n\nurlpatterns = [\n    path(\n        \"contact/<int:id>\",\n        RowEditRowComponent.as_view(),\n        name=\"row_edit_row\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/edit_row/urls.py",
    "content": "from django.urls import path\n\nfrom components.edit_row.row import RowEditRowComponent\n\nurlpatterns = [\n    path(\n        \"contact/<int:id>\",\n        RowEditRowComponent.as_view(),\n        name=\"row_edit_row\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/edit_row.f0b2badf8c40.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_edit_row\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/edit_row.fb217a7059d4.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_edit_row\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/edit_row.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_edit_row\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/flowbite.min.7c2b54dea4b1.js",
    "content": "!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"Flowbite\",[],e):\"object\"==typeof exports?exports.Flowbite=e():t.Flowbite=e()}(self,(function(){return function(){\"use strict\";var t={647:function(t,e,i){i.r(e)},853:function(t,e,i){i.r(e),i.d(e,{afterMain:function(){return w},afterRead:function(){return y},afterWrite:function(){return k},applyStyles:function(){return H},arrow:function(){return Q},auto:function(){return a},basePlacements:function(){return c},beforeMain:function(){return b},beforeRead:function(){return _},beforeWrite:function(){return L},bottom:function(){return o},clippingParents:function(){return u},computeStyles:function(){return it},createPopper:function(){return Ht},createPopperBase:function(){return Pt},createPopperLite:function(){return jt},detectOverflow:function(){return mt},end:function(){return d},eventListeners:function(){return ot},flip:function(){return yt},hide:function(){return wt},left:function(){return s},main:function(){return E},modifierPhases:function(){return A},offset:function(){return Lt},placements:function(){return g},popper:function(){return h},popperGenerator:function(){return Tt},popperOffsets:function(){return It},preventOverflow:function(){return kt},read:function(){return m},reference:function(){return f},right:function(){return r},start:function(){return l},top:function(){return n},variationPlacements:function(){return v},viewport:function(){return p},write:function(){return I}});var n=\"top\",o=\"bottom\",r=\"right\",s=\"left\",a=\"auto\",c=[n,o,r,s],l=\"start\",d=\"end\",u=\"clippingParents\",p=\"viewport\",h=\"popper\",f=\"reference\",v=c.reduce((function(t,e){return t.concat([e+\"-\"+l,e+\"-\"+d])}),[]),g=[].concat(c,[a]).reduce((function(t,e){return t.concat([e,e+\"-\"+l,e+\"-\"+d])}),[]),_=\"beforeRead\",m=\"read\",y=\"afterRead\",b=\"beforeMain\",E=\"main\",w=\"afterMain\",L=\"beforeWrite\",I=\"write\",k=\"afterWrite\",A=[_,m,y,b,E,w,L,I,k];function O(t){return t?(t.nodeName||\"\").toLowerCase():null}function x(t){if(null==t)return window;if(\"[object Window]\"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function C(t){return t instanceof x(t).Element||t instanceof Element}function T(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function P(t){return\"undefined\"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}var H={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},o=e.elements[t];T(o)&&O(o)&&(Object.assign(o.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?\"\":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]=\"\",t}),{});T(n)&&O(n)&&(Object.assign(n.style,r),Object.keys(o).forEach((function(t){n.removeAttribute(t)})))}))}},requires:[\"computeStyles\"]};function j(t){return t.split(\"-\")[0]}var D=Math.max,S=Math.min,z=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands?t.brands.map((function(t){return t.brand+\"/\"+t.version})).join(\" \"):navigator.userAgent}function q(){return!/^((?!chrome|android).)*safari/i.test(M())}function V(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),o=1,r=1;e&&T(t)&&(o=t.offsetWidth>0&&z(n.width)/t.offsetWidth||1,r=t.offsetHeight>0&&z(n.height)/t.offsetHeight||1);var s=(C(t)?x(t):window).visualViewport,a=!q()&&i,c=(n.left+(a&&s?s.offsetLeft:0))/o,l=(n.top+(a&&s?s.offsetTop:0))/r,d=n.width/o,u=n.height/r;return{width:d,height:u,top:l,right:c+d,bottom:l+u,left:c,x:c,y:l}}function B(t){var e=V(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function R(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&P(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return x(t).getComputedStyle(t)}function F(t){return[\"table\",\"td\",\"th\"].indexOf(O(t))>=0}function K(t){return((C(t)?t.ownerDocument:t.document)||window.document).documentElement}function N(t){return\"html\"===O(t)?t:t.assignedSlot||t.parentNode||(P(t)?t.host:null)||K(t)}function U(t){return T(t)&&\"fixed\"!==W(t).position?t.offsetParent:null}function X(t){for(var e=x(t),i=U(t);i&&F(i)&&\"static\"===W(i).position;)i=U(i);return i&&(\"html\"===O(i)||\"body\"===O(i)&&\"static\"===W(i).position)?e:i||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&T(t)&&\"fixed\"===W(t).position)return null;var i=N(t);for(P(i)&&(i=i.host);T(i)&&[\"html\",\"body\"].indexOf(O(i))<0;){var n=W(i);if(\"none\"!==n.transform||\"none\"!==n.perspective||\"paint\"===n.contain||-1!==[\"transform\",\"perspective\"].indexOf(n.willChange)||e&&\"filter\"===n.willChange||e&&n.filter&&\"none\"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Y(t){return[\"top\",\"bottom\"].indexOf(t)>=0?\"x\":\"y\"}function G(t,e,i){return D(t,S(e,i))}function $(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function J(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}var Q={name:\"arrow\",enabled:!0,phase:\"main\",fn:function(t){var e,i=t.state,a=t.name,l=t.options,d=i.elements.arrow,u=i.modifiersData.popperOffsets,p=j(i.placement),h=Y(p),f=[s,r].indexOf(p)>=0?\"height\":\"width\";if(d&&u){var v=function(t,e){return $(\"number\"!=typeof(t=\"function\"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:J(t,c))}(l.padding,i),g=B(d),_=\"y\"===h?n:s,m=\"y\"===h?o:r,y=i.rects.reference[f]+i.rects.reference[h]-u[h]-i.rects.popper[f],b=u[h]-i.rects.reference[h],E=X(d),w=E?\"y\"===h?E.clientHeight||0:E.clientWidth||0:0,L=y/2-b/2,I=v[_],k=w-g[f]-v[m],A=w/2-g[f]/2+L,O=G(I,A,k),x=h;i.modifiersData[a]=((e={})[x]=O,e.centerOffset=O-A,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?\"[data-popper-arrow]\":i;null!=n&&(\"string\"!=typeof n||(n=e.elements.popper.querySelector(n)))&&R(e.elements.popper,n)&&(e.elements.arrow=n)},requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]};function Z(t){return t.split(\"-\")[1]}var tt={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function et(t){var e,i=t.popper,a=t.popperRect,c=t.placement,l=t.variation,u=t.offsets,p=t.position,h=t.gpuAcceleration,f=t.adaptive,v=t.roundOffsets,g=t.isFixed,_=u.x,m=void 0===_?0:_,y=u.y,b=void 0===y?0:y,E=\"function\"==typeof v?v({x:m,y:b}):{x:m,y:b};m=E.x,b=E.y;var w=u.hasOwnProperty(\"x\"),L=u.hasOwnProperty(\"y\"),I=s,k=n,A=window;if(f){var O=X(i),C=\"clientHeight\",T=\"clientWidth\";if(O===x(i)&&\"static\"!==W(O=K(i)).position&&\"absolute\"===p&&(C=\"scrollHeight\",T=\"scrollWidth\"),c===n||(c===s||c===r)&&l===d)k=o,b-=(g&&O===A&&A.visualViewport?A.visualViewport.height:O[C])-a.height,b*=h?1:-1;if(c===s||(c===n||c===o)&&l===d)I=r,m-=(g&&O===A&&A.visualViewport?A.visualViewport.width:O[T])-a.width,m*=h?1:-1}var P,H=Object.assign({position:p},f&&tt),j=!0===v?function(t){var e=t.x,i=t.y,n=window.devicePixelRatio||1;return{x:z(e*n)/n||0,y:z(i*n)/n||0}}({x:m,y:b}):{x:m,y:b};return m=j.x,b=j.y,h?Object.assign({},H,((P={})[k]=L?\"0\":\"\",P[I]=w?\"0\":\"\",P.transform=(A.devicePixelRatio||1)<=1?\"translate(\"+m+\"px, \"+b+\"px)\":\"translate3d(\"+m+\"px, \"+b+\"px, 0)\",P)):Object.assign({},H,((e={})[k]=L?b+\"px\":\"\",e[I]=w?m+\"px\":\"\",e.transform=\"\",e))}var it={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,o=void 0===n||n,r=i.adaptive,s=void 0===r||r,a=i.roundOffsets,c=void 0===a||a,l={placement:j(e.placement),variation:Z(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:\"fixed\"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,et(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:s,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,et(Object.assign({},l,{offsets:e.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-placement\":e.placement})},data:{}},nt={passive:!0};var ot={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,o=n.scroll,r=void 0===o||o,s=n.resize,a=void 0===s||s,c=x(e.elements.popper),l=[].concat(e.scrollParents.reference,e.scrollParents.popper);return r&&l.forEach((function(t){t.addEventListener(\"scroll\",i.update,nt)})),a&&c.addEventListener(\"resize\",i.update,nt),function(){r&&l.forEach((function(t){t.removeEventListener(\"scroll\",i.update,nt)})),a&&c.removeEventListener(\"resize\",i.update,nt)}},data:{}},rt={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function st(t){return t.replace(/left|right|bottom|top/g,(function(t){return rt[t]}))}var at={start:\"end\",end:\"start\"};function ct(t){return t.replace(/start|end/g,(function(t){return at[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function dt(t){return V(K(t)).left+lt(t).scrollLeft}function ut(t){var e=W(t),i=e.overflow,n=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+o+n)}function pt(t){return[\"html\",\"body\",\"#document\"].indexOf(O(t))>=0?t.ownerDocument.body:T(t)&&ut(t)?t:pt(N(t))}function ht(t,e){var i;void 0===e&&(e=[]);var n=pt(t),o=n===(null==(i=t.ownerDocument)?void 0:i.body),r=x(n),s=o?[r].concat(r.visualViewport||[],ut(n)?n:[]):n,a=e.concat(s);return o?a:a.concat(ht(N(s)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function vt(t,e,i){return e===p?ft(function(t,e){var i=x(t),n=K(t),o=i.visualViewport,r=n.clientWidth,s=n.clientHeight,a=0,c=0;if(o){r=o.width,s=o.height;var l=q();(l||!l&&\"fixed\"===e)&&(a=o.offsetLeft,c=o.offsetTop)}return{width:r,height:s,x:a+dt(t),y:c}}(t,i)):C(e)?function(t,e){var i=V(t,!1,\"fixed\"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ft(function(t){var e,i=K(t),n=lt(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=D(i.scrollWidth,i.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=D(i.scrollHeight,i.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),a=-n.scrollLeft+dt(t),c=-n.scrollTop;return\"rtl\"===W(o||i).direction&&(a+=D(i.clientWidth,o?o.clientWidth:0)-r),{width:r,height:s,x:a,y:c}}(K(t)))}function gt(t,e,i,n){var o=\"clippingParents\"===e?function(t){var e=ht(N(t)),i=[\"absolute\",\"fixed\"].indexOf(W(t).position)>=0&&T(t)?X(t):t;return C(i)?e.filter((function(t){return C(t)&&R(t,i)&&\"body\"!==O(t)})):[]}(t):[].concat(e),r=[].concat(o,[i]),s=r[0],a=r.reduce((function(e,i){var o=vt(t,i,n);return e.top=D(o.top,e.top),e.right=S(o.right,e.right),e.bottom=S(o.bottom,e.bottom),e.left=D(o.left,e.left),e}),vt(t,s,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function _t(t){var e,i=t.reference,a=t.element,c=t.placement,u=c?j(c):null,p=c?Z(c):null,h=i.x+i.width/2-a.width/2,f=i.y+i.height/2-a.height/2;switch(u){case n:e={x:h,y:i.y-a.height};break;case o:e={x:h,y:i.y+i.height};break;case r:e={x:i.x+i.width,y:f};break;case s:e={x:i.x-a.width,y:f};break;default:e={x:i.x,y:i.y}}var v=u?Y(u):null;if(null!=v){var g=\"y\"===v?\"height\":\"width\";switch(p){case l:e[v]=e[v]-(i[g]/2-a[g]/2);break;case d:e[v]=e[v]+(i[g]/2-a[g]/2)}}return e}function mt(t,e){void 0===e&&(e={});var i=e,s=i.placement,a=void 0===s?t.placement:s,l=i.strategy,d=void 0===l?t.strategy:l,v=i.boundary,g=void 0===v?u:v,_=i.rootBoundary,m=void 0===_?p:_,y=i.elementContext,b=void 0===y?h:y,E=i.altBoundary,w=void 0!==E&&E,L=i.padding,I=void 0===L?0:L,k=$(\"number\"!=typeof I?I:J(I,c)),A=b===h?f:h,O=t.rects.popper,x=t.elements[w?A:b],T=gt(C(x)?x:x.contextElement||K(t.elements.popper),g,m,d),P=V(t.elements.reference),H=_t({reference:P,element:O,strategy:\"absolute\",placement:a}),j=ft(Object.assign({},O,H)),D=b===h?j:P,S={top:T.top-D.top+k.top,bottom:D.bottom-T.bottom+k.bottom,left:T.left-D.left+k.left,right:D.right-T.right+k.right},z=t.modifiersData.offset;if(b===h&&z){var M=z[a];Object.keys(S).forEach((function(t){var e=[r,o].indexOf(t)>=0?1:-1,i=[n,o].indexOf(t)>=0?\"y\":\"x\";S[t]+=M[i]*e}))}return S}var yt={name:\"flip\",enabled:!0,phase:\"main\",fn:function(t){var e=t.state,i=t.options,d=t.name;if(!e.modifiersData[d]._skip){for(var u=i.mainAxis,p=void 0===u||u,h=i.altAxis,f=void 0===h||h,_=i.fallbackPlacements,m=i.padding,y=i.boundary,b=i.rootBoundary,E=i.altBoundary,w=i.flipVariations,L=void 0===w||w,I=i.allowedAutoPlacements,k=e.options.placement,A=j(k),O=_||(A===k||!L?[st(k)]:function(t){if(j(t)===a)return[];var e=st(t);return[ct(t),e,ct(e)]}(k)),x=[k].concat(O).reduce((function(t,i){return t.concat(j(i)===a?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,o=i.boundary,r=i.rootBoundary,s=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,d=void 0===l?g:l,u=Z(n),p=u?a?v:v.filter((function(t){return Z(t)===u})):c,h=p.filter((function(t){return d.indexOf(t)>=0}));0===h.length&&(h=p);var f=h.reduce((function(e,i){return e[i]=mt(t,{placement:i,boundary:o,rootBoundary:r,padding:s})[j(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}(e,{placement:i,boundary:y,rootBoundary:b,padding:m,flipVariations:L,allowedAutoPlacements:I}):i)}),[]),C=e.rects.reference,T=e.rects.popper,P=new Map,H=!0,D=x[0],S=0;S<x.length;S++){var z=x[S],M=j(z),q=Z(z)===l,V=[n,o].indexOf(M)>=0,B=V?\"width\":\"height\",R=mt(e,{placement:z,boundary:y,rootBoundary:b,altBoundary:E,padding:m}),W=V?q?r:s:q?o:n;C[B]>T[B]&&(W=st(W));var F=st(W),K=[];if(p&&K.push(R[M]<=0),f&&K.push(R[W]<=0,R[F]<=0),K.every((function(t){return t}))){D=z,H=!1;break}P.set(z,K)}if(H)for(var N=function(t){var e=x.find((function(e){var i=P.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return D=e,\"break\"},U=L?3:1;U>0;U--){if(\"break\"===N(U))break}e.placement!==D&&(e.modifiersData[d]._skip=!0,e.placement=D,e.reset=!0)}},requiresIfExists:[\"offset\"],data:{_skip:!1}};function bt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Et(t){return[n,r,o,s].some((function(e){return t[e]>=0}))}var wt={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,s=mt(e,{elementContext:\"reference\"}),a=mt(e,{altBoundary:!0}),c=bt(s,n),l=bt(a,o,r),d=Et(c),u=Et(l);e.modifiersData[i]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:d,hasPopperEscaped:u},e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-reference-hidden\":d,\"data-popper-escaped\":u})}};var Lt={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:function(t){var e=t.state,i=t.options,o=t.name,a=i.offset,c=void 0===a?[0,0]:a,l=g.reduce((function(t,i){return t[i]=function(t,e,i){var o=j(t),a=[s,n].indexOf(o)>=0?-1:1,c=\"function\"==typeof i?i(Object.assign({},e,{placement:t})):i,l=c[0],d=c[1];return l=l||0,d=(d||0)*a,[s,r].indexOf(o)>=0?{x:d,y:l}:{x:l,y:d}}(i,e.rects,c),t}),{}),d=l[e.placement],u=d.x,p=d.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=u,e.modifiersData.popperOffsets.y+=p),e.modifiersData[o]=l}};var It={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=_t({reference:e.rects.reference,element:e.rects.popper,strategy:\"absolute\",placement:e.placement})},data:{}};var kt={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:function(t){var e=t.state,i=t.options,a=t.name,c=i.mainAxis,d=void 0===c||c,u=i.altAxis,p=void 0!==u&&u,h=i.boundary,f=i.rootBoundary,v=i.altBoundary,g=i.padding,_=i.tether,m=void 0===_||_,y=i.tetherOffset,b=void 0===y?0:y,E=mt(e,{boundary:h,rootBoundary:f,padding:g,altBoundary:v}),w=j(e.placement),L=Z(e.placement),I=!L,k=Y(w),A=\"x\"===k?\"y\":\"x\",O=e.modifiersData.popperOffsets,x=e.rects.reference,C=e.rects.popper,T=\"function\"==typeof b?b(Object.assign({},e.rects,{placement:e.placement})):b,P=\"number\"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),H=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,z={x:0,y:0};if(O){if(d){var M,q=\"y\"===k?n:s,V=\"y\"===k?o:r,R=\"y\"===k?\"height\":\"width\",W=O[k],F=W+E[q],K=W-E[V],N=m?-C[R]/2:0,U=L===l?x[R]:C[R],$=L===l?-C[R]:-x[R],J=e.elements.arrow,Q=m&&J?B(J):{width:0,height:0},tt=e.modifiersData[\"arrow#persistent\"]?e.modifiersData[\"arrow#persistent\"].padding:{top:0,right:0,bottom:0,left:0},et=tt[q],it=tt[V],nt=G(0,x[R],Q[R]),ot=I?x[R]/2-N-nt-et-P.mainAxis:U-nt-et-P.mainAxis,rt=I?-x[R]/2+N+nt+it+P.mainAxis:$+nt+it+P.mainAxis,st=e.elements.arrow&&X(e.elements.arrow),at=st?\"y\"===k?st.clientTop||0:st.clientLeft||0:0,ct=null!=(M=null==H?void 0:H[k])?M:0,lt=W+rt-ct,dt=G(m?S(F,W+ot-ct-at):F,W,m?D(K,lt):K);O[k]=dt,z[k]=dt-W}if(p){var ut,pt=\"x\"===k?n:s,ht=\"x\"===k?o:r,ft=O[A],vt=\"y\"===A?\"height\":\"width\",gt=ft+E[pt],_t=ft-E[ht],yt=-1!==[n,s].indexOf(w),bt=null!=(ut=null==H?void 0:H[A])?ut:0,Et=yt?gt:ft-x[vt]-C[vt]-bt+P.altAxis,wt=yt?ft+x[vt]+C[vt]-bt-P.altAxis:_t,Lt=m&&yt?function(t,e,i){var n=G(t,e,i);return n>i?i:n}(Et,ft,wt):G(m?Et:gt,ft,m?wt:_t);O[A]=Lt,z[A]=Lt-ft}e.modifiersData[a]=z}},requiresIfExists:[\"offset\"]};function At(t,e,i){void 0===i&&(i=!1);var n,o,r=T(e),s=T(e)&&function(t){var e=t.getBoundingClientRect(),i=z(e.width)/t.offsetWidth||1,n=z(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=K(e),c=V(t,s,i),l={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(r||!r&&!i)&&((\"body\"!==O(e)||ut(a))&&(l=(n=e)!==x(n)&&T(n)?{scrollLeft:(o=n).scrollLeft,scrollTop:o.scrollTop}:lt(n)),T(e)?((d=V(e,!0)).x+=e.clientLeft,d.y+=e.clientTop):a&&(d.x=dt(a))),{x:c.left+l.scrollLeft-d.x,y:c.top+l.scrollTop-d.y,width:c.width,height:c.height}}function Ot(t){var e=new Map,i=new Set,n=[];function o(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&o(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||o(t)})),n}var xt={placement:\"bottom\",modifiers:[],strategy:\"absolute\"};function Ct(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&\"function\"==typeof t.getBoundingClientRect)}))}function Tt(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,o=e.defaultOptions,r=void 0===o?xt:o;return function(t,e,i){void 0===i&&(i=r);var o,s,a={placement:\"bottom\",orderedModifiers:[],options:Object.assign({},xt,r),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},c=[],l=!1,d={state:a,setOptions:function(i){var o=\"function\"==typeof i?i(a.options):i;u(),a.options=Object.assign({},r,a.options,o),a.scrollParents={reference:C(t)?ht(t):t.contextElement?ht(t.contextElement):[],popper:ht(e)};var s=function(t){var e=Ot(t);return A.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}(function(t){var e=t.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{});return Object.keys(e).map((function(t){return e[t]}))}([].concat(n,a.options.modifiers)));return a.orderedModifiers=s.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,o=t.effect;if(\"function\"==typeof o){var r=o({state:a,name:e,instance:d,options:n}),s=function(){};c.push(r||s)}})),d.update()},forceUpdate:function(){if(!l){var t=a.elements,e=t.reference,i=t.popper;if(Ct(e,i)){a.rects={reference:At(e,X(i),\"fixed\"===a.options.strategy),popper:B(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var o=a.orderedModifiers[n],r=o.fn,s=o.options,c=void 0===s?{}:s,u=o.name;\"function\"==typeof r&&(a=r({state:a,options:c,name:u,instance:d})||a)}else a.reset=!1,n=-1}}},update:(o=function(){return new Promise((function(t){d.forceUpdate(),t(a)}))},function(){return s||(s=new Promise((function(t){Promise.resolve().then((function(){s=void 0,t(o())}))}))),s}),destroy:function(){u(),l=!0}};if(!Ct(t,e))return d;function u(){c.forEach((function(t){return t()})),c=[]}return d.setOptions(i).then((function(t){!l&&i.onFirstUpdate&&i.onFirstUpdate(t)})),d}}var Pt=Tt(),Ht=Tt({defaultModifiers:[ot,It,it,H,Lt,yt,kt,Q,wt]}),jt=Tt({defaultModifiers:[ot,It,it,H]})},902:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initAccordions=void 0;var o=i(423),r={alwaysOpen:!1,activeClasses:\"bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-white\",inactiveClasses:\"text-gray-500 dark:text-gray-400\",onOpen:function(){},onClose:function(){},onToggle:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i,a){void 0===t&&(t=null),void 0===e&&(e=[]),void 0===i&&(i=r),void 0===a&&(a=s),this._instanceId=a.id?a.id:t.id,this._accordionEl=t,this._items=e,this._options=n(n({},r),i),this._initialized=!1,this.init(),o.default.addInstance(\"Accordion\",this,this._instanceId,a.override)}return t.prototype.init=function(){var t=this;this._items.length&&!this._initialized&&(this._items.forEach((function(e){e.active&&t.open(e.id);var i=function(){t.toggle(e.id)};e.triggerEl.addEventListener(\"click\",i),e.clickHandler=i})),this._initialized=!0)},t.prototype.destroy=function(){this._items.length&&this._initialized&&(this._items.forEach((function(t){t.triggerEl.removeEventListener(\"click\",t.clickHandler),delete t.clickHandler})),this._initialized=!1)},t.prototype.removeInstance=function(){o.default.removeInstance(\"Accordion\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.getItem=function(t){return this._items.filter((function(e){return e.id===t}))[0]},t.prototype.open=function(t){var e,i,n=this,o=this.getItem(t);this._options.alwaysOpen||this._items.map((function(t){var e,i;t!==o&&((e=t.triggerEl.classList).remove.apply(e,n._options.activeClasses.split(\" \")),(i=t.triggerEl.classList).add.apply(i,n._options.inactiveClasses.split(\" \")),t.targetEl.classList.add(\"hidden\"),t.triggerEl.setAttribute(\"aria-expanded\",\"false\"),t.active=!1,t.iconEl&&t.iconEl.classList.remove(\"rotate-180\"))})),(e=o.triggerEl.classList).add.apply(e,this._options.activeClasses.split(\" \")),(i=o.triggerEl.classList).remove.apply(i,this._options.inactiveClasses.split(\" \")),o.triggerEl.setAttribute(\"aria-expanded\",\"true\"),o.targetEl.classList.remove(\"hidden\"),o.active=!0,o.iconEl&&o.iconEl.classList.add(\"rotate-180\"),this._options.onOpen(this,o)},t.prototype.toggle=function(t){var e=this.getItem(t);e.active?this.close(t):this.open(t),this._options.onToggle(this,e)},t.prototype.close=function(t){var e,i,n=this.getItem(t);(e=n.triggerEl.classList).remove.apply(e,this._options.activeClasses.split(\" \")),(i=n.triggerEl.classList).add.apply(i,this._options.inactiveClasses.split(\" \")),n.targetEl.classList.add(\"hidden\"),n.triggerEl.setAttribute(\"aria-expanded\",\"false\"),n.active=!1,n.iconEl&&n.iconEl.classList.remove(\"rotate-180\"),this._options.onClose(this,n)},t}();function c(){document.querySelectorAll(\"[data-accordion]\").forEach((function(t){var e=t.getAttribute(\"data-accordion\"),i=t.getAttribute(\"data-active-classes\"),n=t.getAttribute(\"data-inactive-classes\"),o=[];t.querySelectorAll(\"[data-accordion-target]\").forEach((function(e){if(e.closest(\"[data-accordion]\")===t){var i={id:e.getAttribute(\"data-accordion-target\"),triggerEl:e,targetEl:document.querySelector(e.getAttribute(\"data-accordion-target\")),iconEl:e.querySelector(\"[data-accordion-icon]\"),active:\"true\"===e.getAttribute(\"aria-expanded\")};o.push(i)}})),new a(t,o,{alwaysOpen:\"open\"===e,activeClasses:i||r.activeClasses,inactiveClasses:n||r.inactiveClasses})}))}e.initAccordions=c,\"undefined\"!=typeof window&&(window.Accordion=a,window.initAccordions=c),e.default=a},33:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initCarousels=void 0;var o=i(423),r={defaultPosition:0,indicators:{items:[],activeClasses:\"bg-white dark:bg-gray-800\",inactiveClasses:\"bg-white/50 dark:bg-gray-800/50 hover:bg-white dark:hover:bg-gray-800\"},interval:3e3,onNext:function(){},onPrev:function(){},onChange:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i,a){void 0===t&&(t=null),void 0===e&&(e=[]),void 0===i&&(i=r),void 0===a&&(a=s),this._instanceId=a.id?a.id:t.id,this._carouselEl=t,this._items=e,this._options=n(n(n({},r),i),{indicators:n(n({},r.indicators),i.indicators)}),this._activeItem=this.getItem(this._options.defaultPosition),this._indicators=this._options.indicators.items,this._intervalDuration=this._options.interval,this._intervalInstance=null,this._initialized=!1,this.init(),o.default.addInstance(\"Carousel\",this,this._instanceId,a.override)}return t.prototype.init=function(){var t=this;this._items.length&&!this._initialized&&(this._items.map((function(t){t.el.classList.add(\"absolute\",\"inset-0\",\"transition-transform\",\"transform\")})),this._getActiveItem()?this.slideTo(this._getActiveItem().position):this.slideTo(0),this._indicators.map((function(e,i){e.el.addEventListener(\"click\",(function(){t.slideTo(i)}))})),this._initialized=!0)},t.prototype.destroy=function(){this._initialized&&(this._initialized=!1)},t.prototype.removeInstance=function(){o.default.removeInstance(\"Carousel\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.getItem=function(t){return this._items[t]},t.prototype.slideTo=function(t){var e=this._items[t],i={left:0===e.position?this._items[this._items.length-1]:this._items[e.position-1],middle:e,right:e.position===this._items.length-1?this._items[0]:this._items[e.position+1]};this._rotate(i),this._setActiveItem(e),this._intervalInstance&&(this.pause(),this.cycle()),this._options.onChange(this)},t.prototype.next=function(){var t=this._getActiveItem(),e=null;e=t.position===this._items.length-1?this._items[0]:this._items[t.position+1],this.slideTo(e.position),this._options.onNext(this)},t.prototype.prev=function(){var t=this._getActiveItem(),e=null;e=0===t.position?this._items[this._items.length-1]:this._items[t.position-1],this.slideTo(e.position),this._options.onPrev(this)},t.prototype._rotate=function(t){this._items.map((function(t){t.el.classList.add(\"hidden\")})),t.left.el.classList.remove(\"-translate-x-full\",\"translate-x-full\",\"translate-x-0\",\"hidden\",\"z-20\"),t.left.el.classList.add(\"-translate-x-full\",\"z-10\"),t.middle.el.classList.remove(\"-translate-x-full\",\"translate-x-full\",\"translate-x-0\",\"hidden\",\"z-10\"),t.middle.el.classList.add(\"translate-x-0\",\"z-20\"),t.right.el.classList.remove(\"-translate-x-full\",\"translate-x-full\",\"translate-x-0\",\"hidden\",\"z-20\"),t.right.el.classList.add(\"translate-x-full\",\"z-10\")},t.prototype.cycle=function(){var t=this;\"undefined\"!=typeof window&&(this._intervalInstance=window.setInterval((function(){t.next()}),this._intervalDuration))},t.prototype.pause=function(){clearInterval(this._intervalInstance)},t.prototype._getActiveItem=function(){return this._activeItem},t.prototype._setActiveItem=function(t){var e,i,n=this;this._activeItem=t;var o=t.position;this._indicators.length&&(this._indicators.map((function(t){var e,i;t.el.setAttribute(\"aria-current\",\"false\"),(e=t.el.classList).remove.apply(e,n._options.indicators.activeClasses.split(\" \")),(i=t.el.classList).add.apply(i,n._options.indicators.inactiveClasses.split(\" \"))})),(e=this._indicators[o].el.classList).add.apply(e,this._options.indicators.activeClasses.split(\" \")),(i=this._indicators[o].el.classList).remove.apply(i,this._options.indicators.inactiveClasses.split(\" \")),this._indicators[o].el.setAttribute(\"aria-current\",\"true\"))},t}();function c(){document.querySelectorAll(\"[data-carousel]\").forEach((function(t){var e=t.getAttribute(\"data-carousel-interval\"),i=\"slide\"===t.getAttribute(\"data-carousel\"),n=[],o=0;t.querySelectorAll(\"[data-carousel-item]\").length&&Array.from(t.querySelectorAll(\"[data-carousel-item]\")).map((function(t,e){n.push({position:e,el:t}),\"active\"===t.getAttribute(\"data-carousel-item\")&&(o=e)}));var s=[];t.querySelectorAll(\"[data-carousel-slide-to]\").length&&Array.from(t.querySelectorAll(\"[data-carousel-slide-to]\")).map((function(t){s.push({position:parseInt(t.getAttribute(\"data-carousel-slide-to\")),el:t})}));var c=new a(t,n,{defaultPosition:o,indicators:{items:s},interval:e||r.interval});i&&c.cycle();var l=t.querySelector(\"[data-carousel-next]\"),d=t.querySelector(\"[data-carousel-prev]\");l&&l.addEventListener(\"click\",(function(){c.next()})),d&&d.addEventListener(\"click\",(function(){c.prev()}))}))}e.initCarousels=c,\"undefined\"!=typeof window&&(window.Carousel=a,window.initCarousels=c),e.default=a},922:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initCollapses=void 0;var o=i(423),r={onCollapse:function(){},onExpand:function(){},onToggle:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i,a){void 0===t&&(t=null),void 0===e&&(e=null),void 0===i&&(i=r),void 0===a&&(a=s),this._instanceId=a.id?a.id:t.id,this._targetEl=t,this._triggerEl=e,this._options=n(n({},r),i),this._visible=!1,this._initialized=!1,this.init(),o.default.addInstance(\"Collapse\",this,this._instanceId,a.override)}return t.prototype.init=function(){var t=this;this._triggerEl&&this._targetEl&&!this._initialized&&(this._triggerEl.hasAttribute(\"aria-expanded\")?this._visible=\"true\"===this._triggerEl.getAttribute(\"aria-expanded\"):this._visible=!this._targetEl.classList.contains(\"hidden\"),this._clickHandler=function(){t.toggle()},this._triggerEl.addEventListener(\"click\",this._clickHandler),this._initialized=!0)},t.prototype.destroy=function(){this._triggerEl&&this._initialized&&(this._triggerEl.removeEventListener(\"click\",this._clickHandler),this._initialized=!1)},t.prototype.removeInstance=function(){o.default.removeInstance(\"Collapse\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.collapse=function(){this._targetEl.classList.add(\"hidden\"),this._triggerEl&&this._triggerEl.setAttribute(\"aria-expanded\",\"false\"),this._visible=!1,this._options.onCollapse(this)},t.prototype.expand=function(){this._targetEl.classList.remove(\"hidden\"),this._triggerEl&&this._triggerEl.setAttribute(\"aria-expanded\",\"true\"),this._visible=!0,this._options.onExpand(this)},t.prototype.toggle=function(){this._visible?this.collapse():this.expand(),this._options.onToggle(this)},t}();function c(){document.querySelectorAll(\"[data-collapse-toggle]\").forEach((function(t){var e=t.getAttribute(\"data-collapse-toggle\"),i=document.getElementById(e);i?o.default.instanceExists(\"Collapse\",i.getAttribute(\"id\"))?new a(i,t,{},{id:i.getAttribute(\"id\")+\"_\"+o.default._generateRandomId()}):new a(i,t):console.error('The target element with id \"'.concat(e,'\" does not exist. Please check the data-collapse-toggle attribute.'))}))}e.initCollapses=c,\"undefined\"!=typeof window&&(window.Collapse=a,window.initCollapses=c),e.default=a},556:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initDials=void 0;var o=i(423),r={triggerType:\"hover\",onShow:function(){},onHide:function(){},onToggle:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i,a,c){void 0===t&&(t=null),void 0===e&&(e=null),void 0===i&&(i=null),void 0===a&&(a=r),void 0===c&&(c=s),this._instanceId=c.id?c.id:i.id,this._parentEl=t,this._triggerEl=e,this._targetEl=i,this._options=n(n({},r),a),this._visible=!1,this._initialized=!1,this.init(),o.default.addInstance(\"Dial\",this,this._instanceId,c.override)}return t.prototype.init=function(){var t=this;if(this._triggerEl&&this._targetEl&&!this._initialized){var e=this._getTriggerEventTypes(this._options.triggerType);this._showEventHandler=function(){t.show()},e.showEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._showEventHandler),t._targetEl.addEventListener(e,t._showEventHandler)})),this._hideEventHandler=function(){t._parentEl.matches(\":hover\")||t.hide()},e.hideEvents.forEach((function(e){t._parentEl.addEventListener(e,t._hideEventHandler)})),this._initialized=!0}},t.prototype.destroy=function(){var t=this;if(this._initialized){var e=this._getTriggerEventTypes(this._options.triggerType);e.showEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._showEventHandler),t._targetEl.removeEventListener(e,t._showEventHandler)})),e.hideEvents.forEach((function(e){t._parentEl.removeEventListener(e,t._hideEventHandler)})),this._initialized=!1}},t.prototype.removeInstance=function(){o.default.removeInstance(\"Dial\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.hide=function(){this._targetEl.classList.add(\"hidden\"),this._triggerEl&&this._triggerEl.setAttribute(\"aria-expanded\",\"false\"),this._visible=!1,this._options.onHide(this)},t.prototype.show=function(){this._targetEl.classList.remove(\"hidden\"),this._triggerEl&&this._triggerEl.setAttribute(\"aria-expanded\",\"true\"),this._visible=!0,this._options.onShow(this)},t.prototype.toggle=function(){this._visible?this.hide():this.show()},t.prototype.isHidden=function(){return!this._visible},t.prototype.isVisible=function(){return this._visible},t.prototype._getTriggerEventTypes=function(t){switch(t){case\"hover\":default:return{showEvents:[\"mouseenter\",\"focus\"],hideEvents:[\"mouseleave\",\"blur\"]};case\"click\":return{showEvents:[\"click\",\"focus\"],hideEvents:[\"focusout\",\"blur\"]};case\"none\":return{showEvents:[],hideEvents:[]}}},t}();function c(){document.querySelectorAll(\"[data-dial-init]\").forEach((function(t){var e=t.querySelector(\"[data-dial-toggle]\");if(e){var i=e.getAttribute(\"data-dial-toggle\"),n=document.getElementById(i);if(n){var o=e.getAttribute(\"data-dial-trigger\");new a(t,e,n,{triggerType:o||r.triggerType})}else console.error(\"Dial with id \".concat(i,\" does not exist. Are you sure that the data-dial-toggle attribute points to the correct modal id?\"))}else console.error(\"Dial with id \".concat(t.id,\" does not have a trigger element. Are you sure that the data-dial-toggle attribute exists?\"))}))}e.initDials=c,\"undefined\"!=typeof window&&(window.Dial=a,window.initDials=c),e.default=a},791:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initDismisses=void 0;var o=i(423),r={transition:\"transition-opacity\",duration:300,timing:\"ease-out\",onHide:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i,a){void 0===t&&(t=null),void 0===e&&(e=null),void 0===i&&(i=r),void 0===a&&(a=s),this._instanceId=a.id?a.id:t.id,this._targetEl=t,this._triggerEl=e,this._options=n(n({},r),i),this._initialized=!1,this.init(),o.default.addInstance(\"Dismiss\",this,this._instanceId,a.override)}return t.prototype.init=function(){var t=this;this._triggerEl&&this._targetEl&&!this._initialized&&(this._clickHandler=function(){t.hide()},this._triggerEl.addEventListener(\"click\",this._clickHandler),this._initialized=!0)},t.prototype.destroy=function(){this._triggerEl&&this._initialized&&(this._triggerEl.removeEventListener(\"click\",this._clickHandler),this._initialized=!1)},t.prototype.removeInstance=function(){o.default.removeInstance(\"Dismiss\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.hide=function(){var t=this;this._targetEl.classList.add(this._options.transition,\"duration-\".concat(this._options.duration),this._options.timing,\"opacity-0\"),setTimeout((function(){t._targetEl.classList.add(\"hidden\")}),this._options.duration),this._options.onHide(this,this._targetEl)},t}();function c(){document.querySelectorAll(\"[data-dismiss-target]\").forEach((function(t){var e=t.getAttribute(\"data-dismiss-target\"),i=document.querySelector(e);i?new a(i,t):console.error('The dismiss element with id \"'.concat(e,'\" does not exist. Please check the data-dismiss-target attribute.'))}))}e.initDismisses=c,\"undefined\"!=typeof window&&(window.Dismiss=a,window.initDismisses=c),e.default=a},340:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initDrawers=void 0;var o=i(423),r={placement:\"left\",bodyScrolling:!1,backdrop:!0,edge:!1,edgeOffset:\"bottom-[60px]\",backdropClasses:\"bg-gray-900/50 dark:bg-gray-900/80 fixed inset-0 z-30\",onShow:function(){},onHide:function(){},onToggle:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i){void 0===t&&(t=null),void 0===e&&(e=r),void 0===i&&(i=s),this._eventListenerInstances=[],this._instanceId=i.id?i.id:t.id,this._targetEl=t,this._options=n(n({},r),e),this._visible=!1,this._initialized=!1,this.init(),o.default.addInstance(\"Drawer\",this,this._instanceId,i.override)}return t.prototype.init=function(){var t=this;this._targetEl&&!this._initialized&&(this._targetEl.setAttribute(\"aria-hidden\",\"true\"),this._targetEl.classList.add(\"transition-transform\"),this._getPlacementClasses(this._options.placement).base.map((function(e){t._targetEl.classList.add(e)})),this._handleEscapeKey=function(e){\"Escape\"===e.key&&t.isVisible()&&t.hide()},document.addEventListener(\"keydown\",this._handleEscapeKey),this._initialized=!0)},t.prototype.destroy=function(){this._initialized&&(this.removeAllEventListenerInstances(),this._destroyBackdropEl(),document.removeEventListener(\"keydown\",this._handleEscapeKey),this._initialized=!1)},t.prototype.removeInstance=function(){o.default.removeInstance(\"Drawer\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.hide=function(){var t=this;this._options.edge?(this._getPlacementClasses(this._options.placement+\"-edge\").active.map((function(e){t._targetEl.classList.remove(e)})),this._getPlacementClasses(this._options.placement+\"-edge\").inactive.map((function(e){t._targetEl.classList.add(e)}))):(this._getPlacementClasses(this._options.placement).active.map((function(e){t._targetEl.classList.remove(e)})),this._getPlacementClasses(this._options.placement).inactive.map((function(e){t._targetEl.classList.add(e)}))),this._targetEl.setAttribute(\"aria-hidden\",\"true\"),this._targetEl.removeAttribute(\"aria-modal\"),this._targetEl.removeAttribute(\"role\"),this._options.bodyScrolling||document.body.classList.remove(\"overflow-hidden\"),this._options.backdrop&&this._destroyBackdropEl(),this._visible=!1,this._options.onHide(this)},t.prototype.show=function(){var t=this;this._options.edge?(this._getPlacementClasses(this._options.placement+\"-edge\").active.map((function(e){t._targetEl.classList.add(e)})),this._getPlacementClasses(this._options.placement+\"-edge\").inactive.map((function(e){t._targetEl.classList.remove(e)}))):(this._getPlacementClasses(this._options.placement).active.map((function(e){t._targetEl.classList.add(e)})),this._getPlacementClasses(this._options.placement).inactive.map((function(e){t._targetEl.classList.remove(e)}))),this._targetEl.setAttribute(\"aria-modal\",\"true\"),this._targetEl.setAttribute(\"role\",\"dialog\"),this._targetEl.removeAttribute(\"aria-hidden\"),this._options.bodyScrolling||document.body.classList.add(\"overflow-hidden\"),this._options.backdrop&&this._createBackdrop(),this._visible=!0,this._options.onShow(this)},t.prototype.toggle=function(){this.isVisible()?this.hide():this.show()},t.prototype._createBackdrop=function(){var t,e=this;if(!this._visible){var i=document.createElement(\"div\");i.setAttribute(\"drawer-backdrop\",\"\"),(t=i.classList).add.apply(t,this._options.backdropClasses.split(\" \")),document.querySelector(\"body\").append(i),i.addEventListener(\"click\",(function(){e.hide()}))}},t.prototype._destroyBackdropEl=function(){this._visible&&document.querySelector(\"[drawer-backdrop]\").remove()},t.prototype._getPlacementClasses=function(t){switch(t){case\"top\":return{base:[\"top-0\",\"left-0\",\"right-0\"],active:[\"transform-none\"],inactive:[\"-translate-y-full\"]};case\"right\":return{base:[\"right-0\",\"top-0\"],active:[\"transform-none\"],inactive:[\"translate-x-full\"]};case\"bottom\":return{base:[\"bottom-0\",\"left-0\",\"right-0\"],active:[\"transform-none\"],inactive:[\"translate-y-full\"]};case\"left\":default:return{base:[\"left-0\",\"top-0\"],active:[\"transform-none\"],inactive:[\"-translate-x-full\"]};case\"bottom-edge\":return{base:[\"left-0\",\"top-0\"],active:[\"transform-none\"],inactive:[\"translate-y-full\",this._options.edgeOffset]}}},t.prototype.isHidden=function(){return!this._visible},t.prototype.isVisible=function(){return this._visible},t.prototype.addEventListenerInstance=function(t,e,i){this._eventListenerInstances.push({element:t,type:e,handler:i})},t.prototype.removeAllEventListenerInstances=function(){this._eventListenerInstances.map((function(t){t.element.removeEventListener(t.type,t.handler)})),this._eventListenerInstances=[]},t.prototype.getAllEventListenerInstances=function(){return this._eventListenerInstances},t}();function c(){document.querySelectorAll(\"[data-drawer-target]\").forEach((function(t){var e=t.getAttribute(\"data-drawer-target\"),i=document.getElementById(e);if(i){var n=t.getAttribute(\"data-drawer-placement\"),o=t.getAttribute(\"data-drawer-body-scrolling\"),s=t.getAttribute(\"data-drawer-backdrop\"),c=t.getAttribute(\"data-drawer-edge\"),l=t.getAttribute(\"data-drawer-edge-offset\");new a(i,{placement:n||r.placement,bodyScrolling:o?\"true\"===o:r.bodyScrolling,backdrop:s?\"true\"===s:r.backdrop,edge:c?\"true\"===c:r.edge,edgeOffset:l||r.edgeOffset})}else console.error(\"Drawer with id \".concat(e,\" not found. Are you sure that the data-drawer-target attribute points to the correct drawer id?\"))})),document.querySelectorAll(\"[data-drawer-toggle]\").forEach((function(t){var e=t.getAttribute(\"data-drawer-toggle\");if(document.getElementById(e)){var i=o.default.getInstance(\"Drawer\",e);if(i){var n=function(){i.toggle()};t.addEventListener(\"click\",n),i.addEventListenerInstance(t,\"click\",n)}else console.error(\"Drawer with id \".concat(e,\" has not been initialized. Please initialize it using the data-drawer-target attribute.\"))}else console.error(\"Drawer with id \".concat(e,\" not found. Are you sure that the data-drawer-target attribute points to the correct drawer id?\"))})),document.querySelectorAll(\"[data-drawer-dismiss], [data-drawer-hide]\").forEach((function(t){var e=t.getAttribute(\"data-drawer-dismiss\")?t.getAttribute(\"data-drawer-dismiss\"):t.getAttribute(\"data-drawer-hide\");if(document.getElementById(e)){var i=o.default.getInstance(\"Drawer\",e);if(i){var n=function(){i.hide()};t.addEventListener(\"click\",n),i.addEventListenerInstance(t,\"click\",n)}else console.error(\"Drawer with id \".concat(e,\" has not been initialized. Please initialize it using the data-drawer-target attribute.\"))}else console.error(\"Drawer with id \".concat(e,\" not found. Are you sure that the data-drawer-target attribute points to the correct drawer id\"))})),document.querySelectorAll(\"[data-drawer-show]\").forEach((function(t){var e=t.getAttribute(\"data-drawer-show\");if(document.getElementById(e)){var i=o.default.getInstance(\"Drawer\",e);if(i){var n=function(){i.show()};t.addEventListener(\"click\",n),i.addEventListenerInstance(t,\"click\",n)}else console.error(\"Drawer with id \".concat(e,\" has not been initialized. Please initialize it using the data-drawer-target attribute.\"))}else console.error(\"Drawer with id \".concat(e,\" not found. Are you sure that the data-drawer-target attribute points to the correct drawer id?\"))}))}e.initDrawers=c,\"undefined\"!=typeof window&&(window.Drawer=a,window.initDrawers=c),e.default=a},316:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)},o=this&&this.__spreadArray||function(t,e,i){if(i||2===arguments.length)for(var n,o=0,r=e.length;o<r;o++)!n&&o in e||(n||(n=Array.prototype.slice.call(e,0,o)),n[o]=e[o]);return t.concat(n||Array.prototype.slice.call(e))};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initDropdowns=void 0;var r=i(853),s=i(423),a={placement:\"bottom\",triggerType:\"click\",offsetSkidding:0,offsetDistance:10,delay:300,ignoreClickOutsideClass:!1,onShow:function(){},onHide:function(){},onToggle:function(){}},c={id:null,override:!0},l=function(){function t(t,e,i,o){void 0===t&&(t=null),void 0===e&&(e=null),void 0===i&&(i=a),void 0===o&&(o=c),this._instanceId=o.id?o.id:t.id,this._targetEl=t,this._triggerEl=e,this._options=n(n({},a),i),this._popperInstance=null,this._visible=!1,this._initialized=!1,this.init(),s.default.addInstance(\"Dropdown\",this,this._instanceId,o.override)}return t.prototype.init=function(){this._triggerEl&&this._targetEl&&!this._initialized&&(this._popperInstance=this._createPopperInstance(),this._setupEventListeners(),this._initialized=!0)},t.prototype.destroy=function(){var t=this,e=this._getTriggerEvents();\"click\"===this._options.triggerType&&e.showEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._clickHandler)})),\"hover\"===this._options.triggerType&&(e.showEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._hoverShowTriggerElHandler),t._targetEl.removeEventListener(e,t._hoverShowTargetElHandler)})),e.hideEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._hoverHideHandler),t._targetEl.removeEventListener(e,t._hoverHideHandler)}))),this._popperInstance.destroy(),this._initialized=!1},t.prototype.removeInstance=function(){s.default.removeInstance(\"Dropdown\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype._setupEventListeners=function(){var t=this,e=this._getTriggerEvents();this._clickHandler=function(){t.toggle()},\"click\"===this._options.triggerType&&e.showEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._clickHandler)})),this._hoverShowTriggerElHandler=function(e){\"click\"===e.type?t.toggle():setTimeout((function(){t.show()}),t._options.delay)},this._hoverShowTargetElHandler=function(){t.show()},this._hoverHideHandler=function(){setTimeout((function(){t._targetEl.matches(\":hover\")||t.hide()}),t._options.delay)},\"hover\"===this._options.triggerType&&(e.showEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._hoverShowTriggerElHandler),t._targetEl.addEventListener(e,t._hoverShowTargetElHandler)})),e.hideEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._hoverHideHandler),t._targetEl.addEventListener(e,t._hoverHideHandler)})))},t.prototype._createPopperInstance=function(){return(0,r.createPopper)(this._triggerEl,this._targetEl,{placement:this._options.placement,modifiers:[{name:\"offset\",options:{offset:[this._options.offsetSkidding,this._options.offsetDistance]}}]})},t.prototype._setupClickOutsideListener=function(){var t=this;this._clickOutsideEventListener=function(e){t._handleClickOutside(e,t._targetEl)},document.body.addEventListener(\"click\",this._clickOutsideEventListener,!0)},t.prototype._removeClickOutsideListener=function(){document.body.removeEventListener(\"click\",this._clickOutsideEventListener,!0)},t.prototype._handleClickOutside=function(t,e){var i=t.target,n=this._options.ignoreClickOutsideClass,o=!1;n&&document.querySelectorAll(\".\".concat(n)).forEach((function(t){t.contains(i)&&(o=!0)}));i===e||e.contains(i)||this._triggerEl.contains(i)||o||!this.isVisible()||this.hide()},t.prototype._getTriggerEvents=function(){switch(this._options.triggerType){case\"hover\":return{showEvents:[\"mouseenter\",\"click\"],hideEvents:[\"mouseleave\"]};case\"click\":default:return{showEvents:[\"click\"],hideEvents:[]};case\"none\":return{showEvents:[],hideEvents:[]}}},t.prototype.toggle=function(){this.isVisible()?this.hide():this.show(),this._options.onToggle(this)},t.prototype.isVisible=function(){return this._visible},t.prototype.show=function(){this._targetEl.classList.remove(\"hidden\"),this._targetEl.classList.add(\"block\"),this._popperInstance.setOptions((function(t){return n(n({},t),{modifiers:o(o([],t.modifiers,!0),[{name:\"eventListeners\",enabled:!0}],!1)})})),this._setupClickOutsideListener(),this._popperInstance.update(),this._visible=!0,this._options.onShow(this)},t.prototype.hide=function(){this._targetEl.classList.remove(\"block\"),this._targetEl.classList.add(\"hidden\"),this._popperInstance.setOptions((function(t){return n(n({},t),{modifiers:o(o([],t.modifiers,!0),[{name:\"eventListeners\",enabled:!1}],!1)})})),this._visible=!1,this._removeClickOutsideListener(),this._options.onHide(this)},t}();function d(){document.querySelectorAll(\"[data-dropdown-toggle]\").forEach((function(t){var e=t.getAttribute(\"data-dropdown-toggle\"),i=document.getElementById(e);if(i){var n=t.getAttribute(\"data-dropdown-placement\"),o=t.getAttribute(\"data-dropdown-offset-skidding\"),r=t.getAttribute(\"data-dropdown-offset-distance\"),s=t.getAttribute(\"data-dropdown-trigger\"),c=t.getAttribute(\"data-dropdown-delay\"),d=t.getAttribute(\"data-dropdown-ignore-click-outside-class\");new l(i,t,{placement:n||a.placement,triggerType:s||a.triggerType,offsetSkidding:o?parseInt(o):a.offsetSkidding,offsetDistance:r?parseInt(r):a.offsetDistance,delay:c?parseInt(c):a.delay,ignoreClickOutsideClass:d||a.ignoreClickOutsideClass})}else console.error('The dropdown element with id \"'.concat(e,'\" does not exist. Please check the data-dropdown-toggle attribute.'))}))}e.initDropdowns=d,\"undefined\"!=typeof window&&(window.Dropdown=l,window.initDropdowns=d),e.default=l},311:function(t,e,i){Object.defineProperty(e,\"__esModule\",{value:!0}),e.initFlowbite=void 0;var n=i(902),o=i(33),r=i(922),s=i(556),a=i(791),c=i(340),l=i(316),d=i(656),u=i(16),p=i(903),h=i(247),f=i(671);function v(){(0,n.initAccordions)(),(0,r.initCollapses)(),(0,o.initCarousels)(),(0,a.initDismisses)(),(0,l.initDropdowns)(),(0,u.initModals)(),(0,c.initDrawers)(),(0,h.initTabs)(),(0,f.initTooltips)(),(0,p.initPopovers)(),(0,s.initDials)(),(0,d.initInputCounters)()}e.initFlowbite=v,\"undefined\"!=typeof window&&(window.initFlowbite=v)},656:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initInputCounters=void 0;var o=i(423),r={minValue:null,maxValue:null,onIncrement:function(){},onDecrement:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i,a,c){void 0===t&&(t=null),void 0===e&&(e=null),void 0===i&&(i=null),void 0===a&&(a=r),void 0===c&&(c=s),this._instanceId=c.id?c.id:t.id,this._targetEl=t,this._incrementEl=e,this._decrementEl=i,this._options=n(n({},r),a),this._initialized=!1,this.init(),o.default.addInstance(\"InputCounter\",this,this._instanceId,c.override)}return t.prototype.init=function(){var t=this;this._targetEl&&!this._initialized&&(this._inputHandler=function(e){var i=e.target;/^\\d*$/.test(i.value)||(i.value=i.value.replace(/[^\\d]/g,\"\")),null!==t._options.maxValue&&parseInt(i.value)>t._options.maxValue&&(i.value=t._options.maxValue.toString()),null!==t._options.minValue&&parseInt(i.value)<t._options.minValue&&(i.value=t._options.minValue.toString())},this._incrementClickHandler=function(){t.increment()},this._decrementClickHandler=function(){t.decrement()},this._targetEl.addEventListener(\"input\",this._inputHandler),this._incrementEl&&this._incrementEl.addEventListener(\"click\",this._incrementClickHandler),this._decrementEl&&this._decrementEl.addEventListener(\"click\",this._decrementClickHandler),this._initialized=!0)},t.prototype.destroy=function(){this._targetEl&&this._initialized&&(this._targetEl.removeEventListener(\"input\",this._inputHandler),this._incrementEl&&this._incrementEl.removeEventListener(\"click\",this._incrementClickHandler),this._decrementEl&&this._decrementEl.removeEventListener(\"click\",this._decrementClickHandler),this._initialized=!1)},t.prototype.removeInstance=function(){o.default.removeInstance(\"InputCounter\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.getCurrentValue=function(){return parseInt(this._targetEl.value)||0},t.prototype.increment=function(){null!==this._options.maxValue&&this.getCurrentValue()>=this._options.maxValue||(this._targetEl.value=(this.getCurrentValue()+1).toString(),this._options.onIncrement(this))},t.prototype.decrement=function(){null!==this._options.minValue&&this.getCurrentValue()<=this._options.minValue||(this._targetEl.value=(this.getCurrentValue()-1).toString(),this._options.onDecrement(this))},t}();function c(){document.querySelectorAll(\"[data-input-counter]\").forEach((function(t){var e=t.id,i=document.querySelector('[data-input-counter-increment=\"'+e+'\"]'),n=document.querySelector('[data-input-counter-decrement=\"'+e+'\"]'),r=t.getAttribute(\"data-input-counter-min\"),s=t.getAttribute(\"data-input-counter-max\");t?o.default.instanceExists(\"InputCounter\",t.getAttribute(\"id\"))||new a(t,i||null,n||null,{minValue:r?parseInt(r):null,maxValue:s?parseInt(s):null}):console.error('The target element with id \"'.concat(e,'\" does not exist. Please check the data-input-counter attribute.'))}))}e.initInputCounters=c,\"undefined\"!=typeof window&&(window.InputCounter=a,window.initInputCounters=c),e.default=a},16:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initModals=void 0;var o=i(423),r={placement:\"center\",backdropClasses:\"bg-gray-900/50 dark:bg-gray-900/80 fixed inset-0 z-40\",backdrop:\"dynamic\",closable:!0,onHide:function(){},onShow:function(){},onToggle:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i){void 0===t&&(t=null),void 0===e&&(e=r),void 0===i&&(i=s),this._eventListenerInstances=[],this._instanceId=i.id?i.id:t.id,this._targetEl=t,this._options=n(n({},r),e),this._isHidden=!0,this._backdropEl=null,this._initialized=!1,this.init(),o.default.addInstance(\"Modal\",this,this._instanceId,i.override)}return t.prototype.init=function(){var t=this;this._targetEl&&!this._initialized&&(this._getPlacementClasses().map((function(e){t._targetEl.classList.add(e)})),this._initialized=!0)},t.prototype.destroy=function(){this._initialized&&(this.removeAllEventListenerInstances(),this._destroyBackdropEl(),this._initialized=!1)},t.prototype.removeInstance=function(){o.default.removeInstance(\"Modal\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype._createBackdrop=function(){var t;if(this._isHidden){var e=document.createElement(\"div\");e.setAttribute(\"modal-backdrop\",\"\"),(t=e.classList).add.apply(t,this._options.backdropClasses.split(\" \")),document.querySelector(\"body\").append(e),this._backdropEl=e}},t.prototype._destroyBackdropEl=function(){this._isHidden||document.querySelector(\"[modal-backdrop]\").remove()},t.prototype._setupModalCloseEventListeners=function(){var t=this;\"dynamic\"===this._options.backdrop&&(this._clickOutsideEventListener=function(e){t._handleOutsideClick(e.target)},this._targetEl.addEventListener(\"click\",this._clickOutsideEventListener,!0)),this._keydownEventListener=function(e){\"Escape\"===e.key&&t.hide()},document.body.addEventListener(\"keydown\",this._keydownEventListener,!0)},t.prototype._removeModalCloseEventListeners=function(){\"dynamic\"===this._options.backdrop&&this._targetEl.removeEventListener(\"click\",this._clickOutsideEventListener,!0),document.body.removeEventListener(\"keydown\",this._keydownEventListener,!0)},t.prototype._handleOutsideClick=function(t){(t===this._targetEl||t===this._backdropEl&&this.isVisible())&&this.hide()},t.prototype._getPlacementClasses=function(){switch(this._options.placement){case\"top-left\":return[\"justify-start\",\"items-start\"];case\"top-center\":return[\"justify-center\",\"items-start\"];case\"top-right\":return[\"justify-end\",\"items-start\"];case\"center-left\":return[\"justify-start\",\"items-center\"];case\"center\":default:return[\"justify-center\",\"items-center\"];case\"center-right\":return[\"justify-end\",\"items-center\"];case\"bottom-left\":return[\"justify-start\",\"items-end\"];case\"bottom-center\":return[\"justify-center\",\"items-end\"];case\"bottom-right\":return[\"justify-end\",\"items-end\"]}},t.prototype.toggle=function(){this._isHidden?this.show():this.hide(),this._options.onToggle(this)},t.prototype.show=function(){this.isHidden&&(this._targetEl.classList.add(\"flex\"),this._targetEl.classList.remove(\"hidden\"),this._targetEl.setAttribute(\"aria-modal\",\"true\"),this._targetEl.setAttribute(\"role\",\"dialog\"),this._targetEl.removeAttribute(\"aria-hidden\"),this._createBackdrop(),this._isHidden=!1,this._options.closable&&this._setupModalCloseEventListeners(),document.body.classList.add(\"overflow-hidden\"),this._options.onShow(this))},t.prototype.hide=function(){this.isVisible&&(this._targetEl.classList.add(\"hidden\"),this._targetEl.classList.remove(\"flex\"),this._targetEl.setAttribute(\"aria-hidden\",\"true\"),this._targetEl.removeAttribute(\"aria-modal\"),this._targetEl.removeAttribute(\"role\"),this._destroyBackdropEl(),this._isHidden=!0,document.body.classList.remove(\"overflow-hidden\"),this._options.closable&&this._removeModalCloseEventListeners(),this._options.onHide(this))},t.prototype.isVisible=function(){return!this._isHidden},t.prototype.isHidden=function(){return this._isHidden},t.prototype.addEventListenerInstance=function(t,e,i){this._eventListenerInstances.push({element:t,type:e,handler:i})},t.prototype.removeAllEventListenerInstances=function(){this._eventListenerInstances.map((function(t){t.element.removeEventListener(t.type,t.handler)})),this._eventListenerInstances=[]},t.prototype.getAllEventListenerInstances=function(){return this._eventListenerInstances},t}();function c(){document.querySelectorAll(\"[data-modal-target]\").forEach((function(t){var e=t.getAttribute(\"data-modal-target\"),i=document.getElementById(e);if(i){var n=i.getAttribute(\"data-modal-placement\"),o=i.getAttribute(\"data-modal-backdrop\");new a(i,{placement:n||r.placement,backdrop:o||r.backdrop})}else console.error(\"Modal with id \".concat(e,\" does not exist. Are you sure that the data-modal-target attribute points to the correct modal id?.\"))})),document.querySelectorAll(\"[data-modal-toggle]\").forEach((function(t){var e=t.getAttribute(\"data-modal-toggle\");if(document.getElementById(e)){var i=o.default.getInstance(\"Modal\",e);if(i){var n=function(){i.toggle()};t.addEventListener(\"click\",n),i.addEventListenerInstance(t,\"click\",n)}else console.error(\"Modal with id \".concat(e,\" has not been initialized. Please initialize it using the data-modal-target attribute.\"))}else console.error(\"Modal with id \".concat(e,\" does not exist. Are you sure that the data-modal-toggle attribute points to the correct modal id?\"))})),document.querySelectorAll(\"[data-modal-show]\").forEach((function(t){var e=t.getAttribute(\"data-modal-show\");if(document.getElementById(e)){var i=o.default.getInstance(\"Modal\",e);if(i){var n=function(){i.show()};t.addEventListener(\"click\",n),i.addEventListenerInstance(t,\"click\",n)}else console.error(\"Modal with id \".concat(e,\" has not been initialized. Please initialize it using the data-modal-target attribute.\"))}else console.error(\"Modal with id \".concat(e,\" does not exist. Are you sure that the data-modal-show attribute points to the correct modal id?\"))})),document.querySelectorAll(\"[data-modal-hide]\").forEach((function(t){var e=t.getAttribute(\"data-modal-hide\");if(document.getElementById(e)){var i=o.default.getInstance(\"Modal\",e);if(i){var n=function(){i.hide()};t.addEventListener(\"click\",n),i.addEventListenerInstance(t,\"click\",n)}else console.error(\"Modal with id \".concat(e,\" has not been initialized. Please initialize it using the data-modal-target attribute.\"))}else console.error(\"Modal with id \".concat(e,\" does not exist. Are you sure that the data-modal-hide attribute points to the correct modal id?\"))}))}e.initModals=c,\"undefined\"!=typeof window&&(window.Modal=a,window.initModals=c),e.default=a},903:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)},o=this&&this.__spreadArray||function(t,e,i){if(i||2===arguments.length)for(var n,o=0,r=e.length;o<r;o++)!n&&o in e||(n||(n=Array.prototype.slice.call(e,0,o)),n[o]=e[o]);return t.concat(n||Array.prototype.slice.call(e))};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initPopovers=void 0;var r=i(853),s=i(423),a={placement:\"top\",offset:10,triggerType:\"hover\",onShow:function(){},onHide:function(){},onToggle:function(){}},c={id:null,override:!0},l=function(){function t(t,e,i,o){void 0===t&&(t=null),void 0===e&&(e=null),void 0===i&&(i=a),void 0===o&&(o=c),this._instanceId=o.id?o.id:t.id,this._targetEl=t,this._triggerEl=e,this._options=n(n({},a),i),this._popperInstance=null,this._visible=!1,this._initialized=!1,this.init(),s.default.addInstance(\"Popover\",this,o.id?o.id:this._targetEl.id,o.override)}return t.prototype.init=function(){this._triggerEl&&this._targetEl&&!this._initialized&&(this._setupEventListeners(),this._popperInstance=this._createPopperInstance(),this._initialized=!0)},t.prototype.destroy=function(){var t=this;if(this._initialized){var e=this._getTriggerEvents();e.showEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._showHandler),t._targetEl.removeEventListener(e,t._showHandler)})),e.hideEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._hideHandler),t._targetEl.removeEventListener(e,t._hideHandler)})),this._removeKeydownListener(),this._removeClickOutsideListener(),this._popperInstance&&this._popperInstance.destroy(),this._initialized=!1}},t.prototype.removeInstance=function(){s.default.removeInstance(\"Popover\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype._setupEventListeners=function(){var t=this,e=this._getTriggerEvents();this._showHandler=function(){t.show()},this._hideHandler=function(){setTimeout((function(){t._targetEl.matches(\":hover\")||t.hide()}),100)},e.showEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._showHandler),t._targetEl.addEventListener(e,t._showHandler)})),e.hideEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._hideHandler),t._targetEl.addEventListener(e,t._hideHandler)}))},t.prototype._createPopperInstance=function(){return(0,r.createPopper)(this._triggerEl,this._targetEl,{placement:this._options.placement,modifiers:[{name:\"offset\",options:{offset:[0,this._options.offset]}}]})},t.prototype._getTriggerEvents=function(){switch(this._options.triggerType){case\"hover\":default:return{showEvents:[\"mouseenter\",\"focus\"],hideEvents:[\"mouseleave\",\"blur\"]};case\"click\":return{showEvents:[\"click\",\"focus\"],hideEvents:[\"focusout\",\"blur\"]};case\"none\":return{showEvents:[],hideEvents:[]}}},t.prototype._setupKeydownListener=function(){var t=this;this._keydownEventListener=function(e){\"Escape\"===e.key&&t.hide()},document.body.addEventListener(\"keydown\",this._keydownEventListener,!0)},t.prototype._removeKeydownListener=function(){document.body.removeEventListener(\"keydown\",this._keydownEventListener,!0)},t.prototype._setupClickOutsideListener=function(){var t=this;this._clickOutsideEventListener=function(e){t._handleClickOutside(e,t._targetEl)},document.body.addEventListener(\"click\",this._clickOutsideEventListener,!0)},t.prototype._removeClickOutsideListener=function(){document.body.removeEventListener(\"click\",this._clickOutsideEventListener,!0)},t.prototype._handleClickOutside=function(t,e){var i=t.target;i===e||e.contains(i)||this._triggerEl.contains(i)||!this.isVisible()||this.hide()},t.prototype.isVisible=function(){return this._visible},t.prototype.toggle=function(){this.isVisible()?this.hide():this.show(),this._options.onToggle(this)},t.prototype.show=function(){this._targetEl.classList.remove(\"opacity-0\",\"invisible\"),this._targetEl.classList.add(\"opacity-100\",\"visible\"),this._popperInstance.setOptions((function(t){return n(n({},t),{modifiers:o(o([],t.modifiers,!0),[{name:\"eventListeners\",enabled:!0}],!1)})})),this._setupClickOutsideListener(),this._setupKeydownListener(),this._popperInstance.update(),this._visible=!0,this._options.onShow(this)},t.prototype.hide=function(){this._targetEl.classList.remove(\"opacity-100\",\"visible\"),this._targetEl.classList.add(\"opacity-0\",\"invisible\"),this._popperInstance.setOptions((function(t){return n(n({},t),{modifiers:o(o([],t.modifiers,!0),[{name:\"eventListeners\",enabled:!1}],!1)})})),this._removeClickOutsideListener(),this._removeKeydownListener(),this._visible=!1,this._options.onHide(this)},t}();function d(){document.querySelectorAll(\"[data-popover-target]\").forEach((function(t){var e=t.getAttribute(\"data-popover-target\"),i=document.getElementById(e);if(i){var n=t.getAttribute(\"data-popover-trigger\"),o=t.getAttribute(\"data-popover-placement\"),r=t.getAttribute(\"data-popover-offset\");new l(i,t,{placement:o||a.placement,offset:r?parseInt(r):a.offset,triggerType:n||a.triggerType})}else console.error('The popover element with id \"'.concat(e,'\" does not exist. Please check the data-popover-target attribute.'))}))}e.initPopovers=d,\"undefined\"!=typeof window&&(window.Popover=l,window.initPopovers=d),e.default=l},247:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initTabs=void 0;var o=i(423),r={defaultTabId:null,activeClasses:\"text-blue-600 hover:text-blue-600 dark:text-blue-500 dark:hover:text-blue-500 border-blue-600 dark:border-blue-500\",inactiveClasses:\"dark:border-transparent text-gray-500 hover:text-gray-600 dark:text-gray-400 border-gray-100 hover:border-gray-300 dark:border-gray-700 dark:hover:text-gray-300\",onShow:function(){}},s={id:null,override:!0},a=function(){function t(t,e,i,a){void 0===t&&(t=null),void 0===e&&(e=[]),void 0===i&&(i=r),void 0===a&&(a=s),this._instanceId=a.id?a.id:t.id,this._tabsEl=t,this._items=e,this._activeTab=i?this.getTab(i.defaultTabId):null,this._options=n(n({},r),i),this._initialized=!1,this.init(),o.default.addInstance(\"Tabs\",this,this._tabsEl.id,!0),o.default.addInstance(\"Tabs\",this,this._instanceId,a.override)}return t.prototype.init=function(){var t=this;this._items.length&&!this._initialized&&(this._activeTab||this.setActiveTab(this._items[0]),this.show(this._activeTab.id,!0),this._items.map((function(e){e.triggerEl.addEventListener(\"click\",(function(){t.show(e.id)}))})))},t.prototype.destroy=function(){this._initialized&&(this._initialized=!1)},t.prototype.removeInstance=function(){this.destroy(),o.default.removeInstance(\"Tabs\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype.getActiveTab=function(){return this._activeTab},t.prototype.setActiveTab=function(t){this._activeTab=t},t.prototype.getTab=function(t){return this._items.filter((function(e){return e.id===t}))[0]},t.prototype.show=function(t,e){var i,n,o=this;void 0===e&&(e=!1);var r=this.getTab(t);(r!==this._activeTab||e)&&(this._items.map((function(t){var e,i;t!==r&&((e=t.triggerEl.classList).remove.apply(e,o._options.activeClasses.split(\" \")),(i=t.triggerEl.classList).add.apply(i,o._options.inactiveClasses.split(\" \")),t.targetEl.classList.add(\"hidden\"),t.triggerEl.setAttribute(\"aria-selected\",\"false\"))})),(i=r.triggerEl.classList).add.apply(i,this._options.activeClasses.split(\" \")),(n=r.triggerEl.classList).remove.apply(n,this._options.inactiveClasses.split(\" \")),r.triggerEl.setAttribute(\"aria-selected\",\"true\"),r.targetEl.classList.remove(\"hidden\"),this.setActiveTab(r),this._options.onShow(this,r))},t}();function c(){document.querySelectorAll(\"[data-tabs-toggle]\").forEach((function(t){var e=[],i=null;t.querySelectorAll('[role=\"tab\"]').forEach((function(t){var n=\"true\"===t.getAttribute(\"aria-selected\"),o={id:t.getAttribute(\"data-tabs-target\"),triggerEl:t,targetEl:document.querySelector(t.getAttribute(\"data-tabs-target\"))};e.push(o),n&&(i=o.id)})),new a(t,e,{defaultTabId:i})}))}e.initTabs=c,\"undefined\"!=typeof window&&(window.Tabs=a,window.initTabs=c),e.default=a},671:function(t,e,i){var n=this&&this.__assign||function(){return n=Object.assign||function(t){for(var e,i=1,n=arguments.length;i<n;i++)for(var o in e=arguments[i])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t},n.apply(this,arguments)},o=this&&this.__spreadArray||function(t,e,i){if(i||2===arguments.length)for(var n,o=0,r=e.length;o<r;o++)!n&&o in e||(n||(n=Array.prototype.slice.call(e,0,o)),n[o]=e[o]);return t.concat(n||Array.prototype.slice.call(e))};Object.defineProperty(e,\"__esModule\",{value:!0}),e.initTooltips=void 0;var r=i(853),s=i(423),a={placement:\"top\",triggerType:\"hover\",onShow:function(){},onHide:function(){},onToggle:function(){}},c={id:null,override:!0},l=function(){function t(t,e,i,o){void 0===t&&(t=null),void 0===e&&(e=null),void 0===i&&(i=a),void 0===o&&(o=c),this._instanceId=o.id?o.id:t.id,this._targetEl=t,this._triggerEl=e,this._options=n(n({},a),i),this._popperInstance=null,this._visible=!1,this._initialized=!1,this.init(),s.default.addInstance(\"Tooltip\",this,this._instanceId,o.override)}return t.prototype.init=function(){this._triggerEl&&this._targetEl&&!this._initialized&&(this._setupEventListeners(),this._popperInstance=this._createPopperInstance(),this._initialized=!0)},t.prototype.destroy=function(){var t=this;if(this._initialized){var e=this._getTriggerEvents();e.showEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._showHandler)})),e.hideEvents.forEach((function(e){t._triggerEl.removeEventListener(e,t._hideHandler)})),this._removeKeydownListener(),this._removeClickOutsideListener(),this._popperInstance&&this._popperInstance.destroy(),this._initialized=!1}},t.prototype.removeInstance=function(){s.default.removeInstance(\"Tooltip\",this._instanceId)},t.prototype.destroyAndRemoveInstance=function(){this.destroy(),this.removeInstance()},t.prototype._setupEventListeners=function(){var t=this,e=this._getTriggerEvents();this._showHandler=function(){t.show()},this._hideHandler=function(){t.hide()},e.showEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._showHandler)})),e.hideEvents.forEach((function(e){t._triggerEl.addEventListener(e,t._hideHandler)}))},t.prototype._createPopperInstance=function(){return(0,r.createPopper)(this._triggerEl,this._targetEl,{placement:this._options.placement,modifiers:[{name:\"offset\",options:{offset:[0,8]}}]})},t.prototype._getTriggerEvents=function(){switch(this._options.triggerType){case\"hover\":default:return{showEvents:[\"mouseenter\",\"focus\"],hideEvents:[\"mouseleave\",\"blur\"]};case\"click\":return{showEvents:[\"click\",\"focus\"],hideEvents:[\"focusout\",\"blur\"]};case\"none\":return{showEvents:[],hideEvents:[]}}},t.prototype._setupKeydownListener=function(){var t=this;this._keydownEventListener=function(e){\"Escape\"===e.key&&t.hide()},document.body.addEventListener(\"keydown\",this._keydownEventListener,!0)},t.prototype._removeKeydownListener=function(){document.body.removeEventListener(\"keydown\",this._keydownEventListener,!0)},t.prototype._setupClickOutsideListener=function(){var t=this;this._clickOutsideEventListener=function(e){t._handleClickOutside(e,t._targetEl)},document.body.addEventListener(\"click\",this._clickOutsideEventListener,!0)},t.prototype._removeClickOutsideListener=function(){document.body.removeEventListener(\"click\",this._clickOutsideEventListener,!0)},t.prototype._handleClickOutside=function(t,e){var i=t.target;i===e||e.contains(i)||this._triggerEl.contains(i)||!this.isVisible()||this.hide()},t.prototype.isVisible=function(){return this._visible},t.prototype.toggle=function(){this.isVisible()?this.hide():this.show()},t.prototype.show=function(){this._targetEl.classList.remove(\"opacity-0\",\"invisible\"),this._targetEl.classList.add(\"opacity-100\",\"visible\"),this._popperInstance.setOptions((function(t){return n(n({},t),{modifiers:o(o([],t.modifiers,!0),[{name:\"eventListeners\",enabled:!0}],!1)})})),this._setupClickOutsideListener(),this._setupKeydownListener(),this._popperInstance.update(),this._visible=!0,this._options.onShow(this)},t.prototype.hide=function(){this._targetEl.classList.remove(\"opacity-100\",\"visible\"),this._targetEl.classList.add(\"opacity-0\",\"invisible\"),this._popperInstance.setOptions((function(t){return n(n({},t),{modifiers:o(o([],t.modifiers,!0),[{name:\"eventListeners\",enabled:!1}],!1)})})),this._removeClickOutsideListener(),this._removeKeydownListener(),this._visible=!1,this._options.onHide(this)},t}();function d(){document.querySelectorAll(\"[data-tooltip-target]\").forEach((function(t){var e=t.getAttribute(\"data-tooltip-target\"),i=document.getElementById(e);if(i){var n=t.getAttribute(\"data-tooltip-trigger\"),o=t.getAttribute(\"data-tooltip-placement\");new l(i,t,{placement:o||a.placement,triggerType:n||a.triggerType})}else console.error('The tooltip element with id \"'.concat(e,'\" does not exist. Please check the data-tooltip-target attribute.'))}))}e.initTooltips=d,\"undefined\"!=typeof window&&(window.Tooltip=l,window.initTooltips=d),e.default=l},947:function(t,e){Object.defineProperty(e,\"__esModule\",{value:!0});var i=function(){function t(t,e){void 0===e&&(e=[]),this._eventType=t,this._eventFunctions=e}return t.prototype.init=function(){var t=this;this._eventFunctions.forEach((function(e){\"undefined\"!=typeof window&&window.addEventListener(t._eventType,e)}))},t}();e.default=i},423:function(t,e){Object.defineProperty(e,\"__esModule\",{value:!0});var i=new(function(){function t(){this._instances={Accordion:{},Carousel:{},Collapse:{},Dial:{},Dismiss:{},Drawer:{},Dropdown:{},Modal:{},Popover:{},Tabs:{},Tooltip:{},InputCounter:{}}}return t.prototype.addInstance=function(t,e,i,n){if(void 0===n&&(n=!1),!this._instances[t])return console.warn(\"Flowbite: Component \".concat(t,\" does not exist.\")),!1;!this._instances[t][i]||n?(n&&this._instances[t][i]&&this._instances[t][i].destroyAndRemoveInstance(),this._instances[t][i||this._generateRandomId()]=e):console.warn(\"Flowbite: Instance with ID \".concat(i,\" already exists.\"))},t.prototype.getAllInstances=function(){return this._instances},t.prototype.getInstances=function(t){return this._instances[t]?this._instances[t]:(console.warn(\"Flowbite: Component \".concat(t,\" does not exist.\")),!1)},t.prototype.getInstance=function(t,e){if(this._componentAndInstanceCheck(t,e)){if(this._instances[t][e])return this._instances[t][e];console.warn(\"Flowbite: Instance with ID \".concat(e,\" does not exist.\"))}},t.prototype.destroyAndRemoveInstance=function(t,e){this._componentAndInstanceCheck(t,e)&&(this.destroyInstanceObject(t,e),this.removeInstance(t,e))},t.prototype.removeInstance=function(t,e){this._componentAndInstanceCheck(t,e)&&delete this._instances[t][e]},t.prototype.destroyInstanceObject=function(t,e){this._componentAndInstanceCheck(t,e)&&this._instances[t][e].destroy()},t.prototype.instanceExists=function(t,e){return!!this._instances[t]&&!!this._instances[t][e]},t.prototype._generateRandomId=function(){return Math.random().toString(36).substr(2,9)},t.prototype._componentAndInstanceCheck=function(t,e){return this._instances[t]?!!this._instances[t][e]||(console.warn(\"Flowbite: Instance with ID \".concat(e,\" does not exist.\")),!1):(console.warn(\"Flowbite: Component \".concat(t,\" does not exist.\")),!1)},t}());e.default=i,\"undefined\"!=typeof window&&(window.FlowbiteInstances=i)}},e={};function i(n){var o=e[n];if(void 0!==o)return o.exports;var r=e[n]={exports:{}};return t[n].call(r.exports,r,r.exports,i),r.exports}i.d=function(t,e){for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var n={};return function(){var t=n;Object.defineProperty(t,\"__esModule\",{value:!0}),i(647);var e=i(902),o=i(33),r=i(922),s=i(556),a=i(791),c=i(340),l=i(316),d=i(16),u=i(903),p=i(247),h=i(671),f=i(656);i(311);var v=i(947);new v.default(\"load\",[e.initAccordions,r.initCollapses,o.initCarousels,a.initDismisses,l.initDropdowns,d.initModals,c.initDrawers,p.initTabs,h.initTooltips,u.initPopovers,s.initDials,f.initInputCounters]).init(),t.default={Accordion:e.default,Carousel:o.default,Collapse:r.default,Dial:s.default,Drawer:c.default,Dismiss:a.default,Dropdown:l.default,Modal:d.default,Popover:u.default,Tabs:p.default,Tooltip:h.default,InputCounter:f.default,Events:v.default}}(),n}()}));\n//# sourceMappingURL=flowbite.min.js.7cc182285771.map\n"
  },
  {
    "path": "src/staticfiles/htmx.min.23806a07aa01.js",
    "content": "(function(e,t){if(typeof define===\"function\"&&define.amd){define([],t)}else if(typeof module===\"object\"&&module.exports){module.exports=t()}else{e.htmx=e.htmx||t()}})(typeof self!==\"undefined\"?self:this,function(){return function(){\"use strict\";var Q={onLoad:F,process:zt,on:de,off:ge,trigger:ce,ajax:Nr,find:C,findAll:f,closest:v,values:function(e,t){var r=dr(e,t||\"post\");return r.values},remove:_,addClass:z,removeClass:n,toggleClass:$,takeClass:W,defineExtension:Ur,removeExtension:Br,logAll:V,logNone:j,logger:null,config:{historyEnabled:true,historyCacheSize:10,refreshOnHistoryMiss:false,defaultSwapStyle:\"innerHTML\",defaultSwapDelay:0,defaultSettleDelay:20,includeIndicatorStyles:true,indicatorClass:\"htmx-indicator\",requestClass:\"htmx-request\",addedClass:\"htmx-added\",settlingClass:\"htmx-settling\",swappingClass:\"htmx-swapping\",allowEval:true,allowScriptTags:true,inlineScriptNonce:\"\",attributesToSettle:[\"class\",\"style\",\"width\",\"height\"],withCredentials:false,timeout:0,wsReconnectDelay:\"full-jitter\",wsBinaryType:\"blob\",disableSelector:\"[hx-disable], [data-hx-disable]\",useTemplateFragments:false,scrollBehavior:\"smooth\",defaultFocusScroll:false,getCacheBusterParam:false,globalViewTransitions:false,methodsThatUseUrlParams:[\"get\"],selfRequestsOnly:false,ignoreTitle:false,scrollIntoViewOnBoost:true,triggerSpecsCache:null},parseInterval:d,_:t,createEventSource:function(e){return new EventSource(e,{withCredentials:true})},createWebSocket:function(e){var t=new WebSocket(e,[]);t.binaryType=Q.config.wsBinaryType;return t},version:\"1.9.10\"};var r={addTriggerHandler:Lt,bodyContains:se,canAccessLocalStorage:U,findThisElement:xe,filterValues:yr,hasAttribute:o,getAttributeValue:te,getClosestAttributeValue:ne,getClosestMatch:c,getExpressionVars:Hr,getHeaders:xr,getInputValues:dr,getInternalData:ae,getSwapSpecification:wr,getTriggerSpecs:it,getTarget:ye,makeFragment:l,mergeObjects:le,makeSettleInfo:T,oobSwap:Ee,querySelectorExt:ue,selectAndSwap:je,settleImmediately:nr,shouldCancel:ut,triggerEvent:ce,triggerErrorEvent:fe,withExtensions:R};var w=[\"get\",\"post\",\"put\",\"delete\",\"patch\"];var i=w.map(function(e){return\"[hx-\"+e+\"], [data-hx-\"+e+\"]\"}).join(\", \");var S=e(\"head\"),q=e(\"title\"),H=e(\"svg\",true);function e(e,t=false){return new RegExp(`<${e}(\\\\s[^>]*>|>)([\\\\s\\\\S]*?)<\\\\/${e}>`,t?\"gim\":\"im\")}function d(e){if(e==undefined){return undefined}let t=NaN;if(e.slice(-2)==\"ms\"){t=parseFloat(e.slice(0,-2))}else if(e.slice(-1)==\"s\"){t=parseFloat(e.slice(0,-1))*1e3}else if(e.slice(-1)==\"m\"){t=parseFloat(e.slice(0,-1))*1e3*60}else{t=parseFloat(e)}return isNaN(t)?undefined:t}function ee(e,t){return e.getAttribute&&e.getAttribute(t)}function o(e,t){return e.hasAttribute&&(e.hasAttribute(t)||e.hasAttribute(\"data-\"+t))}function te(e,t){return ee(e,t)||ee(e,\"data-\"+t)}function u(e){return e.parentElement}function re(){return document}function c(e,t){while(e&&!t(e)){e=u(e)}return e?e:null}function L(e,t,r){var n=te(t,r);var i=te(t,\"hx-disinherit\");if(e!==t&&i&&(i===\"*\"||i.split(\" \").indexOf(r)>=0)){return\"unset\"}else{return n}}function ne(t,r){var n=null;c(t,function(e){return n=L(t,e,r)});if(n!==\"unset\"){return n}}function h(e,t){var r=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.oMatchesSelector;return r&&r.call(e,t)}function A(e){var t=/<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;var r=t.exec(e);if(r){return r[1].toLowerCase()}else{return\"\"}}function a(e,t){var r=new DOMParser;var n=r.parseFromString(e,\"text/html\");var i=n.body;while(t>0){t--;i=i.firstChild}if(i==null){i=re().createDocumentFragment()}return i}function N(e){return/<body/.test(e)}function l(e){var t=!N(e);var r=A(e);var n=e;if(r===\"head\"){n=n.replace(S,\"\")}if(Q.config.useTemplateFragments&&t){var i=a(\"<body><template>\"+n+\"</template></body>\",0);return i.querySelector(\"template\").content}switch(r){case\"thead\":case\"tbody\":case\"tfoot\":case\"colgroup\":case\"caption\":return a(\"<table>\"+n+\"</table>\",1);case\"col\":return a(\"<table><colgroup>\"+n+\"</colgroup></table>\",2);case\"tr\":return a(\"<table><tbody>\"+n+\"</tbody></table>\",2);case\"td\":case\"th\":return a(\"<table><tbody><tr>\"+n+\"</tr></tbody></table>\",3);case\"script\":case\"style\":return a(\"<div>\"+n+\"</div>\",1);default:return a(n,0)}}function ie(e){if(e){e()}}function I(e,t){return Object.prototype.toString.call(e)===\"[object \"+t+\"]\"}function k(e){return I(e,\"Function\")}function P(e){return I(e,\"Object\")}function ae(e){var t=\"htmx-internal-data\";var r=e[t];if(!r){r=e[t]={}}return r}function M(e){var t=[];if(e){for(var r=0;r<e.length;r++){t.push(e[r])}}return t}function oe(e,t){if(e){for(var r=0;r<e.length;r++){t(e[r])}}}function X(e){var t=e.getBoundingClientRect();var r=t.top;var n=t.bottom;return r<window.innerHeight&&n>=0}function se(e){if(e.getRootNode&&e.getRootNode()instanceof window.ShadowRoot){return re().body.contains(e.getRootNode().host)}else{return re().body.contains(e)}}function D(e){return e.trim().split(/\\s+/)}function le(e,t){for(var r in t){if(t.hasOwnProperty(r)){e[r]=t[r]}}return e}function E(e){try{return JSON.parse(e)}catch(e){b(e);return null}}function U(){var e=\"htmx:localStorageTest\";try{localStorage.setItem(e,e);localStorage.removeItem(e);return true}catch(e){return false}}function B(t){try{var e=new URL(t);if(e){t=e.pathname+e.search}if(!/^\\/$/.test(t)){t=t.replace(/\\/+$/,\"\")}return t}catch(e){return t}}function t(e){return Tr(re().body,function(){return eval(e)})}function F(t){var e=Q.on(\"htmx:load\",function(e){t(e.detail.elt)});return e}function V(){Q.logger=function(e,t,r){if(console){console.log(t,e,r)}}}function j(){Q.logger=null}function C(e,t){if(t){return e.querySelector(t)}else{return C(re(),e)}}function f(e,t){if(t){return e.querySelectorAll(t)}else{return f(re(),e)}}function _(e,t){e=g(e);if(t){setTimeout(function(){_(e);e=null},t)}else{e.parentElement.removeChild(e)}}function z(e,t,r){e=g(e);if(r){setTimeout(function(){z(e,t);e=null},r)}else{e.classList&&e.classList.add(t)}}function n(e,t,r){e=g(e);if(r){setTimeout(function(){n(e,t);e=null},r)}else{if(e.classList){e.classList.remove(t);if(e.classList.length===0){e.removeAttribute(\"class\")}}}}function $(e,t){e=g(e);e.classList.toggle(t)}function W(e,t){e=g(e);oe(e.parentElement.children,function(e){n(e,t)});z(e,t)}function v(e,t){e=g(e);if(e.closest){return e.closest(t)}else{do{if(e==null||h(e,t)){return e}}while(e=e&&u(e));return null}}function s(e,t){return e.substring(0,t.length)===t}function G(e,t){return e.substring(e.length-t.length)===t}function J(e){var t=e.trim();if(s(t,\"<\")&&G(t,\"/>\")){return t.substring(1,t.length-2)}else{return t}}function Z(e,t){if(t.indexOf(\"closest \")===0){return[v(e,J(t.substr(8)))]}else if(t.indexOf(\"find \")===0){return[C(e,J(t.substr(5)))]}else if(t===\"next\"){return[e.nextElementSibling]}else if(t.indexOf(\"next \")===0){return[K(e,J(t.substr(5)))]}else if(t===\"previous\"){return[e.previousElementSibling]}else if(t.indexOf(\"previous \")===0){return[Y(e,J(t.substr(9)))]}else if(t===\"document\"){return[document]}else if(t===\"window\"){return[window]}else if(t===\"body\"){return[document.body]}else{return re().querySelectorAll(J(t))}}var K=function(e,t){var r=re().querySelectorAll(t);for(var n=0;n<r.length;n++){var i=r[n];if(i.compareDocumentPosition(e)===Node.DOCUMENT_POSITION_PRECEDING){return i}}};var Y=function(e,t){var r=re().querySelectorAll(t);for(var n=r.length-1;n>=0;n--){var i=r[n];if(i.compareDocumentPosition(e)===Node.DOCUMENT_POSITION_FOLLOWING){return i}}};function ue(e,t){if(t){return Z(e,t)[0]}else{return Z(re().body,e)[0]}}function g(e){if(I(e,\"String\")){return C(e)}else{return e}}function ve(e,t,r){if(k(t)){return{target:re().body,event:e,listener:t}}else{return{target:g(e),event:t,listener:r}}}function de(t,r,n){jr(function(){var e=ve(t,r,n);e.target.addEventListener(e.event,e.listener)});var e=k(r);return e?r:n}function ge(t,r,n){jr(function(){var e=ve(t,r,n);e.target.removeEventListener(e.event,e.listener)});return k(r)?r:n}var me=re().createElement(\"output\");function pe(e,t){var r=ne(e,t);if(r){if(r===\"this\"){return[xe(e,t)]}else{var n=Z(e,r);if(n.length===0){b('The selector \"'+r+'\" on '+t+\" returned no matches!\");return[me]}else{return n}}}}function xe(e,t){return c(e,function(e){return te(e,t)!=null})}function ye(e){var t=ne(e,\"hx-target\");if(t){if(t===\"this\"){return xe(e,\"hx-target\")}else{return ue(e,t)}}else{var r=ae(e);if(r.boosted){return re().body}else{return e}}}function be(e){var t=Q.config.attributesToSettle;for(var r=0;r<t.length;r++){if(e===t[r]){return true}}return false}function we(t,r){oe(t.attributes,function(e){if(!r.hasAttribute(e.name)&&be(e.name)){t.removeAttribute(e.name)}});oe(r.attributes,function(e){if(be(e.name)){t.setAttribute(e.name,e.value)}})}function Se(e,t){var r=Fr(t);for(var n=0;n<r.length;n++){var i=r[n];try{if(i.isInlineSwap(e)){return true}}catch(e){b(e)}}return e===\"outerHTML\"}function Ee(e,i,a){var t=\"#\"+ee(i,\"id\");var o=\"outerHTML\";if(e===\"true\"){}else if(e.indexOf(\":\")>0){o=e.substr(0,e.indexOf(\":\"));t=e.substr(e.indexOf(\":\")+1,e.length)}else{o=e}var r=re().querySelectorAll(t);if(r){oe(r,function(e){var t;var r=i.cloneNode(true);t=re().createDocumentFragment();t.appendChild(r);if(!Se(o,e)){t=r}var n={shouldSwap:true,target:e,fragment:t};if(!ce(e,\"htmx:oobBeforeSwap\",n))return;e=n.target;if(n[\"shouldSwap\"]){Fe(o,e,e,t,a)}oe(a.elts,function(e){ce(e,\"htmx:oobAfterSwap\",n)})});i.parentNode.removeChild(i)}else{i.parentNode.removeChild(i);fe(re().body,\"htmx:oobErrorNoTarget\",{content:i})}return e}function Ce(e,t,r){var n=ne(e,\"hx-select-oob\");if(n){var i=n.split(\",\");for(var a=0;a<i.length;a++){var o=i[a].split(\":\",2);var s=o[0].trim();if(s.indexOf(\"#\")===0){s=s.substring(1)}var l=o[1]||\"true\";var u=t.querySelector(\"#\"+s);if(u){Ee(l,u,r)}}}oe(f(t,\"[hx-swap-oob], [data-hx-swap-oob]\"),function(e){var t=te(e,\"hx-swap-oob\");if(t!=null){Ee(t,e,r)}})}function Re(e){oe(f(e,\"[hx-preserve], [data-hx-preserve]\"),function(e){var t=te(e,\"id\");var r=re().getElementById(t);if(r!=null){e.parentNode.replaceChild(r,e)}})}function Te(o,e,s){oe(e.querySelectorAll(\"[id]\"),function(e){var t=ee(e,\"id\");if(t&&t.length>0){var r=t.replace(\"'\",\"\\\\'\");var n=e.tagName.replace(\":\",\"\\\\:\");var i=o.querySelector(n+\"[id='\"+r+\"']\");if(i&&i!==o){var a=e.cloneNode();we(e,i);s.tasks.push(function(){we(e,a)})}}})}function Oe(e){return function(){n(e,Q.config.addedClass);zt(e);Nt(e);qe(e);ce(e,\"htmx:load\")}}function qe(e){var t=\"[autofocus]\";var r=h(e,t)?e:e.querySelector(t);if(r!=null){r.focus()}}function m(e,t,r,n){Te(e,r,n);while(r.childNodes.length>0){var i=r.firstChild;z(i,Q.config.addedClass);e.insertBefore(i,t);if(i.nodeType!==Node.TEXT_NODE&&i.nodeType!==Node.COMMENT_NODE){n.tasks.push(Oe(i))}}}function He(e,t){var r=0;while(r<e.length){t=(t<<5)-t+e.charCodeAt(r++)|0}return t}function Le(e){var t=0;if(e.attributes){for(var r=0;r<e.attributes.length;r++){var n=e.attributes[r];if(n.value){t=He(n.name,t);t=He(n.value,t)}}}return t}function Ae(e){var t=ae(e);if(t.onHandlers){for(var r=0;r<t.onHandlers.length;r++){const n=t.onHandlers[r];e.removeEventListener(n.event,n.listener)}delete t.onHandlers}}function Ne(e){var t=ae(e);if(t.timeout){clearTimeout(t.timeout)}if(t.webSocket){t.webSocket.close()}if(t.sseEventSource){t.sseEventSource.close()}if(t.listenerInfos){oe(t.listenerInfos,function(e){if(e.on){e.on.removeEventListener(e.trigger,e.listener)}})}Ae(e);oe(Object.keys(t),function(e){delete t[e]})}function p(e){ce(e,\"htmx:beforeCleanupElement\");Ne(e);if(e.children){oe(e.children,function(e){p(e)})}}function Ie(t,e,r){if(t.tagName===\"BODY\"){return Ue(t,e,r)}else{var n;var i=t.previousSibling;m(u(t),t,e,r);if(i==null){n=u(t).firstChild}else{n=i.nextSibling}r.elts=r.elts.filter(function(e){return e!=t});while(n&&n!==t){if(n.nodeType===Node.ELEMENT_NODE){r.elts.push(n)}n=n.nextElementSibling}p(t);u(t).removeChild(t)}}function ke(e,t,r){return m(e,e.firstChild,t,r)}function Pe(e,t,r){return m(u(e),e,t,r)}function Me(e,t,r){return m(e,null,t,r)}function Xe(e,t,r){return m(u(e),e.nextSibling,t,r)}function De(e,t,r){p(e);return u(e).removeChild(e)}function Ue(e,t,r){var n=e.firstChild;m(e,n,t,r);if(n){while(n.nextSibling){p(n.nextSibling);e.removeChild(n.nextSibling)}p(n);e.removeChild(n)}}function Be(e,t,r){var n=r||ne(e,\"hx-select\");if(n){var i=re().createDocumentFragment();oe(t.querySelectorAll(n),function(e){i.appendChild(e)});t=i}return t}function Fe(e,t,r,n,i){switch(e){case\"none\":return;case\"outerHTML\":Ie(r,n,i);return;case\"afterbegin\":ke(r,n,i);return;case\"beforebegin\":Pe(r,n,i);return;case\"beforeend\":Me(r,n,i);return;case\"afterend\":Xe(r,n,i);return;case\"delete\":De(r,n,i);return;default:var a=Fr(t);for(var o=0;o<a.length;o++){var s=a[o];try{var l=s.handleSwap(e,r,n,i);if(l){if(typeof l.length!==\"undefined\"){for(var u=0;u<l.length;u++){var f=l[u];if(f.nodeType!==Node.TEXT_NODE&&f.nodeType!==Node.COMMENT_NODE){i.tasks.push(Oe(f))}}}return}}catch(e){b(e)}}if(e===\"innerHTML\"){Ue(r,n,i)}else{Fe(Q.config.defaultSwapStyle,t,r,n,i)}}}function Ve(e){if(e.indexOf(\"<title\")>-1){var t=e.replace(H,\"\");var r=t.match(q);if(r){return r[2]}}}function je(e,t,r,n,i,a){i.title=Ve(n);var o=l(n);if(o){Ce(r,o,i);o=Be(r,o,a);Re(o);return Fe(e,r,t,o,i)}}function _e(e,t,r){var n=e.getResponseHeader(t);if(n.indexOf(\"{\")===0){var i=E(n);for(var a in i){if(i.hasOwnProperty(a)){var o=i[a];if(!P(o)){o={value:o}}ce(r,a,o)}}}else{var s=n.split(\",\");for(var l=0;l<s.length;l++){ce(r,s[l].trim(),[])}}}var ze=/\\s/;var x=/[\\s,]/;var $e=/[_$a-zA-Z]/;var We=/[_$a-zA-Z0-9]/;var Ge=['\"',\"'\",\"/\"];var Je=/[^\\s]/;var Ze=/[{(]/;var Ke=/[})]/;function Ye(e){var t=[];var r=0;while(r<e.length){if($e.exec(e.charAt(r))){var n=r;while(We.exec(e.charAt(r+1))){r++}t.push(e.substr(n,r-n+1))}else if(Ge.indexOf(e.charAt(r))!==-1){var i=e.charAt(r);var n=r;r++;while(r<e.length&&e.charAt(r)!==i){if(e.charAt(r)===\"\\\\\"){r++}r++}t.push(e.substr(n,r-n+1))}else{var a=e.charAt(r);t.push(a)}r++}return t}function Qe(e,t,r){return $e.exec(e.charAt(0))&&e!==\"true\"&&e!==\"false\"&&e!==\"this\"&&e!==r&&t!==\".\"}function et(e,t,r){if(t[0]===\"[\"){t.shift();var n=1;var i=\" return (function(\"+r+\"){ return (\";var a=null;while(t.length>0){var o=t[0];if(o===\"]\"){n--;if(n===0){if(a===null){i=i+\"true\"}t.shift();i+=\")})\";try{var s=Tr(e,function(){return Function(i)()},function(){return true});s.source=i;return s}catch(e){fe(re().body,\"htmx:syntax:error\",{error:e,source:i});return null}}}else if(o===\"[\"){n++}if(Qe(o,a,r)){i+=\"((\"+r+\".\"+o+\") ? (\"+r+\".\"+o+\") : (window.\"+o+\"))\"}else{i=i+o}a=t.shift()}}}function y(e,t){var r=\"\";while(e.length>0&&!t.test(e[0])){r+=e.shift()}return r}function tt(e){var t;if(e.length>0&&Ze.test(e[0])){e.shift();t=y(e,Ke).trim();e.shift()}else{t=y(e,x)}return t}var rt=\"input, textarea, select\";function nt(e,t,r){var n=[];var i=Ye(t);do{y(i,Je);var a=i.length;var o=y(i,/[,\\[\\s]/);if(o!==\"\"){if(o===\"every\"){var s={trigger:\"every\"};y(i,Je);s.pollInterval=d(y(i,/[,\\[\\s]/));y(i,Je);var l=et(e,i,\"event\");if(l){s.eventFilter=l}n.push(s)}else if(o.indexOf(\"sse:\")===0){n.push({trigger:\"sse\",sseEvent:o.substr(4)})}else{var u={trigger:o};var l=et(e,i,\"event\");if(l){u.eventFilter=l}while(i.length>0&&i[0]!==\",\"){y(i,Je);var f=i.shift();if(f===\"changed\"){u.changed=true}else if(f===\"once\"){u.once=true}else if(f===\"consume\"){u.consume=true}else if(f===\"delay\"&&i[0]===\":\"){i.shift();u.delay=d(y(i,x))}else if(f===\"from\"&&i[0]===\":\"){i.shift();if(Ze.test(i[0])){var c=tt(i)}else{var c=y(i,x);if(c===\"closest\"||c===\"find\"||c===\"next\"||c===\"previous\"){i.shift();var h=tt(i);if(h.length>0){c+=\" \"+h}}}u.from=c}else if(f===\"target\"&&i[0]===\":\"){i.shift();u.target=tt(i)}else if(f===\"throttle\"&&i[0]===\":\"){i.shift();u.throttle=d(y(i,x))}else if(f===\"queue\"&&i[0]===\":\"){i.shift();u.queue=y(i,x)}else if(f===\"root\"&&i[0]===\":\"){i.shift();u[f]=tt(i)}else if(f===\"threshold\"&&i[0]===\":\"){i.shift();u[f]=y(i,x)}else{fe(e,\"htmx:syntax:error\",{token:i.shift()})}}n.push(u)}}if(i.length===a){fe(e,\"htmx:syntax:error\",{token:i.shift()})}y(i,Je)}while(i[0]===\",\"&&i.shift());if(r){r[t]=n}return n}function it(e){var t=te(e,\"hx-trigger\");var r=[];if(t){var n=Q.config.triggerSpecsCache;r=n&&n[t]||nt(e,t,n)}if(r.length>0){return r}else if(h(e,\"form\")){return[{trigger:\"submit\"}]}else if(h(e,'input[type=\"button\"], input[type=\"submit\"]')){return[{trigger:\"click\"}]}else if(h(e,rt)){return[{trigger:\"change\"}]}else{return[{trigger:\"click\"}]}}function at(e){ae(e).cancelled=true}function ot(e,t,r){var n=ae(e);n.timeout=setTimeout(function(){if(se(e)&&n.cancelled!==true){if(!ct(r,e,Wt(\"hx:poll:trigger\",{triggerSpec:r,target:e}))){t(e)}ot(e,t,r)}},r.pollInterval)}function st(e){return location.hostname===e.hostname&&ee(e,\"href\")&&ee(e,\"href\").indexOf(\"#\")!==0}function lt(t,r,e){if(t.tagName===\"A\"&&st(t)&&(t.target===\"\"||t.target===\"_self\")||t.tagName===\"FORM\"){r.boosted=true;var n,i;if(t.tagName===\"A\"){n=\"get\";i=ee(t,\"href\")}else{var a=ee(t,\"method\");n=a?a.toLowerCase():\"get\";if(n===\"get\"){}i=ee(t,\"action\")}e.forEach(function(e){ht(t,function(e,t){if(v(e,Q.config.disableSelector)){p(e);return}he(n,i,e,t)},r,e,true)})}}function ut(e,t){if(e.type===\"submit\"||e.type===\"click\"){if(t.tagName===\"FORM\"){return true}if(h(t,'input[type=\"submit\"], button')&&v(t,\"form\")!==null){return true}if(t.tagName===\"A\"&&t.href&&(t.getAttribute(\"href\")===\"#\"||t.getAttribute(\"href\").indexOf(\"#\")!==0)){return true}}return false}function ft(e,t){return ae(e).boosted&&e.tagName===\"A\"&&t.type===\"click\"&&(t.ctrlKey||t.metaKey)}function ct(e,t,r){var n=e.eventFilter;if(n){try{return n.call(t,r)!==true}catch(e){fe(re().body,\"htmx:eventFilter:error\",{error:e,source:n.source});return true}}return false}function ht(a,o,e,s,l){var u=ae(a);var t;if(s.from){t=Z(a,s.from)}else{t=[a]}if(s.changed){t.forEach(function(e){var t=ae(e);t.lastValue=e.value})}oe(t,function(n){var i=function(e){if(!se(a)){n.removeEventListener(s.trigger,i);return}if(ft(a,e)){return}if(l||ut(e,a)){e.preventDefault()}if(ct(s,a,e)){return}var t=ae(e);t.triggerSpec=s;if(t.handledFor==null){t.handledFor=[]}if(t.handledFor.indexOf(a)<0){t.handledFor.push(a);if(s.consume){e.stopPropagation()}if(s.target&&e.target){if(!h(e.target,s.target)){return}}if(s.once){if(u.triggeredOnce){return}else{u.triggeredOnce=true}}if(s.changed){var r=ae(n);if(r.lastValue===n.value){return}r.lastValue=n.value}if(u.delayed){clearTimeout(u.delayed)}if(u.throttle){return}if(s.throttle>0){if(!u.throttle){o(a,e);u.throttle=setTimeout(function(){u.throttle=null},s.throttle)}}else if(s.delay>0){u.delayed=setTimeout(function(){o(a,e)},s.delay)}else{ce(a,\"htmx:trigger\");o(a,e)}}};if(e.listenerInfos==null){e.listenerInfos=[]}e.listenerInfos.push({trigger:s.trigger,listener:i,on:n});n.addEventListener(s.trigger,i)})}var vt=false;var dt=null;function gt(){if(!dt){dt=function(){vt=true};window.addEventListener(\"scroll\",dt);setInterval(function(){if(vt){vt=false;oe(re().querySelectorAll(\"[hx-trigger='revealed'],[data-hx-trigger='revealed']\"),function(e){mt(e)})}},200)}}function mt(t){if(!o(t,\"data-hx-revealed\")&&X(t)){t.setAttribute(\"data-hx-revealed\",\"true\");var e=ae(t);if(e.initHash){ce(t,\"revealed\")}else{t.addEventListener(\"htmx:afterProcessNode\",function(e){ce(t,\"revealed\")},{once:true})}}}function pt(e,t,r){var n=D(r);for(var i=0;i<n.length;i++){var a=n[i].split(/:(.+)/);if(a[0]===\"connect\"){xt(e,a[1],0)}if(a[0]===\"send\"){bt(e)}}}function xt(s,r,n){if(!se(s)){return}if(r.indexOf(\"/\")==0){var e=location.hostname+(location.port?\":\"+location.port:\"\");if(location.protocol==\"https:\"){r=\"wss://\"+e+r}else if(location.protocol==\"http:\"){r=\"ws://\"+e+r}}var t=Q.createWebSocket(r);t.onerror=function(e){fe(s,\"htmx:wsError\",{error:e,socket:t});yt(s)};t.onclose=function(e){if([1006,1012,1013].indexOf(e.code)>=0){var t=wt(n);setTimeout(function(){xt(s,r,n+1)},t)}};t.onopen=function(e){n=0};ae(s).webSocket=t;t.addEventListener(\"message\",function(e){if(yt(s)){return}var t=e.data;R(s,function(e){t=e.transformResponse(t,null,s)});var r=T(s);var n=l(t);var i=M(n.children);for(var a=0;a<i.length;a++){var o=i[a];Ee(te(o,\"hx-swap-oob\")||\"true\",o,r)}nr(r.tasks)})}function yt(e){if(!se(e)){ae(e).webSocket.close();return true}}function bt(u){var f=c(u,function(e){return ae(e).webSocket!=null});if(f){u.addEventListener(it(u)[0].trigger,function(e){var t=ae(f).webSocket;var r=xr(u,f);var n=dr(u,\"post\");var i=n.errors;var a=n.values;var o=Hr(u);var s=le(a,o);var l=yr(s,u);l[\"HEADERS\"]=r;if(i&&i.length>0){ce(u,\"htmx:validation:halted\",i);return}t.send(JSON.stringify(l));if(ut(e,u)){e.preventDefault()}})}else{fe(u,\"htmx:noWebSocketSourceError\")}}function wt(e){var t=Q.config.wsReconnectDelay;if(typeof t===\"function\"){return t(e)}if(t===\"full-jitter\"){var r=Math.min(e,6);var n=1e3*Math.pow(2,r);return n*Math.random()}b('htmx.config.wsReconnectDelay must either be a function or the string \"full-jitter\"')}function St(e,t,r){var n=D(r);for(var i=0;i<n.length;i++){var a=n[i].split(/:(.+)/);if(a[0]===\"connect\"){Et(e,a[1])}if(a[0]===\"swap\"){Ct(e,a[1])}}}function Et(t,e){var r=Q.createEventSource(e);r.onerror=function(e){fe(t,\"htmx:sseError\",{error:e,source:r});Tt(t)};ae(t).sseEventSource=r}function Ct(a,o){var s=c(a,Ot);if(s){var l=ae(s).sseEventSource;var u=function(e){if(Tt(s)){return}if(!se(a)){l.removeEventListener(o,u);return}var t=e.data;R(a,function(e){t=e.transformResponse(t,null,a)});var r=wr(a);var n=ye(a);var i=T(a);je(r.swapStyle,n,a,t,i);nr(i.tasks);ce(a,\"htmx:sseMessage\",e)};ae(a).sseListener=u;l.addEventListener(o,u)}else{fe(a,\"htmx:noSSESourceError\")}}function Rt(e,t,r){var n=c(e,Ot);if(n){var i=ae(n).sseEventSource;var a=function(){if(!Tt(n)){if(se(e)){t(e)}else{i.removeEventListener(r,a)}}};ae(e).sseListener=a;i.addEventListener(r,a)}else{fe(e,\"htmx:noSSESourceError\")}}function Tt(e){if(!se(e)){ae(e).sseEventSource.close();return true}}function Ot(e){return ae(e).sseEventSource!=null}function qt(e,t,r,n){var i=function(){if(!r.loaded){r.loaded=true;t(e)}};if(n>0){setTimeout(i,n)}else{i()}}function Ht(t,i,e){var a=false;oe(w,function(r){if(o(t,\"hx-\"+r)){var n=te(t,\"hx-\"+r);a=true;i.path=n;i.verb=r;e.forEach(function(e){Lt(t,e,i,function(e,t){if(v(e,Q.config.disableSelector)){p(e);return}he(r,n,e,t)})})}});return a}function Lt(n,e,t,r){if(e.sseEvent){Rt(n,r,e.sseEvent)}else if(e.trigger===\"revealed\"){gt();ht(n,r,t,e);mt(n)}else if(e.trigger===\"intersect\"){var i={};if(e.root){i.root=ue(n,e.root)}if(e.threshold){i.threshold=parseFloat(e.threshold)}var a=new IntersectionObserver(function(e){for(var t=0;t<e.length;t++){var r=e[t];if(r.isIntersecting){ce(n,\"intersect\");break}}},i);a.observe(n);ht(n,r,t,e)}else if(e.trigger===\"load\"){if(!ct(e,n,Wt(\"load\",{elt:n}))){qt(n,r,t,e.delay)}}else if(e.pollInterval>0){t.polling=true;ot(n,r,e)}else{ht(n,r,t,e)}}function At(e){if(Q.config.allowScriptTags&&(e.type===\"text/javascript\"||e.type===\"module\"||e.type===\"\")){var t=re().createElement(\"script\");oe(e.attributes,function(e){t.setAttribute(e.name,e.value)});t.textContent=e.textContent;t.async=false;if(Q.config.inlineScriptNonce){t.nonce=Q.config.inlineScriptNonce}var r=e.parentElement;try{r.insertBefore(t,e)}catch(e){b(e)}finally{if(e.parentElement){e.parentElement.removeChild(e)}}}}function Nt(e){if(h(e,\"script\")){At(e)}oe(f(e,\"script\"),function(e){At(e)})}function It(e){var t=e.attributes;for(var r=0;r<t.length;r++){var n=t[r].name;if(s(n,\"hx-on:\")||s(n,\"data-hx-on:\")||s(n,\"hx-on-\")||s(n,\"data-hx-on-\")){return true}}return false}function kt(e){var t=null;var r=[];if(It(e)){r.push(e)}if(document.evaluate){var n=document.evaluate('.//*[@*[ starts-with(name(), \"hx-on:\") or starts-with(name(), \"data-hx-on:\") or'+' starts-with(name(), \"hx-on-\") or starts-with(name(), \"data-hx-on-\") ]]',e);while(t=n.iterateNext())r.push(t)}else{var i=e.getElementsByTagName(\"*\");for(var a=0;a<i.length;a++){if(It(i[a])){r.push(i[a])}}}return r}function Pt(e){if(e.querySelectorAll){var t=\", [hx-boost] a, [data-hx-boost] a, a[hx-boost], a[data-hx-boost]\";var r=e.querySelectorAll(i+t+\", form, [type='submit'], [hx-sse], [data-hx-sse], [hx-ws],\"+\" [data-hx-ws], [hx-ext], [data-hx-ext], [hx-trigger], [data-hx-trigger], [hx-on], [data-hx-on]\");return r}else{return[]}}function Mt(e){var t=v(e.target,\"button, input[type='submit']\");var r=Dt(e);if(r){r.lastButtonClicked=t}}function Xt(e){var t=Dt(e);if(t){t.lastButtonClicked=null}}function Dt(e){var t=v(e.target,\"button, input[type='submit']\");if(!t){return}var r=g(\"#\"+ee(t,\"form\"))||v(t,\"form\");if(!r){return}return ae(r)}function Ut(e){e.addEventListener(\"click\",Mt);e.addEventListener(\"focusin\",Mt);e.addEventListener(\"focusout\",Xt)}function Bt(e){var t=Ye(e);var r=0;for(var n=0;n<t.length;n++){const i=t[n];if(i===\"{\"){r++}else if(i===\"}\"){r--}}return r}function Ft(t,e,r){var n=ae(t);if(!Array.isArray(n.onHandlers)){n.onHandlers=[]}var i;var a=function(e){return Tr(t,function(){if(!i){i=new Function(\"event\",r)}i.call(t,e)})};t.addEventListener(e,a);n.onHandlers.push({event:e,listener:a})}function Vt(e){var t=te(e,\"hx-on\");if(t){var r={};var n=t.split(\"\\n\");var i=null;var a=0;while(n.length>0){var o=n.shift();var s=o.match(/^\\s*([a-zA-Z:\\-\\.]+:)(.*)/);if(a===0&&s){o.split(\":\");i=s[1].slice(0,-1);r[i]=s[2]}else{r[i]+=o}a+=Bt(o)}for(var l in r){Ft(e,l,r[l])}}}function jt(e){Ae(e);for(var t=0;t<e.attributes.length;t++){var r=e.attributes[t].name;var n=e.attributes[t].value;if(s(r,\"hx-on\")||s(r,\"data-hx-on\")){var i=r.indexOf(\"-on\")+3;var a=r.slice(i,i+1);if(a===\"-\"||a===\":\"){var o=r.slice(i+1);if(s(o,\":\")){o=\"htmx\"+o}else if(s(o,\"-\")){o=\"htmx:\"+o.slice(1)}else if(s(o,\"htmx-\")){o=\"htmx:\"+o.slice(5)}Ft(e,o,n)}}}}function _t(t){if(v(t,Q.config.disableSelector)){p(t);return}var r=ae(t);if(r.initHash!==Le(t)){Ne(t);r.initHash=Le(t);Vt(t);ce(t,\"htmx:beforeProcessNode\");if(t.value){r.lastValue=t.value}var e=it(t);var n=Ht(t,r,e);if(!n){if(ne(t,\"hx-boost\")===\"true\"){lt(t,r,e)}else if(o(t,\"hx-trigger\")){e.forEach(function(e){Lt(t,e,r,function(){})})}}if(t.tagName===\"FORM\"||ee(t,\"type\")===\"submit\"&&o(t,\"form\")){Ut(t)}var i=te(t,\"hx-sse\");if(i){St(t,r,i)}var a=te(t,\"hx-ws\");if(a){pt(t,r,a)}ce(t,\"htmx:afterProcessNode\")}}function zt(e){e=g(e);if(v(e,Q.config.disableSelector)){p(e);return}_t(e);oe(Pt(e),function(e){_t(e)});oe(kt(e),jt)}function $t(e){return e.replace(/([a-z0-9])([A-Z])/g,\"$1-$2\").toLowerCase()}function Wt(e,t){var r;if(window.CustomEvent&&typeof window.CustomEvent===\"function\"){r=new CustomEvent(e,{bubbles:true,cancelable:true,detail:t})}else{r=re().createEvent(\"CustomEvent\");r.initCustomEvent(e,true,true,t)}return r}function fe(e,t,r){ce(e,t,le({error:t},r))}function Gt(e){return e===\"htmx:afterProcessNode\"}function R(e,t){oe(Fr(e),function(e){try{t(e)}catch(e){b(e)}})}function b(e){if(console.error){console.error(e)}else if(console.log){console.log(\"ERROR: \",e)}}function ce(e,t,r){e=g(e);if(r==null){r={}}r[\"elt\"]=e;var n=Wt(t,r);if(Q.logger&&!Gt(t)){Q.logger(e,t,r)}if(r.error){b(r.error);ce(e,\"htmx:error\",{errorInfo:r})}var i=e.dispatchEvent(n);var a=$t(t);if(i&&a!==t){var o=Wt(a,n.detail);i=i&&e.dispatchEvent(o)}R(e,function(e){i=i&&(e.onEvent(t,n)!==false&&!n.defaultPrevented)});return i}var Jt=location.pathname+location.search;function Zt(){var e=re().querySelector(\"[hx-history-elt],[data-hx-history-elt]\");return e||re().body}function Kt(e,t,r,n){if(!U()){return}if(Q.config.historyCacheSize<=0){localStorage.removeItem(\"htmx-history-cache\");return}e=B(e);var i=E(localStorage.getItem(\"htmx-history-cache\"))||[];for(var a=0;a<i.length;a++){if(i[a].url===e){i.splice(a,1);break}}var o={url:e,content:t,title:r,scroll:n};ce(re().body,\"htmx:historyItemCreated\",{item:o,cache:i});i.push(o);while(i.length>Q.config.historyCacheSize){i.shift()}while(i.length>0){try{localStorage.setItem(\"htmx-history-cache\",JSON.stringify(i));break}catch(e){fe(re().body,\"htmx:historyCacheError\",{cause:e,cache:i});i.shift()}}}function Yt(e){if(!U()){return null}e=B(e);var t=E(localStorage.getItem(\"htmx-history-cache\"))||[];for(var r=0;r<t.length;r++){if(t[r].url===e){return t[r]}}return null}function Qt(e){var t=Q.config.requestClass;var r=e.cloneNode(true);oe(f(r,\".\"+t),function(e){n(e,t)});return r.innerHTML}function er(){var e=Zt();var t=Jt||location.pathname+location.search;var r;try{r=re().querySelector('[hx-history=\"false\" i],[data-hx-history=\"false\" i]')}catch(e){r=re().querySelector('[hx-history=\"false\"],[data-hx-history=\"false\"]')}if(!r){ce(re().body,\"htmx:beforeHistorySave\",{path:t,historyElt:e});Kt(t,Qt(e),re().title,window.scrollY)}if(Q.config.historyEnabled)history.replaceState({htmx:true},re().title,window.location.href)}function tr(e){if(Q.config.getCacheBusterParam){e=e.replace(/org\\.htmx\\.cache-buster=[^&]*&?/,\"\");if(G(e,\"&\")||G(e,\"?\")){e=e.slice(0,-1)}}if(Q.config.historyEnabled){history.pushState({htmx:true},\"\",e)}Jt=e}function rr(e){if(Q.config.historyEnabled)history.replaceState({htmx:true},\"\",e);Jt=e}function nr(e){oe(e,function(e){e.call()})}function ir(a){var e=new XMLHttpRequest;var o={path:a,xhr:e};ce(re().body,\"htmx:historyCacheMiss\",o);e.open(\"GET\",a,true);e.setRequestHeader(\"HX-Request\",\"true\");e.setRequestHeader(\"HX-History-Restore-Request\",\"true\");e.setRequestHeader(\"HX-Current-URL\",re().location.href);e.onload=function(){if(this.status>=200&&this.status<400){ce(re().body,\"htmx:historyCacheMissLoad\",o);var e=l(this.response);e=e.querySelector(\"[hx-history-elt],[data-hx-history-elt]\")||e;var t=Zt();var r=T(t);var n=Ve(this.response);if(n){var i=C(\"title\");if(i){i.innerHTML=n}else{window.document.title=n}}Ue(t,e,r);nr(r.tasks);Jt=a;ce(re().body,\"htmx:historyRestore\",{path:a,cacheMiss:true,serverResponse:this.response})}else{fe(re().body,\"htmx:historyCacheMissLoadError\",o)}};e.send()}function ar(e){er();e=e||location.pathname+location.search;var t=Yt(e);if(t){var r=l(t.content);var n=Zt();var i=T(n);Ue(n,r,i);nr(i.tasks);document.title=t.title;setTimeout(function(){window.scrollTo(0,t.scroll)},0);Jt=e;ce(re().body,\"htmx:historyRestore\",{path:e,item:t})}else{if(Q.config.refreshOnHistoryMiss){window.location.reload(true)}else{ir(e)}}}function or(e){var t=pe(e,\"hx-indicator\");if(t==null){t=[e]}oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)+1;e.classList[\"add\"].call(e.classList,Q.config.requestClass)});return t}function sr(e){var t=pe(e,\"hx-disabled-elt\");if(t==null){t=[]}oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)+1;e.setAttribute(\"disabled\",\"\")});return t}function lr(e,t){oe(e,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.classList[\"remove\"].call(e.classList,Q.config.requestClass)}});oe(t,function(e){var t=ae(e);t.requestCount=(t.requestCount||0)-1;if(t.requestCount===0){e.removeAttribute(\"disabled\")}})}function ur(e,t){for(var r=0;r<e.length;r++){var n=e[r];if(n.isSameNode(t)){return true}}return false}function fr(e){if(e.name===\"\"||e.name==null||e.disabled||v(e,\"fieldset[disabled]\")){return false}if(e.type===\"button\"||e.type===\"submit\"||e.tagName===\"image\"||e.tagName===\"reset\"||e.tagName===\"file\"){return false}if(e.type===\"checkbox\"||e.type===\"radio\"){return e.checked}return true}function cr(e,t,r){if(e!=null&&t!=null){var n=r[e];if(n===undefined){r[e]=t}else if(Array.isArray(n)){if(Array.isArray(t)){r[e]=n.concat(t)}else{n.push(t)}}else{if(Array.isArray(t)){r[e]=[n].concat(t)}else{r[e]=[n,t]}}}}function hr(t,r,n,e,i){if(e==null||ur(t,e)){return}else{t.push(e)}if(fr(e)){var a=ee(e,\"name\");var o=e.value;if(e.multiple&&e.tagName===\"SELECT\"){o=M(e.querySelectorAll(\"option:checked\")).map(function(e){return e.value})}if(e.files){o=M(e.files)}cr(a,o,r);if(i){vr(e,n)}}if(h(e,\"form\")){var s=e.elements;oe(s,function(e){hr(t,r,n,e,i)})}}function vr(e,t){if(e.willValidate){ce(e,\"htmx:validation:validate\");if(!e.checkValidity()){t.push({elt:e,message:e.validationMessage,validity:e.validity});ce(e,\"htmx:validation:failed\",{message:e.validationMessage,validity:e.validity})}}}function dr(e,t){var r=[];var n={};var i={};var a=[];var o=ae(e);if(o.lastButtonClicked&&!se(o.lastButtonClicked)){o.lastButtonClicked=null}var s=h(e,\"form\")&&e.noValidate!==true||te(e,\"hx-validate\")===\"true\";if(o.lastButtonClicked){s=s&&o.lastButtonClicked.formNoValidate!==true}if(t!==\"get\"){hr(r,i,a,v(e,\"form\"),s)}hr(r,n,a,e,s);if(o.lastButtonClicked||e.tagName===\"BUTTON\"||e.tagName===\"INPUT\"&&ee(e,\"type\")===\"submit\"){var l=o.lastButtonClicked||e;var u=ee(l,\"name\");cr(u,l.value,i)}var f=pe(e,\"hx-include\");oe(f,function(e){hr(r,n,a,e,s);if(!h(e,\"form\")){oe(e.querySelectorAll(rt),function(e){hr(r,n,a,e,s)})}});n=le(n,i);return{errors:a,values:n}}function gr(e,t,r){if(e!==\"\"){e+=\"&\"}if(String(r)===\"[object Object]\"){r=JSON.stringify(r)}var n=encodeURIComponent(r);e+=encodeURIComponent(t)+\"=\"+n;return e}function mr(e){var t=\"\";for(var r in e){if(e.hasOwnProperty(r)){var n=e[r];if(Array.isArray(n)){oe(n,function(e){t=gr(t,r,e)})}else{t=gr(t,r,n)}}}return t}function pr(e){var t=new FormData;for(var r in e){if(e.hasOwnProperty(r)){var n=e[r];if(Array.isArray(n)){oe(n,function(e){t.append(r,e)})}else{t.append(r,n)}}}return t}function xr(e,t,r){var n={\"HX-Request\":\"true\",\"HX-Trigger\":ee(e,\"id\"),\"HX-Trigger-Name\":ee(e,\"name\"),\"HX-Target\":te(t,\"id\"),\"HX-Current-URL\":re().location.href};Rr(e,\"hx-headers\",false,n);if(r!==undefined){n[\"HX-Prompt\"]=r}if(ae(e).boosted){n[\"HX-Boosted\"]=\"true\"}return n}function yr(t,e){var r=ne(e,\"hx-params\");if(r){if(r===\"none\"){return{}}else if(r===\"*\"){return t}else if(r.indexOf(\"not \")===0){oe(r.substr(4).split(\",\"),function(e){e=e.trim();delete t[e]});return t}else{var n={};oe(r.split(\",\"),function(e){e=e.trim();n[e]=t[e]});return n}}else{return t}}function br(e){return ee(e,\"href\")&&ee(e,\"href\").indexOf(\"#\")>=0}function wr(e,t){var r=t?t:ne(e,\"hx-swap\");var n={swapStyle:ae(e).boosted?\"innerHTML\":Q.config.defaultSwapStyle,swapDelay:Q.config.defaultSwapDelay,settleDelay:Q.config.defaultSettleDelay};if(Q.config.scrollIntoViewOnBoost&&ae(e).boosted&&!br(e)){n[\"show\"]=\"top\"}if(r){var i=D(r);if(i.length>0){for(var a=0;a<i.length;a++){var o=i[a];if(o.indexOf(\"swap:\")===0){n[\"swapDelay\"]=d(o.substr(5))}else if(o.indexOf(\"settle:\")===0){n[\"settleDelay\"]=d(o.substr(7))}else if(o.indexOf(\"transition:\")===0){n[\"transition\"]=o.substr(11)===\"true\"}else if(o.indexOf(\"ignoreTitle:\")===0){n[\"ignoreTitle\"]=o.substr(12)===\"true\"}else if(o.indexOf(\"scroll:\")===0){var s=o.substr(7);var l=s.split(\":\");var u=l.pop();var f=l.length>0?l.join(\":\"):null;n[\"scroll\"]=u;n[\"scrollTarget\"]=f}else if(o.indexOf(\"show:\")===0){var c=o.substr(5);var l=c.split(\":\");var h=l.pop();var f=l.length>0?l.join(\":\"):null;n[\"show\"]=h;n[\"showTarget\"]=f}else if(o.indexOf(\"focus-scroll:\")===0){var v=o.substr(\"focus-scroll:\".length);n[\"focusScroll\"]=v==\"true\"}else if(a==0){n[\"swapStyle\"]=o}else{b(\"Unknown modifier in hx-swap: \"+o)}}}}return n}function Sr(e){return ne(e,\"hx-encoding\")===\"multipart/form-data\"||h(e,\"form\")&&ee(e,\"enctype\")===\"multipart/form-data\"}function Er(t,r,n){var i=null;R(r,function(e){if(i==null){i=e.encodeParameters(t,n,r)}});if(i!=null){return i}else{if(Sr(r)){return pr(n)}else{return mr(n)}}}function T(e){return{tasks:[],elts:[e]}}function Cr(e,t){var r=e[0];var n=e[e.length-1];if(t.scroll){var i=null;if(t.scrollTarget){i=ue(r,t.scrollTarget)}if(t.scroll===\"top\"&&(r||i)){i=i||r;i.scrollTop=0}if(t.scroll===\"bottom\"&&(n||i)){i=i||n;i.scrollTop=i.scrollHeight}}if(t.show){var i=null;if(t.showTarget){var a=t.showTarget;if(t.showTarget===\"window\"){a=\"body\"}i=ue(r,a)}if(t.show===\"top\"&&(r||i)){i=i||r;i.scrollIntoView({block:\"start\",behavior:Q.config.scrollBehavior})}if(t.show===\"bottom\"&&(n||i)){i=i||n;i.scrollIntoView({block:\"end\",behavior:Q.config.scrollBehavior})}}}function Rr(e,t,r,n){if(n==null){n={}}if(e==null){return n}var i=te(e,t);if(i){var a=i.trim();var o=r;if(a===\"unset\"){return null}if(a.indexOf(\"javascript:\")===0){a=a.substr(11);o=true}else if(a.indexOf(\"js:\")===0){a=a.substr(3);o=true}if(a.indexOf(\"{\")!==0){a=\"{\"+a+\"}\"}var s;if(o){s=Tr(e,function(){return Function(\"return (\"+a+\")\")()},{})}else{s=E(a)}for(var l in s){if(s.hasOwnProperty(l)){if(n[l]==null){n[l]=s[l]}}}}return Rr(u(e),t,r,n)}function Tr(e,t,r){if(Q.config.allowEval){return t()}else{fe(e,\"htmx:evalDisallowedError\");return r}}function Or(e,t){return Rr(e,\"hx-vars\",true,t)}function qr(e,t){return Rr(e,\"hx-vals\",false,t)}function Hr(e){return le(Or(e),qr(e))}function Lr(t,r,n){if(n!==null){try{t.setRequestHeader(r,n)}catch(e){t.setRequestHeader(r,encodeURIComponent(n));t.setRequestHeader(r+\"-URI-AutoEncoded\",\"true\")}}}function Ar(t){if(t.responseURL&&typeof URL!==\"undefined\"){try{var e=new URL(t.responseURL);return e.pathname+e.search}catch(e){fe(re().body,\"htmx:badResponseUrl\",{url:t.responseURL})}}}function O(e,t){return t.test(e.getAllResponseHeaders())}function Nr(e,t,r){e=e.toLowerCase();if(r){if(r instanceof Element||I(r,\"String\")){return he(e,t,null,null,{targetOverride:g(r),returnPromise:true})}else{return he(e,t,g(r.source),r.event,{handler:r.handler,headers:r.headers,values:r.values,targetOverride:g(r.target),swapOverride:r.swap,select:r.select,returnPromise:true})}}else{return he(e,t,null,null,{returnPromise:true})}}function Ir(e){var t=[];while(e){t.push(e);e=e.parentElement}return t}function kr(e,t,r){var n;var i;if(typeof URL===\"function\"){i=new URL(t,document.location.href);var a=document.location.origin;n=a===i.origin}else{i=t;n=s(t,document.location.origin)}if(Q.config.selfRequestsOnly){if(!n){return false}}return ce(e,\"htmx:validateUrl\",le({url:i,sameHost:n},r))}function he(t,r,n,i,a,e){var o=null;var s=null;a=a!=null?a:{};if(a.returnPromise&&typeof Promise!==\"undefined\"){var l=new Promise(function(e,t){o=e;s=t})}if(n==null){n=re().body}var M=a.handler||Mr;var X=a.select||null;if(!se(n)){ie(o);return l}var u=a.targetOverride||ye(n);if(u==null||u==me){fe(n,\"htmx:targetError\",{target:te(n,\"hx-target\")});ie(s);return l}var f=ae(n);var c=f.lastButtonClicked;if(c){var h=ee(c,\"formaction\");if(h!=null){r=h}var v=ee(c,\"formmethod\");if(v!=null){if(v.toLowerCase()!==\"dialog\"){t=v}}}var d=ne(n,\"hx-confirm\");if(e===undefined){var D=function(e){return he(t,r,n,i,a,!!e)};var U={target:u,elt:n,path:r,verb:t,triggeringEvent:i,etc:a,issueRequest:D,question:d};if(ce(n,\"htmx:confirm\",U)===false){ie(o);return l}}var g=n;var m=ne(n,\"hx-sync\");var p=null;var x=false;if(m){var B=m.split(\":\");var F=B[0].trim();if(F===\"this\"){g=xe(n,\"hx-sync\")}else{g=ue(n,F)}m=(B[1]||\"drop\").trim();f=ae(g);if(m===\"drop\"&&f.xhr&&f.abortable!==true){ie(o);return l}else if(m===\"abort\"){if(f.xhr){ie(o);return l}else{x=true}}else if(m===\"replace\"){ce(g,\"htmx:abort\")}else if(m.indexOf(\"queue\")===0){var V=m.split(\" \");p=(V[1]||\"last\").trim()}}if(f.xhr){if(f.abortable){ce(g,\"htmx:abort\")}else{if(p==null){if(i){var y=ae(i);if(y&&y.triggerSpec&&y.triggerSpec.queue){p=y.triggerSpec.queue}}if(p==null){p=\"last\"}}if(f.queuedRequests==null){f.queuedRequests=[]}if(p===\"first\"&&f.queuedRequests.length===0){f.queuedRequests.push(function(){he(t,r,n,i,a)})}else if(p===\"all\"){f.queuedRequests.push(function(){he(t,r,n,i,a)})}else if(p===\"last\"){f.queuedRequests=[];f.queuedRequests.push(function(){he(t,r,n,i,a)})}ie(o);return l}}var b=new XMLHttpRequest;f.xhr=b;f.abortable=x;var w=function(){f.xhr=null;f.abortable=false;if(f.queuedRequests!=null&&f.queuedRequests.length>0){var e=f.queuedRequests.shift();e()}};var j=ne(n,\"hx-prompt\");if(j){var S=prompt(j);if(S===null||!ce(n,\"htmx:prompt\",{prompt:S,target:u})){ie(o);w();return l}}if(d&&!e){if(!confirm(d)){ie(o);w();return l}}var E=xr(n,u,S);if(t!==\"get\"&&!Sr(n)){E[\"Content-Type\"]=\"application/x-www-form-urlencoded\"}if(a.headers){E=le(E,a.headers)}var _=dr(n,t);var C=_.errors;var R=_.values;if(a.values){R=le(R,a.values)}var z=Hr(n);var $=le(R,z);var T=yr($,n);if(Q.config.getCacheBusterParam&&t===\"get\"){T[\"org.htmx.cache-buster\"]=ee(u,\"id\")||\"true\"}if(r==null||r===\"\"){r=re().location.href}var O=Rr(n,\"hx-request\");var W=ae(n).boosted;var q=Q.config.methodsThatUseUrlParams.indexOf(t)>=0;var H={boosted:W,useUrlParams:q,parameters:T,unfilteredParameters:$,headers:E,target:u,verb:t,errors:C,withCredentials:a.credentials||O.credentials||Q.config.withCredentials,timeout:a.timeout||O.timeout||Q.config.timeout,path:r,triggeringEvent:i};if(!ce(n,\"htmx:configRequest\",H)){ie(o);w();return l}r=H.path;t=H.verb;E=H.headers;T=H.parameters;C=H.errors;q=H.useUrlParams;if(C&&C.length>0){ce(n,\"htmx:validation:halted\",H);ie(o);w();return l}var G=r.split(\"#\");var J=G[0];var L=G[1];var A=r;if(q){A=J;var Z=Object.keys(T).length!==0;if(Z){if(A.indexOf(\"?\")<0){A+=\"?\"}else{A+=\"&\"}A+=mr(T);if(L){A+=\"#\"+L}}}if(!kr(n,A,H)){fe(n,\"htmx:invalidPath\",H);ie(s);return l}b.open(t.toUpperCase(),A,true);b.overrideMimeType(\"text/html\");b.withCredentials=H.withCredentials;b.timeout=H.timeout;if(O.noHeaders){}else{for(var N in E){if(E.hasOwnProperty(N)){var K=E[N];Lr(b,N,K)}}}var I={xhr:b,target:u,requestConfig:H,etc:a,boosted:W,select:X,pathInfo:{requestPath:r,finalRequestPath:A,anchor:L}};b.onload=function(){try{var e=Ir(n);I.pathInfo.responsePath=Ar(b);M(n,I);lr(k,P);ce(n,\"htmx:afterRequest\",I);ce(n,\"htmx:afterOnLoad\",I);if(!se(n)){var t=null;while(e.length>0&&t==null){var r=e.shift();if(se(r)){t=r}}if(t){ce(t,\"htmx:afterRequest\",I);ce(t,\"htmx:afterOnLoad\",I)}}ie(o);w()}catch(e){fe(n,\"htmx:onLoadError\",le({error:e},I));throw e}};b.onerror=function(){lr(k,P);fe(n,\"htmx:afterRequest\",I);fe(n,\"htmx:sendError\",I);ie(s);w()};b.onabort=function(){lr(k,P);fe(n,\"htmx:afterRequest\",I);fe(n,\"htmx:sendAbort\",I);ie(s);w()};b.ontimeout=function(){lr(k,P);fe(n,\"htmx:afterRequest\",I);fe(n,\"htmx:timeout\",I);ie(s);w()};if(!ce(n,\"htmx:beforeRequest\",I)){ie(o);w();return l}var k=or(n);var P=sr(n);oe([\"loadstart\",\"loadend\",\"progress\",\"abort\"],function(t){oe([b,b.upload],function(e){e.addEventListener(t,function(e){ce(n,\"htmx:xhr:\"+t,{lengthComputable:e.lengthComputable,loaded:e.loaded,total:e.total})})})});ce(n,\"htmx:beforeSend\",I);var Y=q?null:Er(b,n,T);b.send(Y);return l}function Pr(e,t){var r=t.xhr;var n=null;var i=null;if(O(r,/HX-Push:/i)){n=r.getResponseHeader(\"HX-Push\");i=\"push\"}else if(O(r,/HX-Push-Url:/i)){n=r.getResponseHeader(\"HX-Push-Url\");i=\"push\"}else if(O(r,/HX-Replace-Url:/i)){n=r.getResponseHeader(\"HX-Replace-Url\");i=\"replace\"}if(n){if(n===\"false\"){return{}}else{return{type:i,path:n}}}var a=t.pathInfo.finalRequestPath;var o=t.pathInfo.responsePath;var s=ne(e,\"hx-push-url\");var l=ne(e,\"hx-replace-url\");var u=ae(e).boosted;var f=null;var c=null;if(s){f=\"push\";c=s}else if(l){f=\"replace\";c=l}else if(u){f=\"push\";c=o||a}if(c){if(c===\"false\"){return{}}if(c===\"true\"){c=o||a}if(t.pathInfo.anchor&&c.indexOf(\"#\")===-1){c=c+\"#\"+t.pathInfo.anchor}return{type:f,path:c}}else{return{}}}function Mr(l,u){var f=u.xhr;var c=u.target;var e=u.etc;var t=u.requestConfig;var h=u.select;if(!ce(l,\"htmx:beforeOnLoad\",u))return;if(O(f,/HX-Trigger:/i)){_e(f,\"HX-Trigger\",l)}if(O(f,/HX-Location:/i)){er();var r=f.getResponseHeader(\"HX-Location\");var v;if(r.indexOf(\"{\")===0){v=E(r);r=v[\"path\"];delete v[\"path\"]}Nr(\"GET\",r,v).then(function(){tr(r)});return}var n=O(f,/HX-Refresh:/i)&&\"true\"===f.getResponseHeader(\"HX-Refresh\");if(O(f,/HX-Redirect:/i)){location.href=f.getResponseHeader(\"HX-Redirect\");n&&location.reload();return}if(n){location.reload();return}if(O(f,/HX-Retarget:/i)){if(f.getResponseHeader(\"HX-Retarget\")===\"this\"){u.target=l}else{u.target=ue(l,f.getResponseHeader(\"HX-Retarget\"))}}var d=Pr(l,u);var i=f.status>=200&&f.status<400&&f.status!==204;var g=f.response;var a=f.status>=400;var m=Q.config.ignoreTitle;var o=le({shouldSwap:i,serverResponse:g,isError:a,ignoreTitle:m},u);if(!ce(c,\"htmx:beforeSwap\",o))return;c=o.target;g=o.serverResponse;a=o.isError;m=o.ignoreTitle;u.target=c;u.failed=a;u.successful=!a;if(o.shouldSwap){if(f.status===286){at(l)}R(l,function(e){g=e.transformResponse(g,f,l)});if(d.type){er()}var s=e.swapOverride;if(O(f,/HX-Reswap:/i)){s=f.getResponseHeader(\"HX-Reswap\")}var v=wr(l,s);if(v.hasOwnProperty(\"ignoreTitle\")){m=v.ignoreTitle}c.classList.add(Q.config.swappingClass);var p=null;var x=null;var y=function(){try{var e=document.activeElement;var t={};try{t={elt:e,start:e?e.selectionStart:null,end:e?e.selectionEnd:null}}catch(e){}var r;if(h){r=h}if(O(f,/HX-Reselect:/i)){r=f.getResponseHeader(\"HX-Reselect\")}if(d.type){ce(re().body,\"htmx:beforeHistoryUpdate\",le({history:d},u));if(d.type===\"push\"){tr(d.path);ce(re().body,\"htmx:pushedIntoHistory\",{path:d.path})}else{rr(d.path);ce(re().body,\"htmx:replacedInHistory\",{path:d.path})}}var n=T(c);je(v.swapStyle,c,l,g,n,r);if(t.elt&&!se(t.elt)&&ee(t.elt,\"id\")){var i=document.getElementById(ee(t.elt,\"id\"));var a={preventScroll:v.focusScroll!==undefined?!v.focusScroll:!Q.config.defaultFocusScroll};if(i){if(t.start&&i.setSelectionRange){try{i.setSelectionRange(t.start,t.end)}catch(e){}}i.focus(a)}}c.classList.remove(Q.config.swappingClass);oe(n.elts,function(e){if(e.classList){e.classList.add(Q.config.settlingClass)}ce(e,\"htmx:afterSwap\",u)});if(O(f,/HX-Trigger-After-Swap:/i)){var o=l;if(!se(l)){o=re().body}_e(f,\"HX-Trigger-After-Swap\",o)}var s=function(){oe(n.tasks,function(e){e.call()});oe(n.elts,function(e){if(e.classList){e.classList.remove(Q.config.settlingClass)}ce(e,\"htmx:afterSettle\",u)});if(u.pathInfo.anchor){var e=re().getElementById(u.pathInfo.anchor);if(e){e.scrollIntoView({block:\"start\",behavior:\"auto\"})}}if(n.title&&!m){var t=C(\"title\");if(t){t.innerHTML=n.title}else{window.document.title=n.title}}Cr(n.elts,v);if(O(f,/HX-Trigger-After-Settle:/i)){var r=l;if(!se(l)){r=re().body}_e(f,\"HX-Trigger-After-Settle\",r)}ie(p)};if(v.settleDelay>0){setTimeout(s,v.settleDelay)}else{s()}}catch(e){fe(l,\"htmx:swapError\",u);ie(x);throw e}};var b=Q.config.globalViewTransitions;if(v.hasOwnProperty(\"transition\")){b=v.transition}if(b&&ce(l,\"htmx:beforeTransition\",u)&&typeof Promise!==\"undefined\"&&document.startViewTransition){var w=new Promise(function(e,t){p=e;x=t});var S=y;y=function(){document.startViewTransition(function(){S();return w})}}if(v.swapDelay>0){setTimeout(y,v.swapDelay)}else{y()}}if(a){fe(l,\"htmx:responseError\",le({error:\"Response Status Error Code \"+f.status+\" from \"+u.pathInfo.requestPath},u))}}var Xr={};function Dr(){return{init:function(e){return null},onEvent:function(e,t){return true},transformResponse:function(e,t,r){return e},isInlineSwap:function(e){return false},handleSwap:function(e,t,r,n){return false},encodeParameters:function(e,t,r){return null}}}function Ur(e,t){if(t.init){t.init(r)}Xr[e]=le(Dr(),t)}function Br(e){delete Xr[e]}function Fr(e,r,n){if(e==undefined){return r}if(r==undefined){r=[]}if(n==undefined){n=[]}var t=te(e,\"hx-ext\");if(t){oe(t.split(\",\"),function(e){e=e.replace(/ /g,\"\");if(e.slice(0,7)==\"ignore:\"){n.push(e.slice(7));return}if(n.indexOf(e)<0){var t=Xr[e];if(t&&r.indexOf(t)<0){r.push(t)}}})}return Fr(u(e),r,n)}var Vr=false;re().addEventListener(\"DOMContentLoaded\",function(){Vr=true});function jr(e){if(Vr||re().readyState===\"complete\"){e()}else{re().addEventListener(\"DOMContentLoaded\",e)}}function _r(){if(Q.config.includeIndicatorStyles!==false){re().head.insertAdjacentHTML(\"beforeend\",\"<style>                      .\"+Q.config.indicatorClass+\"{opacity:0}                      .\"+Q.config.requestClass+\" .\"+Q.config.indicatorClass+\"{opacity:1; transition: opacity 200ms ease-in;}                      .\"+Q.config.requestClass+\".\"+Q.config.indicatorClass+\"{opacity:1; transition: opacity 200ms ease-in;}                    </style>\")}}function zr(){var e=re().querySelector('meta[name=\"htmx-config\"]');if(e){return E(e.content)}else{return null}}function $r(){var e=zr();if(e){Q.config=le(Q.config,e)}}jr(function(){$r();_r();var e=re().body;zt(e);var t=re().querySelectorAll(\"[hx-trigger='restored'],[data-hx-trigger='restored']\");e.addEventListener(\"htmx:abort\",function(e){var t=e.target;var r=ae(t);if(r&&r.xhr){r.xhr.abort()}});const r=window.onpopstate?window.onpopstate.bind(window):null;window.onpopstate=function(e){if(e.state&&e.state.htmx){ar();oe(t,function(e){ce(e,\"htmx:restored\",{document:re(),triggerEvent:ce})})}else{if(r){r(e)}}};setTimeout(function(){ce(e,\"htmx:load\",{});e=null},0)});return Q}()});\n"
  },
  {
    "path": "src/staticfiles/index.330ffa9733ef.html",
    "content": "{% include \"_base.html\" %}\n{% block style %}\n{% endblock style %}\n{% block content %}\n    <header>\n        <div>\n            <div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between min-h-screen\">\n                <div class=\"w-full px-8 py-12 lg:py-8  md:w-1/2\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>What</h2>\n                        <p>\n                            This is a collection of components for <a href=\"https://www.djangoproject.com/\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>. They are designed to be copy-pasted into your project and customized to your needs.\n                        </p>\n                        <p>\n                            They feature minimal styling and barebones functionality. They are meant to be a starting point for your own components or a reference.\n                        </p>\n                        <h3>List of components</h3>\n                        <p>These are the components we've created so far:</p>\n                        <ul>\n                            {% for component in components %}\n                                <li>\n                                    <a href=\"{{ component.url }}\">{{ component.name }}</a>\n                                </li>\n                            {% endfor %}\n                        </ul>\n                        <h3>Contributing</h3>\n                        <p>\n                            We'd love to see your components here! If you have a component you'd like to share, please go to <a href=\"https://github.com/iwanalabs/django-htmx-components\">our GitHub repository</a> and open a pull request.\n                        </p>\n                    </article>\n                </div>\n                <div class=\"w-full px-8 py-12 lg:py-8 lg:w-1/2 bg-slate-100\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>How</h2>\n                        <p>\n                            It's easy! Just copy and paste these components into your project. They serve as a starting point for your own components or as a reference.\n                        </p>\n                        <p>To use them, you first need to install some dependencies.  Here's how to do it:</p>\n                        <ol>\n                            <li>\n                                Install <a href=\"https://www.djangoproject.com/\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>.\n                            </li>\n                            <li>\n                                Install and set up <a href=\"https://github.com/EmilStenstrom/django-components/\"\n    rel=\"noopener noreferrer\"\n    target=\"_blank\">django-components</a>.\n                            </li>\n                            <li>\n                                Create a <code>urls.py</code> file in <code>components/</code> and add the following code:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path \n                                    urlpatterns = []\n                                </code></pre>\n                                Then import this file in your project's <code>urls.py</code> file:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path, include\n                                    urlpatterns = [\n                                        path('components/', include('components.urls')),\n                                    ]\n                                </code></pre>\n                                This step simplifies adding URL patterns for your components and keeps them separate from your project's URL patterns.\n                                Then, adding a single-file component to your <code>components/urls.py</code> file is as easy as:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path\n                                    from components.mycomponent import MyComponent \n                                    urlpatterns = [\n                                        path('mycomponent/', MyComponent.as_view()),\n                                    ]\n                                </code></pre>\n                                It will handle requests to <code>/components/mycomponent/</code> and render the component.\n                            </li>\n                            <li>That's all! You can now use the component in your templates. Check out the examples to get started.</li>\n                        </ol>\n                    </article>\n                </div>\n            </div>\n        </div>\n    </header>\n{% endblock content %}\n"
  },
  {
    "path": "src/staticfiles/index.3b13d7de4566.html",
    "content": "{% include \"_base.html\" %}\n{% block style %}\n{% endblock style %}\n{% block content %}\n    <header>\n        <div>\n            <div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between min-h-screen\">\n                <div class=\"w-full px-8 py-12 lg:py-8  md:w-1/2\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>What</h2>\n                        <p>\n                            This is a collection of components for <a href=\"https://www.djangoproject.com/\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>. They are designed to be copy-pasted into your project and customized to your needs.\n                        </p>\n                        <p>\n                            They feature minimal styling and barebones functionality. They are meant to be a starting point for your own components or a reference.\n                        </p>\n                        <h3>List of components</h3>\n                        <p>These are the components we've created so far:</p>\n                        <ul>\n                            {% for component in components %}\n                                <li>\n                                    <a href=\"{{ component.url }}\">{{ component.name }}</a>\n                                </li>\n                            {% endfor %}\n                        </ul>\n                        <h3>Contributing</h3>\n                        <p>\n                            We'd love to see your components here! If you have a component you'd like to share, please go to <a href=\"https://github.com/iwanalabs/django-htmx-components\">our GitHub repository</a> and open a pull request.\n                        </p>\n                    </article>\n                </div>\n                <div class=\"w-full px-8 py-12 lg:py-8 lg:w-1/2 bg-slate-100\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>How</h2>\n                        <p>\n                            It's easy! Just copy and paste these components into your project. They serve as a starting point for your own components or as a reference.\n                        </p>\n                        <p>To use them, you first need to install some dependencies.  Here's how to do it:</p>\n                        <ol>\n                            <li>\n                                Install <a href=\"https://www.djangoproject.com/\"\n    target=\"_blank\"\n    rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>.\n                            </li>\n                            <li>\n                                Install and set up <a href=\"https://github.com/EmilStenstrom/django-components/\"\n    rel=\"noopener noreferrer\"\n    target=\"_blank\">django-components</a>.\n                            </li>\n                            <li>\n                                Create a <code>urls.py</code> file in <code>components/</code> and add the following code:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path \n                                    urlpatterns = []\n                                </code></pre>\n                                Then import this file in your project's <code>urls.py</code> file:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path, include\n                                    urlpatterns = [\n                                        path('components/', include('components.urls')),\n                                    ]\n                                </code></pre>\n                                This step simplifies adding URL patterns for your components and keeps them separate from your project's URL patterns.\n                                Then, adding a single-file component to your <code>components/urls.py</code> file is as easy as:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path\n                                    from components.mycomponent import MyComponent \n                                    urlpatterns = [\n                                        path('mycomponent/', MyComponent.as_view()),\n                                    ]\n                                </code></pre>\n                                It will handle requests to <code>/components/mycomponent/</code> and render the component.\n                            </li>\n                            <li>That's all! You can now use the component in your templates. Check out the examples to get started.</li>\n                        </ol>\n                    </article>\n                </div>\n            </div>\n        </div>\n    </header>\n{% endblock content %}\n"
  },
  {
    "path": "src/staticfiles/index.c8db3aff394f.html",
    "content": "{% include \"_base.html\" %}\n{% block content %}\n    <header hx-target=\"this\" id=\"header\">\n        <div>\n            <div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between min-h-screen\">\n                <div class=\"w-full px-8 py-12 lg:py-8  md:w-1/2\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>What</h2>\n                        {# djlint:off #}\n                        <p>\n                            This is a collection of components for <a href=\"https://www.djangoproject.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>. They are designed to be copy-pasted into your project and customized to your needs.\n                        </p>\n                        {# djlint:on #}\n                        <p>\n                            They feature minimal styling and barebones functionality. They are meant to be a starting point for your own components or a reference.\n                        </p>\n                        <h3>List of components</h3>\n                        <p>These are the components we've created so far:</p>\n                        <ul preload>\n                            {% for component in components %}\n                                <li>\n                                    <a href=\"{{ component.url }}\"\n                                       hx-get=\"{{ component.url }}\"\n                                       hx-push-url=\"true\">{{ component.name }}</a>\n                                </li>\n                            {% endfor %}\n                        </ul>\n                        <h3>Contributing</h3>\n                        <p>\n                            We'd love to see your components here! If you have a component you'd like to share, please go to <a href=\"https://github.com/iwanalabs/django-htmx-components\">our GitHub repository</a> and open a pull request.\n                        </p>\n                    </article>\n                </div>\n                <div class=\"w-full px-8 py-12 lg:py-8 lg:w-1/2 bg-slate-100\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>How</h2>\n                        <p>\n                            It's easy! Just copy and paste these components into your project. They serve as a starting point for your own components or as a reference.\n                        </p>\n                        <p>To use them, you first need to install some dependencies.  Here's how to do it:</p>\n                        <ol>\n                            {# djlint:off #}\n                            <li>\n                                Install <a href=\"https://www.djangoproject.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>.\n                            </li>\n                            <li>\n                                Install and set up <a href=\"https://github.com/EmilStenstrom/django-components/\" rel=\"noopener noreferrer\" target=\"_blank\">django-components</a>.\n                            </li>\n                            {# djlint:on #}\n                            <li>\n                                Create a <code>urls.py</code> file in <code>components/</code> and add the following code:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path \n                                    urlpatterns = []\n                                </code></pre>\n                                Then import this file in your project's <code>urls.py</code> file:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path, include\n                                    urlpatterns = [\n                                        path('components/', include('components.urls')),\n                                    ]\n                                </code></pre>\n                                This step simplifies adding URL patterns for your components and keeps them separate from your project's URL patterns.\n                                Then, adding a single-file component to your <code>components/urls.py</code> file is as easy as:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path\n                                    from components.mycomponent import MyComponent \n                                    urlpatterns = [\n                                        path('mycomponent/', MyComponent.as_view()),\n                                    ]\n                                </code></pre>\n                                It will handle requests to <code>/components/mycomponent/</code> and render the component.\n                            </li>\n                            <li>That's all! You can now use the component in your templates. Check out the examples to get started.</li>\n                        </ol>\n                    </article>\n                </div>\n            </div>\n        </div>\n    </header>\n{% endblock content %}\n"
  },
  {
    "path": "src/staticfiles/index.html",
    "content": "{% include \"_base.html\" %}\n{% block content %}\n    <header hx-target=\"this\" id=\"header\">\n        <div>\n            <div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between min-h-screen\">\n                <div class=\"w-full px-8 py-12 lg:py-8  md:w-1/2\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>What</h2>\n                        {# djlint:off #}\n                        <p>\n                            This is a collection of components for <a href=\"https://www.djangoproject.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>. They are designed to be copy-pasted into your project and customized to your needs.\n                        </p>\n                        {# djlint:on #}\n                        <p>\n                            They feature minimal styling and barebones functionality. They are meant to be a starting point for your own components or a reference.\n                        </p>\n                        <h3>List of components</h3>\n                        <p>These are the components we've created so far:</p>\n                        <ul preload>\n                            {% for component in components %}\n                                <li>\n                                    <a href=\"{{ component.url }}\"\n                                       hx-get=\"{{ component.url }}\"\n                                       hx-push-url=\"true\">{{ component.name }}</a>\n                                </li>\n                            {% endfor %}\n                        </ul>\n                        <h3>Contributing</h3>\n                        <p>\n                            We'd love to see your components here! If you have a component you'd like to share, please go to <a href=\"https://github.com/iwanalabs/django-htmx-components\">our GitHub repository</a> and open a pull request.\n                        </p>\n                    </article>\n                </div>\n                <div class=\"w-full px-8 py-12 lg:py-8 lg:w-1/2 bg-slate-100\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>How</h2>\n                        <p>\n                            It's easy! Just copy and paste these components into your project. They serve as a starting point for your own components or as a reference.\n                        </p>\n                        <p>To use them, you first need to install some dependencies.  Here's how to do it:</p>\n                        <ol>\n                            {# djlint:off #}\n                            <li>\n                                Install <a href=\"https://www.djangoproject.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>.\n                            </li>\n                            <li>\n                                Install and set up <a href=\"https://github.com/EmilStenstrom/django-components/\" rel=\"noopener noreferrer\" target=\"_blank\">django-components</a>.\n                            </li>\n                            {# djlint:on #}\n                            <li>\n                                Create a <code>urls.py</code> file in <code>components/</code> and add the following code:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path \n                                    urlpatterns = []\n                                </code></pre>\n                                Then import this file in your project's <code>urls.py</code> file:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path, include\n                                    urlpatterns = [\n                                        path('components/', include('components.urls')),\n                                    ]\n                                </code></pre>\n                                This step simplifies adding URL patterns for your components and keeps them separate from your project's URL patterns.\n                                Then, adding a single-file component to your <code>components/urls.py</code> file is as easy as:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path\n                                    from components.mycomponent import MyComponent \n                                    urlpatterns = [\n                                        path('mycomponent/', MyComponent.as_view()),\n                                    ]\n                                </code></pre>\n                                It will handle requests to <code>/components/mycomponent/</code> and render the component.\n                            </li>\n                            <li>That's all! You can now use the component in your templates. Check out the examples to get started.</li>\n                        </ol>\n                    </article>\n                </div>\n            </div>\n        </div>\n    </header>\n{% endblock content %}\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/table.624e6ab16a01.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_infinite_scroll\")\nclass TableInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% load static %}\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_infinite_scroll\" page_obj=page_obj only %}\n            </tbody>\n        </table>\n        <img id=\"busy-indicator\"\n             width=\"24\"\n             height=\"24\"\n             src=\"{% static 'spinner.svg' %}\" class=\"mt-2\"/>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 5)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/table.c757f118a80a.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_infinite_scroll\")\nclass TableInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% load static %}\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_infinite_scroll\" page_obj=page_obj only %}{% endcomponent %}\n            </tbody>\n        </table>\n        <img id=\"busy-indicator\"\n             width=\"24\"\n             height=\"24\"\n             src=\"{% static 'spinner.svg' %}\" class=\"mt-2\"/>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 5)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/table.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"table_infinite_scroll\")\nclass TableInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% load static %}\n        <table class=\"table\">\n            <thead class=\"thead\">\n                <tr>\n                    <th></th>\n                    <th class=\"td\">Name</th>\n                    <th class=\"td\">Email</th>\n                    <th class=\"td\">Status</th>\n                </tr>\n            </thead>\n            <tbody id=\"tbody\">\n                {% component \"tbody_infinite_scroll\" page_obj=page_obj only %}{% endcomponent %}\n            </tbody>\n        </table>\n        <img id=\"busy-indicator\"\n             width=\"24\"\n             height=\"24\"\n             src=\"{% static 'spinner.svg' %}\" class=\"mt-2\"/>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 5)\n        page_obj = paginator.get_page(1)\n        return {\"page_obj\": page_obj}\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/tbody.02a65ee11b28.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_infinite_scroll\")\nclass TBodyInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"\n            {% if forloop.last and page_obj.has_next %} \n                hx-get=\"{% url 'tbody_infinite_scroll' page=page_obj.next_page_number %}\"\n                hx-trigger=\"revealed\"\n                hx-swap=\"afterend\"\n            {% endif %}\n            > \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 10)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/tbody.889ea8380c38.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_infinite_scroll\")\nclass TBodyInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"\n            {% if forloop.last and page_obj.has_next %} \n                hx-get=\"{% url 'tbody_infinite_scroll' page=page_obj.next_page_number %}\"\n                hx-trigger=\"revealed\"\n                hx-swap=\"afterend\"\n                hx-target=\"this\"\n            {% endif %}\n            > \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 10)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/tbody.bbb8483b7598.py",
    "content": "import time\nfrom django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_infinite_scroll\")\nclass TBodyInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"\n            {% if forloop.last and page_obj.has_next %} \n                hx-get=\"{% url 'tbody_infinite_scroll' page=page_obj.next_page_number %}\"\n                hx-trigger=\"revealed\"\n                hx-swap=\"afterend\"\n            {% endif %}\n            > \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 10)\n        time.sleep(1)  # Simulate a slow response\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/tbody.py",
    "content": "from django.core.paginator import Paginator\nfrom django_components import component\n\nfrom app.models import Contact\n\n\n@component.register(\"tbody_infinite_scroll\")\nclass TBodyInfiniteScrollComponent(component.Component):\n    template = \"\"\"\n        {% for contact in page_obj %}\n            <tr class=\"tr\"\n            {% if forloop.last and page_obj.has_next %} \n                hx-get=\"{% url 'tbody_infinite_scroll' page=page_obj.next_page_number %}\"\n                hx-trigger=\"revealed\"\n                hx-swap=\"afterend\"\n                hx-target=\"this\"\n            {% endif %}\n            > \n                <td class=\"td\">{{ contact.id }}</td>\n                <td class=\"td\">{{ contact.first_name }} {{ contact.last_name }}</td>\n                <td class=\"td\">{{ contact.email }}</td>\n                <td class=\"td\">{{ contact.status }}</td>\n            </tr>\n        {% endfor %}\n    \"\"\"\n\n    def get_context_data(self, page_obj, **kwargs):\n        return {\"page_obj\": page_obj}\n\n    def get(self, request, page, **kwargs):\n        paginator = Paginator(Contact.objects.order_by(\"id\"), 10)\n        page_obj = paginator.get_page(page)\n        context = {\"page_obj\": page_obj}\n        return self.render_to_response(context)\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/urls.2119b85fae27.py",
    "content": "from django.urls import path\n\nfrom components.infinite_scroll.tbody import TBodyInfiniteScrollComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<int:page>\",\n        TBodyInfiniteScrollComponent.as_view(),\n        name=\"tbody_infinite_scroll\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll/urls.py",
    "content": "from django.urls import path\n\nfrom components.infinite_scroll.tbody import TBodyInfiniteScrollComponent\n\nurlpatterns = [\n    path(\n        \"contacts/<int:page>\",\n        TBodyInfiniteScrollComponent.as_view(),\n        name=\"tbody_infinite_scroll\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll.2911a76df6e3.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_infinite_scroll\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll.557f08f53b4d.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_infinite_scroll\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/infinite_scroll.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_infinite_scroll\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/inline_validation/form.17ae9d61f48e.py",
    "content": "from django_components import component\n\nfrom components.inline_validation.forms import InlineValidationForm\n\n\n@component.register(\"form_inline_validation\")\nclass FormInlineValidationComponent(component.Component):\n    template = \"\"\"\n        <form id=\"inline-validation-form\" class=\"form\">\n            <div class=\"mb-5\">\n                {{ form.name }}\n                {{ form.name.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.email }}\n                {{ form.email.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.age }}\n                {{ form.age.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.message }}\n                {{ form.message.type.errors }}\n            </div>\n        </form>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        form = InlineValidationForm()\n        return {\"form\": form}\n\n    def post(self, request, *args, **kwargs):\n        form = InlineValidationForm(request.POST)\n        return self.render_to_response({\"form\": form})\n"
  },
  {
    "path": "src/staticfiles/inline_validation/form.py",
    "content": "from django_components import component\n\nfrom components.inline_validation.forms import InlineValidationForm\n\n\n@component.register(\"form_inline_validation\")\nclass FormInlineValidationComponent(component.Component):\n    template = \"\"\"\n        <form id=\"inline-validation-form\" class=\"form\">\n            <div class=\"mb-5\">\n                {{ form.name }}\n                {{ form.name.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.email }}\n                {{ form.email.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.age }}\n                {{ form.age.type.errors }}\n            </div>\n            <div class=\"mb-5\">\n                {{ form.message }}\n                {{ form.message.type.errors }}\n            </div>\n        </form>\n    \"\"\"\n\n    def get_context_data(self, **kwargs):\n        form = InlineValidationForm()\n        return {\"form\": form}\n\n    def post(self, request, *args, **kwargs):\n        form = InlineValidationForm(request.POST)\n        return self.render_to_response({\"form\": form})\n"
  },
  {
    "path": "src/staticfiles/inline_validation/forms.fdf8f5825f8b.py",
    "content": "from django import forms\nfrom django.urls import reverse_lazy\nfrom components.inline_validation.input import InputInlineValidationComponent\n\n\ndef htmx_inline_validated_input_widget_factory(base_widget_class):\n    class HtmxInlineValidatedInputWidget(base_widget_class):\n        def __init__(self, attrs=None, form=None, field_name=None, form_url=None):\n            super().__init__(attrs)\n            self.form = form\n            self.field_name = field_name\n            self.form_url = form_url\n\n        def get_context(self, name, value, attrs):\n            context = super().get_context(name, value, attrs)\n            context[\"form_url\"] = self.form_url\n\n            if self.form and self.field_name:\n                context[\"label\"] = self.form.fields[self.field_name].label\n                context[\"errors\"] = self.form.errors.get(self.field_name, [])\n            return context\n\n        def render(self, name, value, attrs=None, renderer=None):\n            context = self.get_context(name, value, attrs)\n            return InputInlineValidationComponent().render(context)\n\n    return HtmxInlineValidatedInputWidget\n\n\nclass HtmxFormBase(forms.Form):\n    form_url = \"\"\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.label_suffix = \"\"\n\n        for name, field in self.fields.items():\n            if isinstance(field.widget, (forms.Select, forms.FileInput)):\n                continue\n\n            custom_widget = htmx_inline_validated_input_widget_factory(\n                type(field.widget)\n            )\n            field.widget = custom_widget(\n                form=self,\n                field_name=name,\n                attrs=field.widget.attrs,\n                form_url=self.form_url,\n            )\n\n\nHtmxValidatedTextInput = htmx_inline_validated_input_widget_factory(forms.TextInput)\nHtmxValidatedNumberInput = htmx_inline_validated_input_widget_factory(forms.NumberInput)\nHtmxValidatedEmailInput = htmx_inline_validated_input_widget_factory(forms.EmailInput)\nHtmxValidatedTextarea = htmx_inline_validated_input_widget_factory(forms.Textarea)\n\n\nclass InlineValidationForm(HtmxFormBase):\n    form_url = reverse_lazy(\"form_inline_validation\")\n    name = forms.CharField(\n        label=\"Name\",\n        max_length=100,\n        widget=HtmxValidatedTextInput(\n            attrs={\"placeholder\": \"John Doe\"},\n        ),\n    )\n    email = forms.EmailField(\n        label=\"Email\",\n        widget=HtmxValidatedEmailInput(attrs={\"placeholder\": \"john@doe.com\"}),\n    )\n    age = forms.IntegerField(\n        label=\"Age\",\n        min_value=13,\n        max_value=120,\n        widget=HtmxValidatedNumberInput(\n            attrs={\"placeholder\": \"e.g., 25\"},\n        ),\n    )\n    message = forms.CharField(\n        label=\"Message\",\n        max_length=500,\n        widget=HtmxValidatedTextarea(\n            attrs={\"placeholder\": \"Your message here...\", \"rows\": 3},\n        ),\n    )\n"
  },
  {
    "path": "src/staticfiles/inline_validation/forms.py",
    "content": "from django import forms\nfrom django.urls import reverse_lazy\nfrom components.inline_validation.input import InputInlineValidationComponent\n\n\ndef htmx_inline_validated_input_widget_factory(base_widget_class):\n    class HtmxInlineValidatedInputWidget(base_widget_class):\n        def __init__(self, attrs=None, form=None, field_name=None, form_url=None):\n            super().__init__(attrs)\n            self.form = form\n            self.field_name = field_name\n            self.form_url = form_url\n\n        def get_context(self, name, value, attrs):\n            context = super().get_context(name, value, attrs)\n            context[\"form_url\"] = self.form_url\n\n            if self.form and self.field_name:\n                context[\"label\"] = self.form.fields[self.field_name].label\n                context[\"errors\"] = self.form.errors.get(self.field_name, [])\n            return context\n\n        def render(self, name, value, attrs=None, renderer=None):\n            context = self.get_context(name, value, attrs)\n            return InputInlineValidationComponent().render(context)\n\n    return HtmxInlineValidatedInputWidget\n\n\nclass HtmxFormBase(forms.Form):\n    form_url = \"\"\n\n    def __init__(self, *args, **kwargs):\n        super().__init__(*args, **kwargs)\n        self.label_suffix = \"\"\n\n        for name, field in self.fields.items():\n            if isinstance(field.widget, (forms.Select, forms.FileInput)):\n                continue\n\n            custom_widget = htmx_inline_validated_input_widget_factory(\n                type(field.widget)\n            )\n            field.widget = custom_widget(\n                form=self,\n                field_name=name,\n                attrs=field.widget.attrs,\n                form_url=self.form_url,\n            )\n\n\nHtmxValidatedTextInput = htmx_inline_validated_input_widget_factory(forms.TextInput)\nHtmxValidatedNumberInput = htmx_inline_validated_input_widget_factory(forms.NumberInput)\nHtmxValidatedEmailInput = htmx_inline_validated_input_widget_factory(forms.EmailInput)\nHtmxValidatedTextarea = htmx_inline_validated_input_widget_factory(forms.Textarea)\n\n\nclass InlineValidationForm(HtmxFormBase):\n    form_url = reverse_lazy(\"form_inline_validation\")\n    name = forms.CharField(\n        label=\"Name\",\n        max_length=100,\n        widget=HtmxValidatedTextInput(\n            attrs={\"placeholder\": \"John Doe\"},\n        ),\n    )\n    email = forms.EmailField(\n        label=\"Email\",\n        widget=HtmxValidatedEmailInput(attrs={\"placeholder\": \"john@doe.com\"}),\n    )\n    age = forms.IntegerField(\n        label=\"Age\",\n        min_value=13,\n        max_value=120,\n        widget=HtmxValidatedNumberInput(\n            attrs={\"placeholder\": \"e.g., 25\"},\n        ),\n    )\n    message = forms.CharField(\n        label=\"Message\",\n        max_length=500,\n        widget=HtmxValidatedTextarea(\n            attrs={\"placeholder\": \"Your message here...\", \"rows\": 3},\n        ),\n    )\n"
  },
  {
    "path": "src/staticfiles/inline_validation/input.1fc6025d3995.py",
    "content": "from django_components import component\n\n\n@component.register(\"input_inline_validation\")\nclass InputInlineValidationComponent(component.Component):\n    template = \"\"\"\n        <div id=\"{{ widget.attrs.id }}-field\"\n            hx-select=\"#{{ widget.attrs.id }}-field\"\n            hx-post=\"{{ form_url }}\"\n            hx-trigger=\"blur from:#{{ widget.attrs.id }}\"\n            hx-target=\"this\"\n            hx-swap=\"outerHTML\">\n            {% if label %}\n                <label class=\"label {% if errors %} text-red-700 dark:text-red-500 {% endif %}\" for=\"{{ widget.attrs.id }}\">{{ label }}</label>\n            {% endif %}\n            {% if not widget.type %}\n                <textarea class=\"{% if errors %} input-error {% else %} input {% endif %}\" name=\"{{ widget.name }}\"\n                        {% for name, value in widget.attrs.items %}\n                            {% if value is not False %}\n                            {{ name }}\n                            {% if value is not True %}=\"{{ value|stringformat:'s' }}\"{% endif %}\n                            {% endif %}\n                        {% endfor %}>{% if widget.value != None %}{{ widget.value|stringformat:'s' }}{% endif %}</textarea>\n            {% else %}\n                <input class=\"{% if errors %} input-error {% else %} input {% endif %}\" type=\"{{ widget.type }}\"\n                    name=\"{{ widget.name }}\"\n                    {% if widget.value != None %}value=\"{{ widget.value|stringformat:'s' }}\"{% endif %}\n                    {% for name, value in widget.attrs.items %}\n                            {% if value is not False %}\n                            {{ name }}\n                            {% if value is not True %}=\"{{ value|stringformat:'s' }}\"{% endif %}\n                            {% endif %}\n                    {% endfor %} />\n            {% endif %}\n            {% if errors %}\n                <ul> \n                    {% for error in errors %}<li class=\"text-sm text-red-600 dark:text-red-500\">{{ error }}</li>{% endfor %}\n                </ul>\n            {% endif %}\n        </div>\n    \"\"\"\n"
  },
  {
    "path": "src/staticfiles/inline_validation/input.py",
    "content": "from django_components import component\n\n\n@component.register(\"input_inline_validation\")\nclass InputInlineValidationComponent(component.Component):\n    template = \"\"\"\n        <div id=\"{{ widget.attrs.id }}-field\"\n            hx-select=\"#{{ widget.attrs.id }}-field\"\n            hx-post=\"{{ form_url }}\"\n            hx-trigger=\"blur from:#{{ widget.attrs.id }}\"\n            hx-target=\"this\"\n            hx-swap=\"outerHTML\">\n            {% if label %}\n                <label class=\"label {% if errors %} text-red-700 dark:text-red-500 {% endif %}\" for=\"{{ widget.attrs.id }}\">{{ label }}</label>\n            {% endif %}\n            {% if not widget.type %}\n                <textarea class=\"{% if errors %} input-error {% else %} input {% endif %}\" name=\"{{ widget.name }}\"\n                        {% for name, value in widget.attrs.items %}\n                            {% if value is not False %}\n                            {{ name }}\n                            {% if value is not True %}=\"{{ value|stringformat:'s' }}\"{% endif %}\n                            {% endif %}\n                        {% endfor %}>{% if widget.value != None %}{{ widget.value|stringformat:'s' }}{% endif %}</textarea>\n            {% else %}\n                <input class=\"{% if errors %} input-error {% else %} input {% endif %}\" type=\"{{ widget.type }}\"\n                    name=\"{{ widget.name }}\"\n                    {% if widget.value != None %}value=\"{{ widget.value|stringformat:'s' }}\"{% endif %}\n                    {% for name, value in widget.attrs.items %}\n                            {% if value is not False %}\n                            {{ name }}\n                            {% if value is not True %}=\"{{ value|stringformat:'s' }}\"{% endif %}\n                            {% endif %}\n                    {% endfor %} />\n            {% endif %}\n            {% if errors %}\n                <ul> \n                    {% for error in errors %}<li class=\"text-sm text-red-600 dark:text-red-500\">{{ error }}</li>{% endfor %}\n                </ul>\n            {% endif %}\n        </div>\n    \"\"\"\n"
  },
  {
    "path": "src/staticfiles/inline_validation/urls.1c76c74c8dfb.py",
    "content": "from django.urls import path\n\nfrom components.inline_validation.form import FormInlineValidationComponent\n\nurlpatterns = [\n    path(\n        \"\",\n        FormInlineValidationComponent.as_view(),\n        name=\"form_inline_validation\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/inline_validation/urls.py",
    "content": "from django.urls import path\n\nfrom components.inline_validation.form import FormInlineValidationComponent\n\nurlpatterns = [\n    path(\n        \"\",\n        FormInlineValidationComponent.as_view(),\n        name=\"form_inline_validation\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/inline_validation.17ef819302a3.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"form_inline_validation\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/inline_validation.180c06390895.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"form_inline_validation\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/inline_validation.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"form_inline_validation\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/preload.738a4657614c.js",
    "content": "// This adds the \"preload\" extension to htmx.  By default, this will\n// preload the targets of any tags with `href` or `hx-get` attributes\n// if they also have a `preload` attribute as well.  See documentation\n// for more details\nhtmx.defineExtension(\"preload\", {\n  onEvent: function (name, event) {\n    // Only take actions on \"htmx:afterProcessNode\"\n    if (name !== \"htmx:afterProcessNode\") {\n      return;\n    }\n\n    // SOME HELPER FUNCTIONS WE'LL NEED ALONG THE WAY\n\n    // attr gets the closest non-empty value from the attribute.\n    var attr = function (node, property) {\n      if (node == undefined) {\n        return undefined;\n      }\n      return (\n        node.getAttribute(property) ||\n        node.getAttribute(\"data-\" + property) ||\n        attr(node.parentElement, property)\n      );\n    };\n\n    // load handles the actual HTTP fetch, and uses htmx.ajax in cases where we're\n    // preloading an htmx resource (this sends the same HTTP headers as a regular htmx request)\n    var load = function (node) {\n      // Called after a successful AJAX request, to mark the\n      // content as loaded (and prevent additional AJAX calls.)\n      var done = function (html) {\n        if (!node.preloadAlways) {\n          node.preloadState = \"DONE\";\n        }\n\n        if (attr(node, \"preload-images\") == \"true\") {\n          document.createElement(\"div\").innerHTML = html; // create and populate a node to load linked resources, too.\n        }\n      };\n\n      return function () {\n        // If this value has already been loaded, then do not try again.\n        if (node.preloadState !== \"READY\") {\n          return;\n        }\n\n        // Special handling for HX-GET - use built-in htmx.ajax function\n        // so that headers match other htmx requests, then set\n        // node.preloadState = TRUE so that requests are not duplicated\n        // in the future\n        var hxGet =\n          node.getAttribute(\"hx-get\") || node.getAttribute(\"data-hx-get\");\n        if (hxGet) {\n          htmx.ajax(\"GET\", hxGet, {\n            source: node,\n            handler: function (elt, info) {\n              done(info.xhr.responseText);\n            },\n          });\n          return;\n        }\n\n        // Otherwise, perform a standard xhr request, then set\n        // node.preloadState = TRUE so that requests are not duplicated\n        // in the future.\n        if (node.getAttribute(\"href\")) {\n          var r = new XMLHttpRequest();\n          r.open(\"GET\", node.getAttribute(\"href\"));\n          r.onload = function () {\n            done(r.responseText);\n          };\n          r.send();\n          return;\n        }\n      };\n    };\n\n    // This function processes a specific node and sets up event handlers.\n    // We'll search for nodes and use it below.\n    var init = function (node) {\n      // If this node DOES NOT include a \"GET\" transaction, then there's nothing to do here.\n      if (\n        node.getAttribute(\"href\") +\n          node.getAttribute(\"hx-get\") +\n          node.getAttribute(\"data-hx-get\") ==\n        \"\"\n      ) {\n        return;\n      }\n\n      // Guarantee that we only initialize each node once.\n      if (node.preloadState !== undefined) {\n        return;\n      }\n\n      // Get event name from config.\n      var on = attr(node, \"preload\") || \"mousedown\";\n      const always = on.indexOf(\"always\") !== -1;\n      if (always) {\n        on = on.replace(\"always\", \"\").trim();\n      }\n\n      // FALL THROUGH to here means we need to add an EventListener\n\n      // Apply the listener to the node\n      node.addEventListener(on, function (evt) {\n        if (node.preloadState === \"PAUSE\") {\n          // Only add one event listener\n          node.preloadState = \"READY\"; // Required for the `load` function to trigger\n\n          // Special handling for \"mouseover\" events.  Wait 100ms before triggering load.\n          if (on === \"mouseover\") {\n            window.setTimeout(load(node), 100);\n          } else {\n            load(node)(); // all other events trigger immediately.\n          }\n        }\n      });\n\n      // Special handling for certain built-in event handlers\n      switch (on) {\n        case \"mouseover\":\n          // Mirror `touchstart` events (fires immediately)\n          node.addEventListener(\"touchstart\", load(node));\n\n          // WHhen the mouse leaves, immediately disable the preload\n          node.addEventListener(\"mouseout\", function (evt) {\n            if (evt.target === node && node.preloadState === \"READY\") {\n              node.preloadState = \"PAUSE\";\n            }\n          });\n          break;\n\n        case \"mousedown\":\n          // Mirror `touchstart` events (fires immediately)\n          node.addEventListener(\"touchstart\", load(node));\n          break;\n      }\n\n      // Mark the node as ready to run.\n      node.preloadState = \"PAUSE\";\n      node.preloadAlways = always;\n      htmx.trigger(node, \"preload:init\"); // This event can be used to load content immediately.\n    };\n\n    // Search for all child nodes that have a \"preload\" attribute\n    event.target.querySelectorAll(\"[preload]\").forEach(function (node) {\n      // Initialize the node with the \"preload\" attribute\n      init(node);\n\n      // Initialize all child elements that are anchors or have `hx-get` (use with care)\n      node.querySelectorAll(\"a,[hx-get],[data-hx-get]\").forEach(init);\n    });\n  },\n});\n"
  },
  {
    "path": "src/staticfiles/preload.js",
    "content": "// This adds the \"preload\" extension to htmx.  By default, this will\n// preload the targets of any tags with `href` or `hx-get` attributes\n// if they also have a `preload` attribute as well.  See documentation\n// for more details\nhtmx.defineExtension(\"preload\", {\n  onEvent: function (name, event) {\n    // Only take actions on \"htmx:afterProcessNode\"\n    if (name !== \"htmx:afterProcessNode\") {\n      return;\n    }\n\n    // SOME HELPER FUNCTIONS WE'LL NEED ALONG THE WAY\n\n    // attr gets the closest non-empty value from the attribute.\n    var attr = function (node, property) {\n      if (node == undefined) {\n        return undefined;\n      }\n      return (\n        node.getAttribute(property) ||\n        node.getAttribute(\"data-\" + property) ||\n        attr(node.parentElement, property)\n      );\n    };\n\n    // load handles the actual HTTP fetch, and uses htmx.ajax in cases where we're\n    // preloading an htmx resource (this sends the same HTTP headers as a regular htmx request)\n    var load = function (node) {\n      // Called after a successful AJAX request, to mark the\n      // content as loaded (and prevent additional AJAX calls.)\n      var done = function (html) {\n        if (!node.preloadAlways) {\n          node.preloadState = \"DONE\";\n        }\n\n        if (attr(node, \"preload-images\") == \"true\") {\n          document.createElement(\"div\").innerHTML = html; // create and populate a node to load linked resources, too.\n        }\n      };\n\n      return function () {\n        // If this value has already been loaded, then do not try again.\n        if (node.preloadState !== \"READY\") {\n          return;\n        }\n\n        // Special handling for HX-GET - use built-in htmx.ajax function\n        // so that headers match other htmx requests, then set\n        // node.preloadState = TRUE so that requests are not duplicated\n        // in the future\n        var hxGet =\n          node.getAttribute(\"hx-get\") || node.getAttribute(\"data-hx-get\");\n        if (hxGet) {\n          htmx.ajax(\"GET\", hxGet, {\n            source: node,\n            handler: function (elt, info) {\n              done(info.xhr.responseText);\n            },\n          });\n          return;\n        }\n\n        // Otherwise, perform a standard xhr request, then set\n        // node.preloadState = TRUE so that requests are not duplicated\n        // in the future.\n        if (node.getAttribute(\"href\")) {\n          var r = new XMLHttpRequest();\n          r.open(\"GET\", node.getAttribute(\"href\"));\n          r.onload = function () {\n            done(r.responseText);\n          };\n          r.send();\n          return;\n        }\n      };\n    };\n\n    // This function processes a specific node and sets up event handlers.\n    // We'll search for nodes and use it below.\n    var init = function (node) {\n      // If this node DOES NOT include a \"GET\" transaction, then there's nothing to do here.\n      if (\n        node.getAttribute(\"href\") +\n          node.getAttribute(\"hx-get\") +\n          node.getAttribute(\"data-hx-get\") ==\n        \"\"\n      ) {\n        return;\n      }\n\n      // Guarantee that we only initialize each node once.\n      if (node.preloadState !== undefined) {\n        return;\n      }\n\n      // Get event name from config.\n      var on = attr(node, \"preload\") || \"mousedown\";\n      const always = on.indexOf(\"always\") !== -1;\n      if (always) {\n        on = on.replace(\"always\", \"\").trim();\n      }\n\n      // FALL THROUGH to here means we need to add an EventListener\n\n      // Apply the listener to the node\n      node.addEventListener(on, function (evt) {\n        if (node.preloadState === \"PAUSE\") {\n          // Only add one event listener\n          node.preloadState = \"READY\"; // Required for the `load` function to trigger\n\n          // Special handling for \"mouseover\" events.  Wait 100ms before triggering load.\n          if (on === \"mouseover\") {\n            window.setTimeout(load(node), 100);\n          } else {\n            load(node)(); // all other events trigger immediately.\n          }\n        }\n      });\n\n      // Special handling for certain built-in event handlers\n      switch (on) {\n        case \"mouseover\":\n          // Mirror `touchstart` events (fires immediately)\n          node.addEventListener(\"touchstart\", load(node));\n\n          // WHhen the mouse leaves, immediately disable the preload\n          node.addEventListener(\"mouseout\", function (evt) {\n            if (evt.target === node && node.preloadState === \"READY\") {\n              node.preloadState = \"PAUSE\";\n            }\n          });\n          break;\n\n        case \"mousedown\":\n          // Mirror `touchstart` events (fires immediately)\n          node.addEventListener(\"touchstart\", load(node));\n          break;\n      }\n\n      // Mark the node as ready to run.\n      node.preloadState = \"PAUSE\";\n      node.preloadAlways = always;\n      htmx.trigger(node, \"preload:init\"); // This event can be used to load content immediately.\n    };\n\n    // Search for all child nodes that have a \"preload\" attribute\n    event.target.querySelectorAll(\"[preload]\").forEach(function (node) {\n      // Initialize the node with the \"preload\" attribute\n      init(node);\n\n      // Initialize all child elements that are anchors or have `hx-get` (use with care)\n      node.querySelectorAll(\"a,[hx-get],[data-hx-get]\").forEach(init);\n    });\n  },\n});\n"
  },
  {
    "path": "src/staticfiles/prism.1598ec91cbbd.css",
    "content": "/* PrismJS 1.29.0\nhttps://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+python&plugins=line-numbers+file-highlight+toolbar+copy-to-clipboard */\ncode[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}\npre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}\ndiv.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}\n"
  },
  {
    "path": "src/staticfiles/prism.167e3bcdc317.js",
    "content": "/* PrismJS 1.29.0\nhttps://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+python&plugins=line-numbers+file-highlight+normalize-whitespace+toolbar+copy-to-clipboard */\nvar _self=\"undefined\"!=typeof window?window:\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/\\u00a0/g,\" \")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,\"__id\",{value:++t}),e.__id},clone:function e(n,t){var r,i;switch(t=t||{},a.util.type(n)){case\"Object\":if(i=a.util.objId(n),t[i])return t[i];for(var l in r={},t[i]=r,n)n.hasOwnProperty(l)&&(r[l]=e(n[l],t));return r;case\"Array\":return i=a.util.objId(n),t[i]?t[i]:(r=[],t[i]=r,n.forEach((function(n,a){r[a]=e(n,t)})),r);default:return n}},getLanguage:function(e){for(;e;){var t=n.exec(e.className);if(t)return t[1].toLowerCase();e=e.parentElement}return\"none\"},setLanguage:function(e,t){e.className=e.className.replace(RegExp(n,\"gi\"),\"\"),e.classList.add(\"language-\"+t)},currentScript:function(){if(\"undefined\"==typeof document)return null;if(\"currentScript\"in document)return document.currentScript;try{throw new Error}catch(r){var e=(/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(r.stack)||[])[1];if(e){var n=document.getElementsByTagName(\"script\");for(var t in n)if(n[t].src==e)return n[t]}return null}},isActive:function(e,n,t){for(var r=\"no-\"+n;e;){var a=e.classList;if(a.contains(n))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!t}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,n){var t=a.util.clone(a.languages[e]);for(var r in n)t[r]=n[r];return t},insertBefore:function(e,n,t,r){var i=(r=r||a.languages)[e],l={};for(var o in i)if(i.hasOwnProperty(o)){if(o==n)for(var s in t)t.hasOwnProperty(s)&&(l[s]=t[s]);t.hasOwnProperty(o)||(l[o]=i[o])}var u=r[e];return r[e]=l,a.languages.DFS(a.languages,(function(n,t){t===u&&n!=e&&(this[n]=l)})),l},DFS:function e(n,t,r,i){i=i||{};var l=a.util.objId;for(var o in n)if(n.hasOwnProperty(o)){t.call(n,o,n[o],r||o);var s=n[o],u=a.util.type(s);\"Object\"!==u||i[l(s)]?\"Array\"!==u||i[l(s)]||(i[l(s)]=!0,e(s,t,o,i)):(i[l(s)]=!0,e(s,t,null,i))}}},plugins:{},highlightAll:function(e,n){a.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var r={callback:t,container:e,selector:'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'};a.hooks.run(\"before-highlightall\",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),a.hooks.run(\"before-all-elements-highlight\",r);for(var i,l=0;i=r.elements[l++];)a.highlightElement(i,!0===n,r.callback)},highlightElement:function(n,t,r){var i=a.util.getLanguage(n),l=a.languages[i];a.util.setLanguage(n,i);var o=n.parentElement;o&&\"pre\"===o.nodeName.toLowerCase()&&a.util.setLanguage(o,i);var s={element:n,language:i,grammar:l,code:n.textContent};function u(e){s.highlightedCode=e,a.hooks.run(\"before-insert\",s),s.element.innerHTML=s.highlightedCode,a.hooks.run(\"after-highlight\",s),a.hooks.run(\"complete\",s),r&&r.call(s.element)}if(a.hooks.run(\"before-sanity-check\",s),(o=s.element.parentElement)&&\"pre\"===o.nodeName.toLowerCase()&&!o.hasAttribute(\"tabindex\")&&o.setAttribute(\"tabindex\",\"0\"),!s.code)return a.hooks.run(\"complete\",s),void(r&&r.call(s.element));if(a.hooks.run(\"before-highlight\",s),s.grammar)if(t&&e.Worker){var c=new Worker(a.filename);c.onmessage=function(e){u(e.data)},c.postMessage(JSON.stringify({language:s.language,code:s.code,immediateClose:!0}))}else u(a.highlight(s.code,s.grammar,s.language));else u(a.util.encode(s.code))},highlight:function(e,n,t){var r={code:e,grammar:n,language:t};if(a.hooks.run(\"before-tokenize\",r),!r.grammar)throw new Error('The language \"'+r.language+'\" has no grammar.');return r.tokens=a.tokenize(r.code,r.grammar),a.hooks.run(\"after-tokenize\",r),i.stringify(a.util.encode(r.tokens),r.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var r in t)n[r]=t[r];delete n.rest}var a=new s;return u(a,a.head,e),o(e,a,n,a.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=a.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=a.hooks.all[e];if(t&&t.length)for(var r,i=0;r=t[i++];)r(n)}},Token:i};function i(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||\"\").length}function l(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function o(e,n,t,r,s,g){for(var f in t)if(t.hasOwnProperty(f)&&t[f]){var h=t[f];h=Array.isArray(h)?h:[h];for(var d=0;d<h.length;++d){if(g&&g.cause==f+\",\"+d)return;var v=h[d],p=v.inside,m=!!v.lookbehind,y=!!v.greedy,k=v.alias;if(y&&!v.pattern.global){var x=v.pattern.toString().match(/[imsuy]*$/)[0];v.pattern=RegExp(v.pattern.source,x+\"g\")}for(var b=v.pattern||v,w=r.next,A=s;w!==n.tail&&!(g&&A>=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(j<O||\"string\"==typeof C.value);C=C.next)L++,j+=C.value.length;L--,E=e.slice(A,j),P.index-=A}else if(!(P=l(b,0,E,m)))continue;S=P.index;var N=P[0],_=E.slice(0,S),M=E.slice(S+N.length),W=A+E.length;g&&W>g.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+\",\"+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a<t&&r!==e.tail;a++)r=r.next;n.next=r,r.prev=n,e.length-=a}if(e.Prism=a,i.stringify=function e(n,t){if(\"string\"==typeof n)return n;if(Array.isArray(n)){var r=\"\";return n.forEach((function(n){r+=e(n,t)})),r}var i={type:n.type,content:e(n.content,t),tag:\"span\",classes:[\"token\",n.type],attributes:{},language:t},l=n.alias;l&&(Array.isArray(l)?Array.prototype.push.apply(i.classes,l):i.classes.push(l)),a.hooks.run(\"wrap\",i);var o=\"\";for(var s in i.attributes)o+=\" \"+s+'=\"'+(i.attributes[s]||\"\").replace(/\"/g,\"&quot;\")+'\"';return\"<\"+i.tag+' class=\"'+i.classes.join(\" \")+'\"'+o+\">\"+i.content+\"</\"+i.tag+\">\"},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener(\"message\",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute(\"data-manual\")&&(a.manual=!0)),!a.manual){var h=document.readyState;\"loading\"===h||\"interactive\"===h&&g&&g.defer?document.addEventListener(\"DOMContentLoaded\",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);\"undefined\"!=typeof module&&module.exports&&(module.exports=Prism),\"undefined\"!=typeof global&&(global.Prism=Prism);\nPrism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside[\"internal-subset\"].inside=Prism.languages.markup,Prism.hooks.add(\"wrap\",(function(a){\"entity\"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,\"&\"))})),Object.defineProperty(Prism.languages.markup.tag,\"addInlined\",{value:function(a,e){var s={};s[\"language-\"+e]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i;var t={\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:s}};t[\"language-\"+e]={pattern:/[\\s\\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp(\"(<__[^>]*>)(?:<!\\\\[CDATA\\\\[(?:[^\\\\]]|\\\\](?!\\\\]>))*\\\\]\\\\]>|(?!<!\\\\[CDATA\\\\[)[^])*?(?=</__>)\".replace(/__/g,(function(){return a})),\"i\"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore(\"markup\",\"cdata\",n)}}),Object.defineProperty(Prism.languages.markup.tag,\"addAttribute\",{value:function(a,e){Prism.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(\"(^|[\\\"'\\\\s])(?:\"+a+\")\\\\s*=\\\\s*(?:\\\"[^\\\"]*\\\"|'[^']*'|[^\\\\s'\\\">=]+(?=[\\\\s>]))\",\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[e,\"language-\"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend(\"markup\",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;\n!function(s){var e=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;s.languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:[^;{\\\\s\\\"']|\\\\s+(?!\\\\s)|\"+e.source+\")*?(?:;|(?=\\\\s*\\\\{))\"),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+e.source+\"|(?:[^\\\\\\\\\\r\\n()\\\"']|\\\\\\\\[^])*)\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+e.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+e.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined(\"style\",\"css\"),t.tag.addAttribute(\"style\",\"css\"))}(Prism);\nPrism.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/};\nPrism.languages.javascript=Prism.languages.extend(\"clike\",{\"class-name\":[Prism.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(\"(^|[^\\\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\\\dA-Fa-f]+(?:_[\\\\dA-Fa-f]+)*n?|\\\\d+(?:_\\\\d+)*n|(?:\\\\d+(?:_\\\\d+)*(?:\\\\.(?:\\\\d+(?:_\\\\d+)*)?)?|\\\\.\\\\d+(?:_\\\\d+)*)(?:[Ee][+-]?\\\\d+(?:_\\\\d+)*)?)(?![\\\\w$])\"),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),Prism.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,Prism.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(\"((?:^|[^$\\\\w\\\\xA0-\\\\uFFFF.\\\"'\\\\])\\\\s]|\\\\b(?:return|yield))\\\\s*)/(?:(?:\\\\[(?:[^\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}|(?:\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\])*\\\\])*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\\\s|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/)*(?:$|[\\r\\n,.;:})\\\\]]|//))\"),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:Prism.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),Prism.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:Prism.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),Prism.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined(\"script\",\"javascript\"),Prism.languages.markup.tag.addAttribute(\"on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)\",\"javascript\")),Prism.languages.js=Prism.languages.javascript;\nPrism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern:/![sra](?=[:}]$)/,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){var e=\"line-numbers\",n=/\\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){if(\"PRE\"===n.tagName&&n.classList.contains(e)){var i=n.querySelector(\".line-numbers-rows\");if(i){var r=parseInt(n.getAttribute(\"data-start\"),10)||1,s=r+(i.children.length-1);t<r&&(t=r),t>s&&(t=s);var l=t-r;return i.children[l]}}},resize:function(e){r([e])},assumeViewportIndependence:!0},i=void 0;window.addEventListener(\"resize\",(function(){t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll(\"pre.line-numbers\"))))})),Prism.hooks.add(\"complete\",(function(t){if(t.code){var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector(\".line-numbers-rows\")&&Prism.util.isActive(i,e)){i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join(\"<span></span>\");(l=document.createElement(\"span\")).setAttribute(\"aria-hidden\",\"true\"),l.className=\"line-numbers-rows\",l.innerHTML=u,s.hasAttribute(\"data-start\")&&(s.style.counterReset=\"linenumber \"+(parseInt(s.getAttribute(\"data-start\"),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run(\"line-numbers\",t)}}})),Prism.hooks.add(\"line-numbers\",(function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}))}function r(e){if(0!=(e=e.filter((function(e){var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)[\"white-space\"];return\"pre-wrap\"===t||\"pre-line\"===t}))).length){var t=e.map((function(e){var t=e.querySelector(\"code\"),i=e.querySelector(\".line-numbers-rows\");if(t&&i){var r=e.querySelector(\".line-numbers-sizer\"),s=t.textContent.split(n);r||((r=document.createElement(\"span\")).className=\"line-numbers-sizer\",t.appendChild(r)),r.innerHTML=\"0\",r.style.display=\"block\";var l=r.getBoundingClientRect().height;return r.innerHTML=\"\",{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}}})).filter(Boolean);t.forEach((function(e){var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){if(e&&e.length>1){var s=n.appendChild(document.createElement(\"span\"));s.style.display=\"block\",s.textContent=e}else i[t]=r}))})),t.forEach((function(e){for(var n=e.sizer,t=e.lineHeights,i=0,r=0;r<t.length;r++)void 0===t[r]&&(t[r]=n.children[i++].getBoundingClientRect().height)})),t.forEach((function(e){var n=e.sizer,t=e.element.querySelector(\".line-numbers-rows\");n.style.display=\"none\",n.innerHTML=\"\",e.lineHeights.forEach((function(e,n){t.children[n].style.height=e+\"px\"}))}))}}}();\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var t={js:\"javascript\",py:\"python\",rb:\"ruby\",ps1:\"powershell\",psm1:\"powershell\",sh:\"bash\",bat:\"batch\",h:\"c\",tex:\"latex\"},e=\"data-src-status\",i='pre[data-src]:not([data-src-status=\"loaded\"]):not([data-src-status=\"loading\"])';Prism.hooks.add(\"before-highlightall\",(function(t){t.selector+=\", \"+i})),Prism.hooks.add(\"before-sanity-check\",(function(a){var n=a.element;if(n.matches(i)){a.code=\"\",n.setAttribute(e,\"loading\");var s=n.appendChild(document.createElement(\"CODE\"));s.textContent=\"Loading…\";var r=n.getAttribute(\"data-src\"),l=a.language;if(\"none\"===l){var o=(/\\.(\\w+)$/.exec(r)||[,\"none\"])[1];l=t[o]||o}Prism.util.setLanguage(s,l),Prism.util.setLanguage(n,l);var h=Prism.plugins.autoloader;h&&h.loadLanguages(l),function(t,i,a){var r=new XMLHttpRequest;r.open(\"GET\",t,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?function(t){n.setAttribute(e,\"loaded\");var i=function(t){var e=/^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(t||\"\");if(e){var i=Number(e[1]),a=e[2],n=e[3];return a?n?[i,Number(n)]:[i,void 0]:[i,i]}}(n.getAttribute(\"data-range\"));if(i){var a=t.split(/\\r\\n?|\\n/g),r=i[0],l=null==i[1]?a.length:i[1];r<0&&(r+=a.length),r=Math.max(0,Math.min(r-1,a.length)),l<0&&(l+=a.length),l=Math.max(0,Math.min(l,a.length)),t=a.slice(r,l).join(\"\\n\"),n.hasAttribute(\"data-start\")||n.setAttribute(\"data-start\",String(r+1))}s.textContent=t,Prism.highlightElement(s)}(r.responseText):r.status>=400?a(\"✖ Error \"+r.status+\" while fetching file: \"+r.statusText):a(\"✖ Error: File does not exist or is empty\"))},r.send(null)}(r,0,(function(t){n.setAttribute(e,\"failed\"),s.textContent=t}))}})),Prism.plugins.fileHighlight={highlight:function(t){for(var e,a=(t||document).querySelectorAll(i),n=0;e=a[n++];)Prism.highlightElement(e)}};var a=!1;Prism.fileHighlight=function(){a||(console.warn(\"Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.\"),a=!0),Prism.plugins.fileHighlight.highlight.apply(this,arguments)}}}();\n!function(){if(\"undefined\"!=typeof Prism){var e=Object.assign||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t={\"remove-trailing\":\"boolean\",\"remove-indent\":\"boolean\",\"left-trim\":\"boolean\",\"right-trim\":\"boolean\",\"break-lines\":\"number\",indent:\"number\",\"remove-initial-line-feed\":\"boolean\",\"tabs-to-spaces\":\"number\",\"spaces-to-tabs\":\"number\"};n.prototype={setDefaults:function(t){this.defaults=e(this.defaults,t)},normalize:function(t,n){for(var r in n=e(this.defaults,n)){var i=r.replace(/-(\\w)/g,(function(e,t){return t.toUpperCase()}));\"normalize\"!==r&&\"setDefaults\"!==i&&n[r]&&this[i]&&(t=this[i].call(this,t,n[r]))}return t},leftTrim:function(e){return e.replace(/^\\s+/,\"\")},rightTrim:function(e){return e.replace(/\\s+$/,\"\")},tabsToSpaces:function(e,t){return t=0|t||4,e.replace(/\\t/g,new Array(++t).join(\" \"))},spacesToTabs:function(e,t){return t=0|t||4,e.replace(RegExp(\" {\"+t+\"}\",\"g\"),\"\\t\")},removeTrailing:function(e){return e.replace(/\\s*?$/gm,\"\")},removeInitialLineFeed:function(e){return e.replace(/^(?:\\r?\\n|\\r)/,\"\")},removeIndent:function(e){var t=e.match(/^[^\\S\\n\\r]*(?=\\S)/gm);return t&&t[0].length?(t.sort((function(e,t){return e.length-t.length})),t[0].length?e.replace(RegExp(\"^\"+t[0],\"gm\"),\"\"):e):e},indent:function(e,t){return e.replace(/^[^\\S\\n\\r]*(?=\\S)/gm,new Array(++t).join(\"\\t\")+\"$&\")},breakLines:function(e,t){t=!0===t?80:0|t||80;for(var n=e.split(\"\\n\"),i=0;i<n.length;++i)if(!(r(n[i])<=t)){for(var o=n[i].split(/(\\s+)/g),a=0,l=0;l<o.length;++l){var s=r(o[l]);(a+=s)>t&&(o[l]=\"\\n\"+o[l],a=s)}n[i]=o.join(\"\")}return n.join(\"\\n\")}},\"undefined\"!=typeof module&&module.exports&&(module.exports=n),Prism.plugins.NormalizeWhitespace=new n({\"remove-trailing\":!0,\"remove-indent\":!0,\"left-trim\":!0,\"right-trim\":!0}),Prism.hooks.add(\"before-sanity-check\",(function(e){var n=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings[\"whitespace-normalization\"])&&Prism.util.isActive(e.element,\"whitespace-normalization\",!0))if(e.element&&e.element.parentNode||!e.code){var r=e.element.parentNode;if(e.code&&r&&\"pre\"===r.nodeName.toLowerCase()){for(var i in null==e.settings&&(e.settings={}),t)if(Object.hasOwnProperty.call(t,i)){var o=t[i];if(r.hasAttribute(\"data-\"+i))try{var a=JSON.parse(r.getAttribute(\"data-\"+i)||\"true\");typeof a===o&&(e.settings[i]=a)}catch(e){}}for(var l=r.childNodes,s=\"\",c=\"\",u=!1,m=0;m<l.length;++m){var f=l[m];f==e.element?u=!0:\"#text\"===f.nodeName&&(u?c+=f.nodeValue:s+=f.nodeValue,r.removeChild(f),--m)}if(e.element.children.length&&Prism.plugins.KeepMarkup){var d=s+e.element.innerHTML+c;e.element.innerHTML=n.normalize(d,e.settings),e.code=e.element.textContent}else e.code=s+e.code+c,e.code=n.normalize(e.code,e.settings)}}else e.code=n.normalize(e.code,e.settings)}))}function n(t){this.defaults=e({},t)}function r(e){for(var t=0,n=0;n<e.length;++n)e.charCodeAt(n)==\"\\t\".charCodeAt(0)&&(t+=3);return e.length+t}}();\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r=\"function\"==typeof a?a:function(e){var t;return\"function\"==typeof a.onClick?((t=document.createElement(\"button\")).type=\"button\",t.addEventListener(\"click\",(function(){a.onClick.call(this,e)}))):\"string\"==typeof a.url?(t=document.createElement(\"a\")).href=a.url:t=document.createElement(\"span\"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key \"'+n+'\" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains(\"code-toolbar\")){var o=document.createElement(\"div\");o.classList.add(\"code-toolbar\"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement(\"div\");i.classList.add(\"toolbar\");var l=e,d=function(e){for(;e;){var t=e.getAttribute(\"data-toolbar-order\");if(null!=t)return(t=t.trim()).length?t.split(/\\s*,\\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement(\"div\");n.classList.add(\"toolbar-item\"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a(\"label\",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute(\"data-label\")){var n,a,r=t.getAttribute(\"data-label\");try{a=document.querySelector(\"template#\"+r)}catch(e){}return a?n=a.content:(t.hasAttribute(\"data-url\")?(n=document.createElement(\"a\")).href=t.getAttribute(\"data-url\"):n=document.createElement(\"span\"),n.textContent=r),n}})),Prism.hooks.add(\"complete\",r)}}();\n!function(){function t(t){var e=document.createElement(\"textarea\");e.value=t.getText(),e.style.top=\"0\",e.style.left=\"0\",e.style.position=\"fixed\",document.body.appendChild(e),e.focus(),e.select();try{var o=document.execCommand(\"copy\");setTimeout((function(){o?t.success():t.error()}),1)}catch(e){setTimeout((function(){t.error(e)}),1)}document.body.removeChild(e)}\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document&&(Prism.plugins.toolbar?Prism.plugins.toolbar.registerButton(\"copy-to-clipboard\",(function(e){var o=e.element,n=function(t){var e={copy:\"Copy\",\"copy-error\":\"Press Ctrl+C to copy\",\"copy-success\":\"Copied!\",\"copy-timeout\":5e3};for(var o in e){for(var n=\"data-prismjs-\"+o,c=t;c&&!c.hasAttribute(n);)c=c.parentElement;c&&(e[o]=c.getAttribute(n))}return e}(o),c=document.createElement(\"button\");c.className=\"copy-to-clipboard-button\",c.setAttribute(\"type\",\"button\");var r=document.createElement(\"span\");return c.appendChild(r),u(\"copy\"),function(e,o){e.addEventListener(\"click\",(function(){!function(e){navigator.clipboard?navigator.clipboard.writeText(e.getText()).then(e.success,(function(){t(e)})):t(e)}(o)}))}(c,{getText:function(){return o.textContent},success:function(){u(\"copy-success\"),i()},error:function(){u(\"copy-error\"),setTimeout((function(){!function(t){window.getSelection().selectAllChildren(t)}(o)}),1),i()}}),c;function i(){setTimeout((function(){u(\"copy\")}),n[\"copy-timeout\"])}function u(t){r.textContent=n[t],c.setAttribute(\"data-copy-state\",t)}})):console.warn(\"Copy to Clipboard plugin loaded before Toolbar plugin.\"))}();\n"
  },
  {
    "path": "src/staticfiles/prism.css",
    "content": "/* PrismJS 1.29.0\nhttps://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+python&plugins=line-numbers+file-highlight+toolbar+copy-to-clipboard */\ncode[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}\npre[class*=language-].line-numbers{position:relative;padding-left:3.8em;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{position:absolute;pointer-events:none;top:0;font-size:100%;left:-3.8em;width:3em;letter-spacing:-1px;border-right:1px solid #999;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#999;display:block;padding-right:.8em;text-align:right}\ndiv.code-toolbar{position:relative}div.code-toolbar>.toolbar{position:absolute;z-index:10;top:.3em;right:.2em;transition:opacity .3s ease-in-out;opacity:0}div.code-toolbar:hover>.toolbar{opacity:1}div.code-toolbar:focus-within>.toolbar{opacity:1}div.code-toolbar>.toolbar>.toolbar-item{display:inline-block}div.code-toolbar>.toolbar>.toolbar-item>a{cursor:pointer}div.code-toolbar>.toolbar>.toolbar-item>button{background:0 0;border:0;color:inherit;font:inherit;line-height:normal;overflow:visible;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}div.code-toolbar>.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar>.toolbar-item>span{color:#bbb;font-size:.8em;padding:0 .5em;background:#f5f2f0;background:rgba(224,224,224,.2);box-shadow:0 2px 0 0 rgba(0,0,0,.2);border-radius:.5em}div.code-toolbar>.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar>.toolbar-item>span:hover{color:inherit;text-decoration:none}\n"
  },
  {
    "path": "src/staticfiles/prism.js",
    "content": "/* PrismJS 1.29.0\nhttps://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+python&plugins=line-numbers+file-highlight+normalize-whitespace+toolbar+copy-to-clipboard */\nvar _self=\"undefined\"!=typeof window?window:\"undefined\"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(e){var n=/(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i,t=0,r={},a={manual:e.Prism&&e.Prism.manual,disableWorkerMessageHandler:e.Prism&&e.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof i?new i(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/\\u00a0/g,\" \")},type:function(e){return Object.prototype.toString.call(e).slice(8,-1)},objId:function(e){return e.__id||Object.defineProperty(e,\"__id\",{value:++t}),e.__id},clone:function e(n,t){var r,i;switch(t=t||{},a.util.type(n)){case\"Object\":if(i=a.util.objId(n),t[i])return t[i];for(var l in r={},t[i]=r,n)n.hasOwnProperty(l)&&(r[l]=e(n[l],t));return r;case\"Array\":return i=a.util.objId(n),t[i]?t[i]:(r=[],t[i]=r,n.forEach((function(n,a){r[a]=e(n,t)})),r);default:return n}},getLanguage:function(e){for(;e;){var t=n.exec(e.className);if(t)return t[1].toLowerCase();e=e.parentElement}return\"none\"},setLanguage:function(e,t){e.className=e.className.replace(RegExp(n,\"gi\"),\"\"),e.classList.add(\"language-\"+t)},currentScript:function(){if(\"undefined\"==typeof document)return null;if(\"currentScript\"in document)return document.currentScript;try{throw new Error}catch(r){var e=(/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(r.stack)||[])[1];if(e){var n=document.getElementsByTagName(\"script\");for(var t in n)if(n[t].src==e)return n[t]}return null}},isActive:function(e,n,t){for(var r=\"no-\"+n;e;){var a=e.classList;if(a.contains(n))return!0;if(a.contains(r))return!1;e=e.parentElement}return!!t}},languages:{plain:r,plaintext:r,text:r,txt:r,extend:function(e,n){var t=a.util.clone(a.languages[e]);for(var r in n)t[r]=n[r];return t},insertBefore:function(e,n,t,r){var i=(r=r||a.languages)[e],l={};for(var o in i)if(i.hasOwnProperty(o)){if(o==n)for(var s in t)t.hasOwnProperty(s)&&(l[s]=t[s]);t.hasOwnProperty(o)||(l[o]=i[o])}var u=r[e];return r[e]=l,a.languages.DFS(a.languages,(function(n,t){t===u&&n!=e&&(this[n]=l)})),l},DFS:function e(n,t,r,i){i=i||{};var l=a.util.objId;for(var o in n)if(n.hasOwnProperty(o)){t.call(n,o,n[o],r||o);var s=n[o],u=a.util.type(s);\"Object\"!==u||i[l(s)]?\"Array\"!==u||i[l(s)]||(i[l(s)]=!0,e(s,t,o,i)):(i[l(s)]=!0,e(s,t,null,i))}}},plugins:{},highlightAll:function(e,n){a.highlightAllUnder(document,e,n)},highlightAllUnder:function(e,n,t){var r={callback:t,container:e,selector:'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'};a.hooks.run(\"before-highlightall\",r),r.elements=Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)),a.hooks.run(\"before-all-elements-highlight\",r);for(var i,l=0;i=r.elements[l++];)a.highlightElement(i,!0===n,r.callback)},highlightElement:function(n,t,r){var i=a.util.getLanguage(n),l=a.languages[i];a.util.setLanguage(n,i);var o=n.parentElement;o&&\"pre\"===o.nodeName.toLowerCase()&&a.util.setLanguage(o,i);var s={element:n,language:i,grammar:l,code:n.textContent};function u(e){s.highlightedCode=e,a.hooks.run(\"before-insert\",s),s.element.innerHTML=s.highlightedCode,a.hooks.run(\"after-highlight\",s),a.hooks.run(\"complete\",s),r&&r.call(s.element)}if(a.hooks.run(\"before-sanity-check\",s),(o=s.element.parentElement)&&\"pre\"===o.nodeName.toLowerCase()&&!o.hasAttribute(\"tabindex\")&&o.setAttribute(\"tabindex\",\"0\"),!s.code)return a.hooks.run(\"complete\",s),void(r&&r.call(s.element));if(a.hooks.run(\"before-highlight\",s),s.grammar)if(t&&e.Worker){var c=new Worker(a.filename);c.onmessage=function(e){u(e.data)},c.postMessage(JSON.stringify({language:s.language,code:s.code,immediateClose:!0}))}else u(a.highlight(s.code,s.grammar,s.language));else u(a.util.encode(s.code))},highlight:function(e,n,t){var r={code:e,grammar:n,language:t};if(a.hooks.run(\"before-tokenize\",r),!r.grammar)throw new Error('The language \"'+r.language+'\" has no grammar.');return r.tokens=a.tokenize(r.code,r.grammar),a.hooks.run(\"after-tokenize\",r),i.stringify(a.util.encode(r.tokens),r.language)},tokenize:function(e,n){var t=n.rest;if(t){for(var r in t)n[r]=t[r];delete n.rest}var a=new s;return u(a,a.head,e),o(e,a,n,a.head,0),function(e){for(var n=[],t=e.head.next;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=a.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=a.hooks.all[e];if(t&&t.length)for(var r,i=0;r=t[i++];)r(n)}},Token:i};function i(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||\"\").length}function l(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function o(e,n,t,r,s,g){for(var f in t)if(t.hasOwnProperty(f)&&t[f]){var h=t[f];h=Array.isArray(h)?h:[h];for(var d=0;d<h.length;++d){if(g&&g.cause==f+\",\"+d)return;var v=h[d],p=v.inside,m=!!v.lookbehind,y=!!v.greedy,k=v.alias;if(y&&!v.pattern.global){var x=v.pattern.toString().match(/[imsuy]*$/)[0];v.pattern=RegExp(v.pattern.source,x+\"g\")}for(var b=v.pattern||v,w=r.next,A=s;w!==n.tail&&!(g&&A>=g.reach);A+=w.value.length,w=w.next){var E=w.value;if(n.length>e.length)return;if(!(E instanceof i)){var P,L=1;if(y){if(!(P=l(b,A,e,m))||P.index>=e.length)break;var S=P.index,O=P.index+P[0].length,j=A;for(j+=w.value.length;S>=j;)j+=(w=w.next).value.length;if(A=j-=w.value.length,w.value instanceof i)continue;for(var C=w;C!==n.tail&&(j<O||\"string\"==typeof C.value);C=C.next)L++,j+=C.value.length;L--,E=e.slice(A,j),P.index-=A}else if(!(P=l(b,0,E,m)))continue;S=P.index;var N=P[0],_=E.slice(0,S),M=E.slice(S+N.length),W=A+E.length;g&&W>g.reach&&(g.reach=W);var z=w.prev;if(_&&(z=u(n,z,_),A+=_.length),c(n,z,L),w=u(n,z,new i(f,p?a.tokenize(N,p):N,k,N)),M&&u(n,w,M),L>1){var I={cause:f+\",\"+d,reach:W};o(e,n,t,w.prev,A,I),g&&I.reach>g.reach&&(g.reach=I.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function u(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function c(e,n,t){for(var r=n.next,a=0;a<t&&r!==e.tail;a++)r=r.next;n.next=r,r.prev=n,e.length-=a}if(e.Prism=a,i.stringify=function e(n,t){if(\"string\"==typeof n)return n;if(Array.isArray(n)){var r=\"\";return n.forEach((function(n){r+=e(n,t)})),r}var i={type:n.type,content:e(n.content,t),tag:\"span\",classes:[\"token\",n.type],attributes:{},language:t},l=n.alias;l&&(Array.isArray(l)?Array.prototype.push.apply(i.classes,l):i.classes.push(l)),a.hooks.run(\"wrap\",i);var o=\"\";for(var s in i.attributes)o+=\" \"+s+'=\"'+(i.attributes[s]||\"\").replace(/\"/g,\"&quot;\")+'\"';return\"<\"+i.tag+' class=\"'+i.classes.join(\" \")+'\"'+o+\">\"+i.content+\"</\"+i.tag+\">\"},!e.document)return e.addEventListener?(a.disableWorkerMessageHandler||e.addEventListener(\"message\",(function(n){var t=JSON.parse(n.data),r=t.language,i=t.code,l=t.immediateClose;e.postMessage(a.highlight(i,a.languages[r],r)),l&&e.close()}),!1),a):a;var g=a.util.currentScript();function f(){a.manual||a.highlightAll()}if(g&&(a.filename=g.src,g.hasAttribute(\"data-manual\")&&(a.manual=!0)),!a.manual){var h=document.readyState;\"loading\"===h||\"interactive\"===h&&g&&g.defer?document.addEventListener(\"DOMContentLoaded\",f):window.requestAnimationFrame?window.requestAnimationFrame(f):window.setTimeout(f,16)}return a}(_self);\"undefined\"!=typeof module&&module.exports&&(module.exports=Prism),\"undefined\"!=typeof global&&(global.Prism=Prism);\nPrism.languages.markup={comment:{pattern:/<!--(?:(?!<!--)[\\s\\S])*?-->/,greedy:!0},prolog:{pattern:/<\\?[\\s\\S]+?\\?>/,greedy:!0},doctype:{pattern:/<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,greedy:!0,inside:{\"internal-subset\":{pattern:/(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/\"[^\"]*\"|'[^']*'/,greedy:!0},punctuation:/^<!|>$|[[\\]]/,\"doctype-tag\":/^DOCTYPE/i,name:/[^\\s<>'\"]+/}},cdata:{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,greedy:!0},tag:{pattern:/<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,greedy:!0,inside:{tag:{pattern:/^<\\/?[^\\s>\\/]+/,inside:{punctuation:/^<\\/?/,namespace:/^[^\\s>\\/:]+:/}},\"special-attr\":[],\"attr-value\":{pattern:/=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:\"attr-equals\"},{pattern:/^(\\s*)[\"']|[\"']$/,lookbehind:!0}]}},punctuation:/\\/?>/,\"attr-name\":{pattern:/[^\\s>\\/]+/,inside:{namespace:/^[^\\s>\\/:]+:/}}}},entity:[{pattern:/&[\\da-z]{1,8};/i,alias:\"named-entity\"},/&#x?[\\da-f]{1,8};/i]},Prism.languages.markup.tag.inside[\"attr-value\"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside[\"internal-subset\"].inside=Prism.languages.markup,Prism.hooks.add(\"wrap\",(function(a){\"entity\"===a.type&&(a.attributes.title=a.content.replace(/&amp;/,\"&\"))})),Object.defineProperty(Prism.languages.markup.tag,\"addInlined\",{value:function(a,e){var s={};s[\"language-\"+e]={pattern:/(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^<!\\[CDATA\\[|\\]\\]>$/i;var t={\"included-cdata\":{pattern:/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,inside:s}};t[\"language-\"+e]={pattern:/[\\s\\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp(\"(<__[^>]*>)(?:<!\\\\[CDATA\\\\[(?:[^\\\\]]|\\\\](?!\\\\]>))*\\\\]\\\\]>|(?!<!\\\\[CDATA\\\\[)[^])*?(?=</__>)\".replace(/__/g,(function(){return a})),\"i\"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore(\"markup\",\"cdata\",n)}}),Object.defineProperty(Prism.languages.markup.tag,\"addAttribute\",{value:function(a,e){Prism.languages.markup.tag.inside[\"special-attr\"].push({pattern:RegExp(\"(^|[\\\"'\\\\s])(?:\"+a+\")\\\\s*=\\\\s*(?:\\\"[^\\\"]*\\\"|'[^']*'|[^\\\\s'\\\">=]+(?=[\\\\s>]))\",\"i\"),lookbehind:!0,inside:{\"attr-name\":/^[^\\s=]+/,\"attr-value\":{pattern:/=[\\s\\S]+/,inside:{value:{pattern:/(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,lookbehind:!0,alias:[e,\"language-\"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:\"attr-equals\"},/\"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend(\"markup\",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;\n!function(s){var e=/(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;s.languages.css={comment:/\\/\\*[\\s\\S]*?\\*\\//,atrule:{pattern:RegExp(\"@[\\\\w-](?:[^;{\\\\s\\\"']|\\\\s+(?!\\\\s)|\"+e.source+\")*?(?:;|(?=\\\\s*\\\\{))\"),inside:{rule:/^@[\\w-]+/,\"selector-function-argument\":{pattern:/(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,lookbehind:!0,alias:\"selector\"},keyword:{pattern:/(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,lookbehind:!0}}},url:{pattern:RegExp(\"\\\\burl\\\\((?:\"+e.source+\"|(?:[^\\\\\\\\\\r\\n()\\\"']|\\\\\\\\[^])*)\\\\)\",\"i\"),greedy:!0,inside:{function:/^url/i,punctuation:/^\\(|\\)$/,string:{pattern:RegExp(\"^\"+e.source+\"$\"),alias:\"url\"}}},selector:{pattern:RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\"+e.source+\")*(?=\\\\s*\\\\{)\"),lookbehind:!0},string:{pattern:e,greedy:!0},property:{pattern:/(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,lookbehind:!0},important:/!important\\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,lookbehind:!0},punctuation:/[(){};:,]/},s.languages.css.atrule.inside.rest=s.languages.css;var t=s.languages.markup;t&&(t.tag.addInlined(\"style\",\"css\"),t.tag.addAttribute(\"style\",\"css\"))}(Prism);\nPrism.languages.clike={comment:[{pattern:/(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\\\:])\\/\\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,greedy:!0},\"class-name\":{pattern:/(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\\\]/}},keyword:/\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,boolean:/\\b(?:false|true)\\b/,function:/\\b\\w+(?=\\()/,number:/\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,punctuation:/[{}[\\];(),.:]/};\nPrism.languages.javascript=Prism.languages.extend(\"clike\",{\"class-name\":[Prism.languages.clike[\"class-name\"],{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\\})\\s*)catch\\b/,lookbehind:!0},{pattern:/(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,lookbehind:!0}],function:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,number:{pattern:RegExp(\"(^|[^\\\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\\\dA-Fa-f]+(?:_[\\\\dA-Fa-f]+)*n?|\\\\d+(?:_\\\\d+)*n|(?:\\\\d+(?:_\\\\d+)*(?:\\\\.(?:\\\\d+(?:_\\\\d+)*)?)?|\\\\.\\\\d+(?:_\\\\d+)*)(?:[Ee][+-]?\\\\d+(?:_\\\\d+)*)?)(?![\\\\w$])\"),lookbehind:!0},operator:/--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/}),Prism.languages.javascript[\"class-name\"][0].pattern=/(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/,Prism.languages.insertBefore(\"javascript\",\"keyword\",{regex:{pattern:RegExp(\"((?:^|[^$\\\\w\\\\xA0-\\\\uFFFF.\\\"'\\\\])\\\\s]|\\\\b(?:return|yield))\\\\s*)/(?:(?:\\\\[(?:[^\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}|(?:\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.|\\\\[(?:[^[\\\\]\\\\\\\\\\r\\n]|\\\\\\\\.)*\\\\])*\\\\])*\\\\]|\\\\\\\\.|[^/\\\\\\\\\\\\[\\r\\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\\\s|/\\\\*(?:[^*]|\\\\*(?!/))*\\\\*/)*(?:$|[\\r\\n,.;:})\\\\]]|//))\"),lookbehind:!0,greedy:!0,inside:{\"regex-source\":{pattern:/^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,lookbehind:!0,alias:\"language-regex\",inside:Prism.languages.regex},\"regex-delimiter\":/^\\/|\\/$/,\"regex-flags\":/^[a-z]+$/}},\"function-variable\":{pattern:/#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,alias:\"function\"},parameter:[{pattern:/(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/}),Prism.languages.insertBefore(\"javascript\",\"string\",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:\"comment\"},\"template-string\":{pattern:/`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,greedy:!0,inside:{\"template-punctuation\":{pattern:/^`|`$/,alias:\"string\"},interpolation:{pattern:/((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,lookbehind:!0,inside:{\"interpolation-punctuation\":{pattern:/^\\$\\{|\\}$/,alias:\"punctuation\"},rest:Prism.languages.javascript}},string:/[\\s\\S]+/}},\"string-property\":{pattern:/((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,lookbehind:!0,greedy:!0,alias:\"property\"}}),Prism.languages.insertBefore(\"javascript\",\"operator\",{\"literal-property\":{pattern:/((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,lookbehind:!0,alias:\"property\"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined(\"script\",\"javascript\"),Prism.languages.markup.tag.addAttribute(\"on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)\",\"javascript\")),Prism.languages.js=Prism.languages.javascript;\nPrism.languages.python={comment:{pattern:/(^|[^\\\\])#.*/,lookbehind:!0,greedy:!0},\"string-interpolation\":{pattern:/(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,lookbehind:!0,inside:{\"format-spec\":{pattern:/(:)[^:(){}]+(?=\\}$)/,lookbehind:!0},\"conversion-option\":{pattern:/![sra](?=[:}]$)/,alias:\"punctuation\"},rest:null}},string:/[\\s\\S]+/}},\"triple-quoted-string\":{pattern:/(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,greedy:!0,alias:\"string\"},string:{pattern:/(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,greedy:!0},function:{pattern:/((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,lookbehind:!0},\"class-name\":{pattern:/(\\bclass\\s+)\\w+/i,lookbehind:!0},decorator:{pattern:/(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,lookbehind:!0,alias:[\"annotation\",\"punctuation\"],inside:{punctuation:/\\./}},keyword:/\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,builtin:/\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,boolean:/\\b(?:False|None|True)\\b/,number:/\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,operator:/[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\\];(),.:]/},Prism.languages.python[\"string-interpolation\"].inside.interpolation.inside.rest=Prism.languages.python,Prism.languages.py=Prism.languages.python;\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){var e=\"line-numbers\",n=/\\n(?!$)/g,t=Prism.plugins.lineNumbers={getLine:function(n,t){if(\"PRE\"===n.tagName&&n.classList.contains(e)){var i=n.querySelector(\".line-numbers-rows\");if(i){var r=parseInt(n.getAttribute(\"data-start\"),10)||1,s=r+(i.children.length-1);t<r&&(t=r),t>s&&(t=s);var l=t-r;return i.children[l]}}},resize:function(e){r([e])},assumeViewportIndependence:!0},i=void 0;window.addEventListener(\"resize\",(function(){t.assumeViewportIndependence&&i===window.innerWidth||(i=window.innerWidth,r(Array.prototype.slice.call(document.querySelectorAll(\"pre.line-numbers\"))))})),Prism.hooks.add(\"complete\",(function(t){if(t.code){var i=t.element,s=i.parentNode;if(s&&/pre/i.test(s.nodeName)&&!i.querySelector(\".line-numbers-rows\")&&Prism.util.isActive(i,e)){i.classList.remove(e),s.classList.add(e);var l,o=t.code.match(n),a=o?o.length+1:1,u=new Array(a+1).join(\"<span></span>\");(l=document.createElement(\"span\")).setAttribute(\"aria-hidden\",\"true\"),l.className=\"line-numbers-rows\",l.innerHTML=u,s.hasAttribute(\"data-start\")&&(s.style.counterReset=\"linenumber \"+(parseInt(s.getAttribute(\"data-start\"),10)-1)),t.element.appendChild(l),r([s]),Prism.hooks.run(\"line-numbers\",t)}}})),Prism.hooks.add(\"line-numbers\",(function(e){e.plugins=e.plugins||{},e.plugins.lineNumbers=!0}))}function r(e){if(0!=(e=e.filter((function(e){var n,t=(n=e,n?window.getComputedStyle?getComputedStyle(n):n.currentStyle||null:null)[\"white-space\"];return\"pre-wrap\"===t||\"pre-line\"===t}))).length){var t=e.map((function(e){var t=e.querySelector(\"code\"),i=e.querySelector(\".line-numbers-rows\");if(t&&i){var r=e.querySelector(\".line-numbers-sizer\"),s=t.textContent.split(n);r||((r=document.createElement(\"span\")).className=\"line-numbers-sizer\",t.appendChild(r)),r.innerHTML=\"0\",r.style.display=\"block\";var l=r.getBoundingClientRect().height;return r.innerHTML=\"\",{element:e,lines:s,lineHeights:[],oneLinerHeight:l,sizer:r}}})).filter(Boolean);t.forEach((function(e){var n=e.sizer,t=e.lines,i=e.lineHeights,r=e.oneLinerHeight;i[t.length-1]=void 0,t.forEach((function(e,t){if(e&&e.length>1){var s=n.appendChild(document.createElement(\"span\"));s.style.display=\"block\",s.textContent=e}else i[t]=r}))})),t.forEach((function(e){for(var n=e.sizer,t=e.lineHeights,i=0,r=0;r<t.length;r++)void 0===t[r]&&(t[r]=n.children[i++].getBoundingClientRect().height)})),t.forEach((function(e){var n=e.sizer,t=e.element.querySelector(\".line-numbers-rows\");n.style.display=\"none\",n.innerHTML=\"\",e.lineHeights.forEach((function(e,n){t.children[n].style.height=e+\"px\"}))}))}}}();\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var t={js:\"javascript\",py:\"python\",rb:\"ruby\",ps1:\"powershell\",psm1:\"powershell\",sh:\"bash\",bat:\"batch\",h:\"c\",tex:\"latex\"},e=\"data-src-status\",i='pre[data-src]:not([data-src-status=\"loaded\"]):not([data-src-status=\"loading\"])';Prism.hooks.add(\"before-highlightall\",(function(t){t.selector+=\", \"+i})),Prism.hooks.add(\"before-sanity-check\",(function(a){var n=a.element;if(n.matches(i)){a.code=\"\",n.setAttribute(e,\"loading\");var s=n.appendChild(document.createElement(\"CODE\"));s.textContent=\"Loading…\";var r=n.getAttribute(\"data-src\"),l=a.language;if(\"none\"===l){var o=(/\\.(\\w+)$/.exec(r)||[,\"none\"])[1];l=t[o]||o}Prism.util.setLanguage(s,l),Prism.util.setLanguage(n,l);var h=Prism.plugins.autoloader;h&&h.loadLanguages(l),function(t,i,a){var r=new XMLHttpRequest;r.open(\"GET\",t,!0),r.onreadystatechange=function(){4==r.readyState&&(r.status<400&&r.responseText?function(t){n.setAttribute(e,\"loaded\");var i=function(t){var e=/^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(t||\"\");if(e){var i=Number(e[1]),a=e[2],n=e[3];return a?n?[i,Number(n)]:[i,void 0]:[i,i]}}(n.getAttribute(\"data-range\"));if(i){var a=t.split(/\\r\\n?|\\n/g),r=i[0],l=null==i[1]?a.length:i[1];r<0&&(r+=a.length),r=Math.max(0,Math.min(r-1,a.length)),l<0&&(l+=a.length),l=Math.max(0,Math.min(l,a.length)),t=a.slice(r,l).join(\"\\n\"),n.hasAttribute(\"data-start\")||n.setAttribute(\"data-start\",String(r+1))}s.textContent=t,Prism.highlightElement(s)}(r.responseText):r.status>=400?a(\"✖ Error \"+r.status+\" while fetching file: \"+r.statusText):a(\"✖ Error: File does not exist or is empty\"))},r.send(null)}(r,0,(function(t){n.setAttribute(e,\"failed\"),s.textContent=t}))}})),Prism.plugins.fileHighlight={highlight:function(t){for(var e,a=(t||document).querySelectorAll(i),n=0;e=a[n++];)Prism.highlightElement(e)}};var a=!1;Prism.fileHighlight=function(){a||(console.warn(\"Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.\"),a=!0),Prism.plugins.fileHighlight.highlight.apply(this,arguments)}}}();\n!function(){if(\"undefined\"!=typeof Prism){var e=Object.assign||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},t={\"remove-trailing\":\"boolean\",\"remove-indent\":\"boolean\",\"left-trim\":\"boolean\",\"right-trim\":\"boolean\",\"break-lines\":\"number\",indent:\"number\",\"remove-initial-line-feed\":\"boolean\",\"tabs-to-spaces\":\"number\",\"spaces-to-tabs\":\"number\"};n.prototype={setDefaults:function(t){this.defaults=e(this.defaults,t)},normalize:function(t,n){for(var r in n=e(this.defaults,n)){var i=r.replace(/-(\\w)/g,(function(e,t){return t.toUpperCase()}));\"normalize\"!==r&&\"setDefaults\"!==i&&n[r]&&this[i]&&(t=this[i].call(this,t,n[r]))}return t},leftTrim:function(e){return e.replace(/^\\s+/,\"\")},rightTrim:function(e){return e.replace(/\\s+$/,\"\")},tabsToSpaces:function(e,t){return t=0|t||4,e.replace(/\\t/g,new Array(++t).join(\" \"))},spacesToTabs:function(e,t){return t=0|t||4,e.replace(RegExp(\" {\"+t+\"}\",\"g\"),\"\\t\")},removeTrailing:function(e){return e.replace(/\\s*?$/gm,\"\")},removeInitialLineFeed:function(e){return e.replace(/^(?:\\r?\\n|\\r)/,\"\")},removeIndent:function(e){var t=e.match(/^[^\\S\\n\\r]*(?=\\S)/gm);return t&&t[0].length?(t.sort((function(e,t){return e.length-t.length})),t[0].length?e.replace(RegExp(\"^\"+t[0],\"gm\"),\"\"):e):e},indent:function(e,t){return e.replace(/^[^\\S\\n\\r]*(?=\\S)/gm,new Array(++t).join(\"\\t\")+\"$&\")},breakLines:function(e,t){t=!0===t?80:0|t||80;for(var n=e.split(\"\\n\"),i=0;i<n.length;++i)if(!(r(n[i])<=t)){for(var o=n[i].split(/(\\s+)/g),a=0,l=0;l<o.length;++l){var s=r(o[l]);(a+=s)>t&&(o[l]=\"\\n\"+o[l],a=s)}n[i]=o.join(\"\")}return n.join(\"\\n\")}},\"undefined\"!=typeof module&&module.exports&&(module.exports=n),Prism.plugins.NormalizeWhitespace=new n({\"remove-trailing\":!0,\"remove-indent\":!0,\"left-trim\":!0,\"right-trim\":!0}),Prism.hooks.add(\"before-sanity-check\",(function(e){var n=Prism.plugins.NormalizeWhitespace;if((!e.settings||!1!==e.settings[\"whitespace-normalization\"])&&Prism.util.isActive(e.element,\"whitespace-normalization\",!0))if(e.element&&e.element.parentNode||!e.code){var r=e.element.parentNode;if(e.code&&r&&\"pre\"===r.nodeName.toLowerCase()){for(var i in null==e.settings&&(e.settings={}),t)if(Object.hasOwnProperty.call(t,i)){var o=t[i];if(r.hasAttribute(\"data-\"+i))try{var a=JSON.parse(r.getAttribute(\"data-\"+i)||\"true\");typeof a===o&&(e.settings[i]=a)}catch(e){}}for(var l=r.childNodes,s=\"\",c=\"\",u=!1,m=0;m<l.length;++m){var f=l[m];f==e.element?u=!0:\"#text\"===f.nodeName&&(u?c+=f.nodeValue:s+=f.nodeValue,r.removeChild(f),--m)}if(e.element.children.length&&Prism.plugins.KeepMarkup){var d=s+e.element.innerHTML+c;e.element.innerHTML=n.normalize(d,e.settings),e.code=e.element.textContent}else e.code=s+e.code+c,e.code=n.normalize(e.code,e.settings)}}else e.code=n.normalize(e.code,e.settings)}))}function n(t){this.defaults=e({},t)}function r(e){for(var t=0,n=0;n<e.length;++n)e.charCodeAt(n)==\"\\t\".charCodeAt(0)&&(t+=3);return e.length+t}}();\n!function(){if(\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document){var e=[],t={},n=function(){};Prism.plugins.toolbar={};var a=Prism.plugins.toolbar.registerButton=function(n,a){var r;r=\"function\"==typeof a?a:function(e){var t;return\"function\"==typeof a.onClick?((t=document.createElement(\"button\")).type=\"button\",t.addEventListener(\"click\",(function(){a.onClick.call(this,e)}))):\"string\"==typeof a.url?(t=document.createElement(\"a\")).href=a.url:t=document.createElement(\"span\"),a.className&&t.classList.add(a.className),t.textContent=a.text,t},n in t?console.warn('There is a button with the key \"'+n+'\" registered already.'):e.push(t[n]=r)},r=Prism.plugins.toolbar.hook=function(a){var r=a.element.parentNode;if(r&&/pre/i.test(r.nodeName)&&!r.parentNode.classList.contains(\"code-toolbar\")){var o=document.createElement(\"div\");o.classList.add(\"code-toolbar\"),r.parentNode.insertBefore(o,r),o.appendChild(r);var i=document.createElement(\"div\");i.classList.add(\"toolbar\");var l=e,d=function(e){for(;e;){var t=e.getAttribute(\"data-toolbar-order\");if(null!=t)return(t=t.trim()).length?t.split(/\\s*,\\s*/g):[];e=e.parentElement}}(a.element);d&&(l=d.map((function(e){return t[e]||n}))),l.forEach((function(e){var t=e(a);if(t){var n=document.createElement(\"div\");n.classList.add(\"toolbar-item\"),n.appendChild(t),i.appendChild(n)}})),o.appendChild(i)}};a(\"label\",(function(e){var t=e.element.parentNode;if(t&&/pre/i.test(t.nodeName)&&t.hasAttribute(\"data-label\")){var n,a,r=t.getAttribute(\"data-label\");try{a=document.querySelector(\"template#\"+r)}catch(e){}return a?n=a.content:(t.hasAttribute(\"data-url\")?(n=document.createElement(\"a\")).href=t.getAttribute(\"data-url\"):n=document.createElement(\"span\"),n.textContent=r),n}})),Prism.hooks.add(\"complete\",r)}}();\n!function(){function t(t){var e=document.createElement(\"textarea\");e.value=t.getText(),e.style.top=\"0\",e.style.left=\"0\",e.style.position=\"fixed\",document.body.appendChild(e),e.focus(),e.select();try{var o=document.execCommand(\"copy\");setTimeout((function(){o?t.success():t.error()}),1)}catch(e){setTimeout((function(){t.error(e)}),1)}document.body.removeChild(e)}\"undefined\"!=typeof Prism&&\"undefined\"!=typeof document&&(Prism.plugins.toolbar?Prism.plugins.toolbar.registerButton(\"copy-to-clipboard\",(function(e){var o=e.element,n=function(t){var e={copy:\"Copy\",\"copy-error\":\"Press Ctrl+C to copy\",\"copy-success\":\"Copied!\",\"copy-timeout\":5e3};for(var o in e){for(var n=\"data-prismjs-\"+o,c=t;c&&!c.hasAttribute(n);)c=c.parentElement;c&&(e[o]=c.getAttribute(n))}return e}(o),c=document.createElement(\"button\");c.className=\"copy-to-clipboard-button\",c.setAttribute(\"type\",\"button\");var r=document.createElement(\"span\");return c.appendChild(r),u(\"copy\"),function(e,o){e.addEventListener(\"click\",(function(){!function(e){navigator.clipboard?navigator.clipboard.writeText(e.getText()).then(e.success,(function(){t(e)})):t(e)}(o)}))}(c,{getText:function(){return o.textContent},success:function(){u(\"copy-success\"),i()},error:function(){u(\"copy-error\"),setTimeout((function(){!function(t){window.getSelection().selectAllChildren(t)}(o)}),1),i()}}),c;function i(){setTimeout((function(){u(\"copy\")}),n[\"copy-timeout\"])}function u(t){r.textContent=n[t],c.setAttribute(\"data-copy-state\",t)}})):console.warn(\"Copy to Clipboard plugin loaded before Toolbar plugin.\"))}();\n"
  },
  {
    "path": "src/staticfiles/progress_bar/bar.b8a3e8689aaa.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"bar_progress_bar\")\nclass BarProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div\n            hx-get=\"{% url 'bar_progress_bar' id=job.id %}\"\n            {% if not done %}\n            hx-trigger=\"every 600ms\"\n            {% else %}\n            hx-trigger=\"none\"\n            {% endif %}\n            hx-target=\"this\"\n            hx-swap=\"innerHTML\">\n            <div class=\"progress\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"{{ current_progress }}\" aria-labelledby=\"pblabel\">\n                <div id=\"pb\" class=\"progress-bar\" style=\"width:{{ current_progress }}%\">\n            </div>\n        </div>\n    \"\"\"\n\n    css = \"\"\"\n        .progress {\n            height: 20px;\n            margin-bottom: 20px;\n            overflow: hidden;\n            background-color: #f5f5f5;\n            border-radius: 4px;\n            box-shadow: inset 0 1px 2px rgba(0,0,0,.1);\n        }\n        .progress-bar {\n            float: left;\n            width: 0%;\n            height: 100%;\n            font-size: 12px;\n            line-height: 20px;\n            color: #fff;\n            text-align: center;\n            background-color: rgb(26 86 219);\n            -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);\n            box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);\n            -webkit-transition: width .6s ease;\n            -o-transition: width .6s ease;\n            transition: width .6s ease;\n        }\n    \"\"\"\n\n    def get_context_data(self, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return {\"job\": job, \"current_progress\": job.progress}\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        job.progress += 10\n        job.save()\n\n        context = {\n            \"job\": job,\n            \"current_progress\": job.progress,\n        }\n        headers = {}\n\n        if job.progress >= 100:\n            headers = {\"HX-Trigger\": \"done\"}\n\n        return HttpResponse(self.render(context), headers=headers)\n"
  },
  {
    "path": "src/staticfiles/progress_bar/bar.py",
    "content": "from django.http import HttpResponse\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"bar_progress_bar\")\nclass BarProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div\n            hx-get=\"{% url 'bar_progress_bar' id=job.id %}\"\n            {% if not done %}\n            hx-trigger=\"every 600ms\"\n            {% else %}\n            hx-trigger=\"none\"\n            {% endif %}\n            hx-target=\"this\"\n            hx-swap=\"innerHTML\">\n            <div class=\"progress\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"{{ current_progress }}\" aria-labelledby=\"pblabel\">\n                <div id=\"pb\" class=\"progress-bar\" style=\"width:{{ current_progress }}%\">\n            </div>\n        </div>\n    \"\"\"\n\n    css = \"\"\"\n        .progress {\n            height: 20px;\n            margin-bottom: 20px;\n            overflow: hidden;\n            background-color: #f5f5f5;\n            border-radius: 4px;\n            box-shadow: inset 0 1px 2px rgba(0,0,0,.1);\n        }\n        .progress-bar {\n            float: left;\n            width: 0%;\n            height: 100%;\n            font-size: 12px;\n            line-height: 20px;\n            color: #fff;\n            text-align: center;\n            background-color: rgb(26 86 219);\n            -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);\n            box-shadow: inset 0 -1px 0 rgba(0,0,0,.15);\n            -webkit-transition: width .6s ease;\n            -o-transition: width .6s ease;\n            transition: width .6s ease;\n        }\n    \"\"\"\n\n    def get_context_data(self, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return {\"job\": job, \"current_progress\": job.progress}\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        job.progress += 10\n        job.save()\n\n        context = {\n            \"job\": job,\n            \"current_progress\": job.progress,\n        }\n        headers = {}\n\n        if job.progress >= 100:\n            headers = {\"HX-Trigger\": \"done\"}\n\n        return HttpResponse(self.render(context), headers=headers)\n"
  },
  {
    "path": "src/staticfiles/progress_bar/start.a6c80516bd2f.py",
    "content": "from django_components import component\n\n\n@component.register(\"start_progress_bar\")\nclass StartProgressBar(component.Component):\n    template = \"\"\"\n        <div hx-target=\"this\" hx-swap=\"outerHTML\" class=\"progress-bar-div\">\n            <h3 class=\"h3 mb-2\">Start background task</h3>\n            <button class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\">    \n                Start Job \n            </button>\n        </div>\n    \"\"\"\n"
  },
  {
    "path": "src/staticfiles/progress_bar/start.py",
    "content": "from django_components import component\n\n\n@component.register(\"start_progress_bar\")\nclass StartProgressBar(component.Component):\n    template = \"\"\"\n        <div hx-target=\"this\" hx-swap=\"outerHTML\" class=\"progress-bar-div\">\n            <h3 class=\"h3 mb-2\">Start background task</h3>\n            <button class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\">    \n                Start Job \n            </button>\n        </div>\n    \"\"\"\n"
  },
  {
    "path": "src/staticfiles/progress_bar/status.11892046b39b.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"status_progress_bar\")\nclass StatusProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div class=\"progress-bar-div\" hx-trigger=\"done\" hx-get=\"{% url 'completed_progress_bar' id=job.id %}\" hx-swap=\"outerHTML\" hx-target=\"this\">\n            <h3 role=\"status\" id=\"pblabel\" tabindex=\"-1\" autofocus>\n                {% if not done %}\n                    Running\n                {% else %}\n                    Complete\n                {% endif %}\n            </h3>\n            {% component \"bar_progress_bar\" id=job.id done=done %}{% endcomponent %}{% endcomponent %}{% endcomponent %}{% endcomponent %}{% endcomponent %}\n        </div>\n        {% if done %}\n            <button id=\"restart-btn\" class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\" classes=\"add show:600ms\">\n                Restart Job\n            </button>\n        {% endif %}\n    \"\"\"\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return self.render_to_response({\"job\": job, \"done\": True})\n\n    def post(self, request, **kwargs):\n        job = Job.objects.create(progress=0)\n        return self.render_to_response({\"job\": job})\n"
  },
  {
    "path": "src/staticfiles/progress_bar/status.6f3dc147a08a.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"status_progress_bar\")\nclass StatusProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div class=\"progress-bar-div\" hx-trigger=\"done\" hx-get=\"{% url 'completed_progress_bar' id=job.id %}\" hx-swap=\"outerHTML\" hx-target=\"this\">\n            <h3 role=\"status\" id=\"pblabel\" tabindex=\"-1\" autofocus>\n                {% if not done %}\n                    Running\n                {% else %}\n                    Complete\n                {% endif %}\n            </h3>\n            {% component \"bar_progress_bar\" id=job.id done=done %}\n        </div>\n        {% if done %}\n            <button id=\"restart-btn\" class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\" classes=\"add show:600ms\">\n                Restart Job\n            </button>\n        {% endif %}\n    \"\"\"\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return self.render_to_response({\"job\": job, \"done\": True})\n\n    def post(self, request, **kwargs):\n        job = Job.objects.create(progress=0)\n        return self.render_to_response({\"job\": job})\n"
  },
  {
    "path": "src/staticfiles/progress_bar/status.8ddef869643a.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"status_progress_bar\")\nclass StatusProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div class=\"progress-bar-div\" hx-trigger=\"done\" hx-get=\"{% url 'completed_progress_bar' id=job.id %}\" hx-swap=\"outerHTML\" hx-target=\"this\">\n            <h3 role=\"status\" id=\"pblabel\" tabindex=\"-1\" autofocus>\n                {% if not done %}\n                    Running\n                {% else %}\n                    Complete\n                {% endif %}\n            </h3>\n            {% component \"bar_progress_bar\" id=job.id done=done %}{% endcomponent %}\n        </div>\n        {% if done %}\n            <button id=\"restart-btn\" class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\" classes=\"add show:600ms\">\n                Restart Job\n            </button>\n        {% endif %}\n    \"\"\"\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return self.render_to_response({\"job\": job, \"done\": True})\n\n    def post(self, request, **kwargs):\n        job = Job.objects.create(progress=0)\n        return self.render_to_response({\"job\": job})\n"
  },
  {
    "path": "src/staticfiles/progress_bar/status.py",
    "content": "from typing import Any, Dict\nfrom django_components import component\nfrom app.models import Job\n\n\n@component.register(\"status_progress_bar\")\nclass StatusProgressBarComponent(component.Component):\n    template = \"\"\"\n        <div class=\"progress-bar-div\" hx-trigger=\"done\" hx-get=\"{% url 'completed_progress_bar' id=job.id %}\" hx-swap=\"outerHTML\" hx-target=\"this\">\n            <h3 role=\"status\" id=\"pblabel\" tabindex=\"-1\" autofocus>\n                {% if not done %}\n                    Running\n                {% else %}\n                    Complete\n                {% endif %}\n            </h3>\n            {% component \"bar_progress_bar\" id=job.id done=done %}{% endcomponent %}\n        </div>\n        {% if done %}\n            <button id=\"restart-btn\" class=\"btn-primary\" hx-post=\"{% url 'start_progress_bar' %}\" classes=\"add show:600ms\">\n                Restart Job\n            </button>\n        {% endif %}\n    \"\"\"\n\n    def get(self, request, id, **kwargs):\n        job = Job.objects.get(id=id)\n        return self.render_to_response({\"job\": job, \"done\": True})\n\n    def post(self, request, **kwargs):\n        job = Job.objects.create(progress=0)\n        return self.render_to_response({\"job\": job})\n"
  },
  {
    "path": "src/staticfiles/progress_bar/urls.d84e7c811b76.py",
    "content": "from django.urls import path\n\nfrom components.progress_bar.bar import BarProgressBarComponent\nfrom components.progress_bar.status import StatusProgressBarComponent\n\n\nurlpatterns = [\n    path(\n        \"start/\",\n        StatusProgressBarComponent.as_view(),\n        name=\"start_progress_bar\",\n    ),\n    path(\n        \"job/<int:id>/completed\",\n        StatusProgressBarComponent.as_view(),\n        name=\"completed_progress_bar\",\n    ),\n    path(\n        \"job/<int:id>/progress\",\n        BarProgressBarComponent.as_view(),\n        name=\"bar_progress_bar\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/progress_bar/urls.py",
    "content": "from django.urls import path\n\nfrom components.progress_bar.bar import BarProgressBarComponent\nfrom components.progress_bar.status import StatusProgressBarComponent\n\n\nurlpatterns = [\n    path(\n        \"start/\",\n        StatusProgressBarComponent.as_view(),\n        name=\"start_progress_bar\",\n    ),\n    path(\n        \"job/<int:id>/completed\",\n        StatusProgressBarComponent.as_view(),\n        name=\"completed_progress_bar\",\n    ),\n    path(\n        \"job/<int:id>/progress\",\n        BarProgressBarComponent.as_view(),\n        name=\"bar_progress_bar\",\n    ),\n]\n"
  },
  {
    "path": "src/staticfiles/progress_bar.a39ec01f4c8b.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component_block \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"start_progress_bar\" %}\n        {% endfill %}\n    {% endcomponent_block \"component_tabs\" %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/progress_bar.c363aeb6fcab.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"start_progress_bar\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/progress_bar.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"start_progress_bar\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/staticfiles/sse.d41d8cd98f00.js",
    "content": ""
  },
  {
    "path": "src/staticfiles/sse.js",
    "content": ""
  },
  {
    "path": "src/staticfiles/staticfiles.json",
    "content": "{\"paths\": {\"admin/js/vendor/select2/i18n/pt.js\": \"admin/js/vendor/select2/i18n/pt.33b4a3b44d43.js\", \"admin/js/vendor/select2/i18n/hsb.js\": \"admin/js/vendor/select2/i18n/hsb.fa3b55265efe.js\", \"admin/js/vendor/select2/i18n/vi.js\": \"admin/js/vendor/select2/i18n/vi.097a5b75b3e1.js\", \"admin/js/vendor/select2/i18n/lv.js\": \"admin/js/vendor/select2/i18n/lv.08e62128eac1.js\", \"admin/js/vendor/select2/i18n/gl.js\": \"admin/js/vendor/select2/i18n/gl.d99b1fedaa86.js\", \"admin/js/vendor/select2/i18n/pl.js\": \"admin/js/vendor/select2/i18n/pl.6031b4f16452.js\", \"admin/js/vendor/select2/i18n/el.js\": \"admin/js/vendor/select2/i18n/el.27097f071856.js\", \"admin/js/vendor/select2/i18n/dsb.js\": \"admin/js/vendor/select2/i18n/dsb.56372c92d2f1.js\", \"admin/js/vendor/select2/i18n/et.js\": \"admin/js/vendor/select2/i18n/et.2b96fd98289d.js\", \"admin/js/vendor/select2/i18n/is.js\": \"admin/js/vendor/select2/i18n/is.3ddd9a6a97e9.js\", \"admin/js/vendor/select2/i18n/sl.js\": \"admin/js/vendor/select2/i18n/sl.131a78bc0752.js\", \"admin/js/vendor/select2/i18n/ko.js\": \"admin/js/vendor/select2/i18n/ko.e7be6c20e673.js\", \"admin/js/vendor/select2/i18n/hr.js\": \"admin/js/vendor/select2/i18n/hr.a2b092cc1147.js\", \"admin/js/vendor/select2/i18n/ms.js\": \"admin/js/vendor/select2/i18n/ms.4ba82c9a51ce.js\", \"admin/js/vendor/select2/i18n/fi.js\": \"admin/js/vendor/select2/i18n/fi.614ec42aa9ba.js\", \"admin/js/vendor/select2/i18n/th.js\": \"admin/js/vendor/select2/i18n/th.f38c20b0221b.js\", \"admin/js/vendor/select2/i18n/ru.js\": \"admin/js/vendor/select2/i18n/ru.934aa95f5b5f.js\", \"admin/js/vendor/select2/i18n/eu.js\": \"admin/js/vendor/select2/i18n/eu.adfe5c97b72c.js\", \"admin/js/vendor/select2/i18n/mk.js\": \"admin/js/vendor/select2/i18n/mk.dabbb9087130.js\", \"admin/js/vendor/select2/i18n/sq.js\": \"admin/js/vendor/select2/i18n/sq.5636b60d29c9.js\", \"admin/js/vendor/select2/i18n/ja.js\": \"admin/js/vendor/select2/i18n/ja.170ae885d74f.js\", \"admin/js/vendor/select2/i18n/ka.js\": \"admin/js/vendor/select2/i18n/ka.2083264a54f0.js\", \"admin/js/vendor/select2/i18n/he.js\": \"admin/js/vendor/select2/i18n/he.e420ff6cd3ed.js\", \"admin/js/vendor/select2/i18n/bg.js\": \"admin/js/vendor/select2/i18n/bg.39b8be30d4f0.js\", \"admin/js/vendor/select2/i18n/hy.js\": \"admin/js/vendor/select2/i18n/hy.c7babaeef5a6.js\", \"admin/js/vendor/select2/i18n/sr-Cyrl.js\": \"admin/js/vendor/select2/i18n/sr-Cyrl.f254bb8c4c7c.js\", \"admin/js/vendor/select2/i18n/ne.js\": \"admin/js/vendor/select2/i18n/ne.3d79fd3f08db.js\", \"admin/js/vendor/select2/i18n/af.js\": \"admin/js/vendor/select2/i18n/af.4f6fcd73488c.js\", \"admin/js/vendor/select2/i18n/id.js\": \"admin/js/vendor/select2/i18n/id.04debded514d.js\", \"admin/js/vendor/select2/i18n/az.js\": \"admin/js/vendor/select2/i18n/az.270c257daf81.js\", \"admin/js/vendor/select2/i18n/ca.js\": \"admin/js/vendor/select2/i18n/ca.a166b745933a.js\", \"admin/js/vendor/select2/i18n/nb.js\": \"admin/js/vendor/select2/i18n/nb.da2fce143f27.js\", \"admin/js/vendor/select2/i18n/zh-CN.js\": \"admin/js/vendor/select2/i18n/zh-CN.2cff662ec5f9.js\", \"admin/js/vendor/select2/i18n/zh-TW.js\": \"admin/js/vendor/select2/i18n/zh-TW.04554a227c2b.js\", \"admin/js/vendor/select2/i18n/pt-BR.js\": \"admin/js/vendor/select2/i18n/pt-BR.e1b294433e7f.js\", \"admin/js/vendor/select2/i18n/da.js\": \"admin/js/vendor/select2/i18n/da.766346afe4dd.js\", \"admin/js/vendor/select2/i18n/fa.js\": \"admin/js/vendor/select2/i18n/fa.3b5bd1961cfd.js\", \"admin/js/vendor/select2/i18n/de.js\": \"admin/js/vendor/select2/i18n/de.8a1c222b0204.js\", \"admin/js/vendor/select2/i18n/en.js\": \"admin/js/vendor/select2/i18n/en.cf932ba09a98.js\", \"admin/js/vendor/select2/i18n/bs.js\": \"admin/js/vendor/select2/i18n/bs.91624382358e.js\", \"admin/js/vendor/select2/i18n/tk.js\": \"admin/js/vendor/select2/i18n/tk.7c572a68c78f.js\", \"admin/js/vendor/select2/i18n/sv.js\": \"admin/js/vendor/select2/i18n/sv.7a9c2f71e777.js\", \"admin/js/vendor/select2/i18n/hi.js\": \"admin/js/vendor/select2/i18n/hi.70640d41628f.js\", \"admin/js/vendor/select2/i18n/uk.js\": \"admin/js/vendor/select2/i18n/uk.8cede7f4803c.js\", \"admin/js/vendor/select2/i18n/cs.js\": \"admin/js/vendor/select2/i18n/cs.4f43e8e7d33a.js\", \"admin/js/vendor/select2/i18n/km.js\": \"admin/js/vendor/select2/i18n/km.c23089cb06ca.js\", \"admin/js/vendor/select2/i18n/fr.js\": \"admin/js/vendor/select2/i18n/fr.05e0542fcfe6.js\", \"admin/js/vendor/select2/i18n/nl.js\": \"admin/js/vendor/select2/i18n/nl.997868a37ed8.js\", \"admin/js/vendor/select2/i18n/sr.js\": \"admin/js/vendor/select2/i18n/sr.5ed85a48f483.js\", \"admin/js/vendor/select2/i18n/hu.js\": \"admin/js/vendor/select2/i18n/hu.6ec6039cb8a3.js\", \"admin/js/vendor/select2/i18n/lt.js\": \"admin/js/vendor/select2/i18n/lt.23c7ce903300.js\", \"admin/js/vendor/select2/i18n/ar.js\": \"admin/js/vendor/select2/i18n/ar.65aa8e36bf5d.js\", \"admin/js/vendor/select2/i18n/sk.js\": \"admin/js/vendor/select2/i18n/sk.33d02cef8d11.js\", \"admin/js/vendor/select2/i18n/it.js\": \"admin/js/vendor/select2/i18n/it.be4fe8d365b5.js\", \"admin/js/vendor/select2/i18n/es.js\": \"admin/js/vendor/select2/i18n/es.66dbc2652fb1.js\", \"admin/js/vendor/select2/i18n/bn.js\": \"admin/js/vendor/select2/i18n/bn.6d42b4dd5665.js\", \"admin/js/vendor/select2/i18n/ro.js\": \"admin/js/vendor/select2/i18n/ro.f75cb460ec3b.js\", \"admin/js/vendor/select2/i18n/ps.js\": \"admin/js/vendor/select2/i18n/ps.38dfa47af9e0.js\", \"admin/js/vendor/select2/i18n/tr.js\": \"admin/js/vendor/select2/i18n/tr.b5a0643d1545.js\", \"admin/css/vendor/select2/select2.min.css\": \"admin/css/vendor/select2/select2.min.9f54e6414f87.css\", \"admin/css/vendor/select2/LICENSE-SELECT2.md\": \"admin/css/vendor/select2/LICENSE-SELECT2.f94142512c91.md\", \"admin/css/vendor/select2/select2.css\": \"admin/css/vendor/select2/select2.a2194c262648.css\", \"admin/js/vendor/jquery/jquery.min.js\": \"admin/js/vendor/jquery/jquery.min.2c872dbe60f4.js\", \"admin/js/vendor/jquery/LICENSE.txt\": \"admin/js/vendor/jquery/LICENSE.de877aa6d744.txt\", \"admin/js/vendor/jquery/jquery.js\": \"admin/js/vendor/jquery/jquery.12e87d2f3a4c.js\", \"admin/js/vendor/xregexp/xregexp.min.js\": \"admin/js/vendor/xregexp/xregexp.min.f1ae4617847c.js\", \"admin/js/vendor/xregexp/xregexp.js\": \"admin/js/vendor/xregexp/xregexp.a7e08b0ce686.js\", \"admin/js/vendor/xregexp/LICENSE.txt\": \"admin/js/vendor/xregexp/LICENSE.b6fd2ceea8d3.txt\", \"admin/js/vendor/select2/LICENSE.md\": \"admin/js/vendor/select2/LICENSE.f94142512c91.md\", \"admin/js/vendor/select2/select2.full.min.js\": \"admin/js/vendor/select2/select2.full.min.fcd7500d8e13.js\", \"admin/js/vendor/select2/select2.full.js\": \"admin/js/vendor/select2/select2.full.c2afdeda3058.js\", \"admin/js/admin/RelatedObjectLookups.js\": \"admin/js/admin/RelatedObjectLookups.ef211845e458.js\", \"admin/js/admin/DateTimeShortcuts.js\": \"admin/js/admin/DateTimeShortcuts.9f6e209cebca.js\", \"admin/img/gis/move_vertex_on.svg\": \"admin/img/gis/move_vertex_on.0047eba25b67.svg\", \"admin/img/gis/move_vertex_off.svg\": \"admin/img/gis/move_vertex_off.7a23bf31ef8a.svg\", \"inline_validation/__pycache__/input_inline_validation.cpython-310.pyc\": \"inline_validation/__pycache__/input_inline_validation.cpython-310.fde76afd31f0.pyc\", \"inline_validation/__pycache__/form.cpython-310.pyc\": \"inline_validation/__pycache__/form.cpython-310.4f9dc37fb399.pyc\", \"inline_validation/__pycache__/urls.cpython-310.pyc\": \"inline_validation/__pycache__/urls.cpython-310.4485deabe9f2.pyc\", \"inline_validation/__pycache__/forms.cpython-310.pyc\": \"inline_validation/__pycache__/forms.cpython-310.ac488996ec87.pyc\", \"inline_validation/__pycache__/input.cpython-310.pyc\": \"inline_validation/__pycache__/input.cpython-310.b8b3d97dc1ba.pyc\", \"progress_bar/__pycache__/urls.cpython-310.pyc\": \"progress_bar/__pycache__/urls.cpython-310.bff57366ea9c.pyc\", \"progress_bar/__pycache__/bar.cpython-310.pyc\": \"progress_bar/__pycache__/bar.cpython-310.2f494077a300.pyc\", \"progress_bar/__pycache__/status.cpython-310.pyc\": \"progress_bar/__pycache__/status.cpython-310.88b01fc6f8a9.pyc\", \"progress_bar/__pycache__/start.cpython-310.pyc\": \"progress_bar/__pycache__/start.cpython-310.915b1e958d9b.pyc\", \"cascading_selects/__pycache__/urls.cpython-310.pyc\": \"cascading_selects/__pycache__/urls.cpython-310.216795b6d1be.pyc\", \"cascading_selects/__pycache__/select.cpython-310.pyc\": \"cascading_selects/__pycache__/select.cpython-310.f7042648d83c.pyc\", \"cascading_selects/__pycache__/parent_select.cpython-310.pyc\": \"cascading_selects/__pycache__/parent_select.cpython-310.798f3be582fe.pyc\", \"component_tabs/__pycache__/component_tabs.cpython-310.pyc\": \"component_tabs/__pycache__/component_tabs.cpython-310.058a7dde9685.pyc\", \"click_to_load/__pycache__/urls.cpython-310.pyc\": \"click_to_load/__pycache__/urls.cpython-310.e5fa56b1855b.pyc\", \"click_to_load/__pycache__/table.cpython-310.pyc\": \"click_to_load/__pycache__/table.cpython-310.2c01ce02f149.pyc\", \"click_to_load/__pycache__/tbody.cpython-310.pyc\": \"click_to_load/__pycache__/tbody.cpython-310.ee53e464ab63.pyc\", \"click_to_load/__pycache__/wrapper.cpython-310.pyc\": \"click_to_load/__pycache__/wrapper.cpython-310.c114d402bcb4.pyc\", \"click_to_load/__pycache__/__init__.cpython-310.pyc\": \"click_to_load/__pycache__/__init__.cpython-310.94420d6a24bb.pyc\", \"infinite_scroll/__pycache__/row.cpython-310.pyc\": \"infinite_scroll/__pycache__/row.cpython-310.074f4cc835a9.pyc\", \"infinite_scroll/__pycache__/urls.cpython-310.pyc\": \"infinite_scroll/__pycache__/urls.cpython-310.e0cba83ad131.pyc\", \"infinite_scroll/__pycache__/table.cpython-310.pyc\": \"infinite_scroll/__pycache__/table.cpython-310.cb113a0dd9e3.pyc\", \"infinite_scroll/__pycache__/tbody.cpython-310.pyc\": \"infinite_scroll/__pycache__/tbody.cpython-310.2598cf0d61ca.pyc\", \"bulk_update/__pycache__/urls.cpython-310.pyc\": \"bulk_update/__pycache__/urls.cpython-310.54f4b6d5cf47.pyc\", \"bulk_update/__pycache__/table.cpython-310.pyc\": \"bulk_update/__pycache__/table.cpython-310.e8ff956c5112.pyc\", \"bulk_update/__pycache__/tbody.cpython-310.pyc\": \"bulk_update/__pycache__/tbody.cpython-310.480d624e5be1.pyc\", \"bulk_update/__pycache__/wrapper.cpython-310.pyc\": \"bulk_update/__pycache__/wrapper.cpython-310.99d0793a5add.pyc\", \"active_search/__pycache__/search_input.cpython-310.pyc\": \"active_search/__pycache__/search_input.cpython-310.db457b53e1a4.pyc\", \"active_search/__pycache__/urls.cpython-310.pyc\": \"active_search/__pycache__/urls.cpython-310.b9cf824c5835.pyc\", \"active_search/__pycache__/table.cpython-310.pyc\": \"active_search/__pycache__/table.cpython-310.89ca9e54c26f.pyc\", \"active_search/__pycache__/tbody.cpython-310.pyc\": \"active_search/__pycache__/tbody.cpython-310.8ddd91f50fa6.pyc\", \"active_search/__pycache__/input.cpython-310.pyc\": \"active_search/__pycache__/input.cpython-310.de8c089ff61f.pyc\", \"edit_row/__pycache__/row.cpython-310.pyc\": \"edit_row/__pycache__/row.cpython-310.db1e7c4d6fe0.pyc\", \"edit_row/__pycache__/urls.cpython-310.pyc\": \"edit_row/__pycache__/urls.cpython-310.7bb6c87713a2.pyc\", \"edit_row/__pycache__/table.cpython-310.pyc\": \"edit_row/__pycache__/table.cpython-310.c18a8eb35f54.pyc\", \"admin/css/widgets.css\": \"admin/css/widgets.8a70ea6d8850.css\", \"admin/css/dark_mode.css\": \"admin/css/dark_mode.e18e9a052429.css\", \"admin/css/login.css\": \"admin/css/login.586129c60a93.css\", \"admin/css/dashboard.css\": \"admin/css/dashboard.e90f2068217b.css\", \"admin/css/nav_sidebar.css\": \"admin/css/nav_sidebar.dd925738f4cc.css\", \"admin/css/responsive.css\": \"admin/css/responsive.eafb93ff084c.css\", \"admin/css/autocomplete.css\": \"admin/css/autocomplete.4a81fc4242d0.css\", \"admin/css/responsive_rtl.css\": \"admin/css/responsive_rtl.7d1130848605.css\", \"admin/css/forms.css\": \"admin/css/forms.b29a0c8c9155.css\", \"admin/css/rtl.css\": \"admin/css/rtl.aa92d763340b.css\", \"admin/css/base.css\": \"admin/css/base.9f65b5cd54b3.css\", \"admin/css/changelists.css\": \"admin/css/changelists.47cb433b29d4.css\", \"admin/js/urlify.js\": \"admin/js/urlify.ae970a820212.js\", \"admin/js/core.js\": \"admin/js/core.7e257fdf56dc.js\", \"admin/js/collapse.js\": \"admin/js/collapse.f84e7410290f.js\", \"admin/js/actions.js\": \"admin/js/actions.867b023a736d.js\", \"admin/js/prepopulate.js\": \"admin/js/prepopulate.bd2361dfd64d.js\", \"admin/js/cancel.js\": \"admin/js/cancel.ecc4c5ca7b32.js\", \"admin/js/theme.js\": \"admin/js/theme.ab270f56bb9c.js\", \"admin/js/nav_sidebar.js\": \"admin/js/nav_sidebar.3b9190d420b1.js\", \"admin/js/autocomplete.js\": \"admin/js/autocomplete.01591ab27be7.js\", \"admin/js/inlines.js\": \"admin/js/inlines.22d4d93c00b4.js\", \"admin/js/change_form.js\": \"admin/js/change_form.9d8ca4f96b75.js\", \"admin/js/filters.js\": \"admin/js/filters.0e360b7a9f80.js\", \"admin/js/SelectFilter2.js\": \"admin/js/SelectFilter2.b8cf7343ff9e.js\", \"admin/js/jquery.init.js\": \"admin/js/jquery.init.b7781a0897fc.js\", \"admin/js/popup_response.js\": \"admin/js/popup_response.c6cc78ea5551.js\", \"admin/js/SelectBox.js\": \"admin/js/SelectBox.7d3ce5a98007.js\", \"admin/js/calendar.js\": \"admin/js/calendar.d64496bbf46d.js\", \"admin/js/prepopulate_init.js\": \"admin/js/prepopulate_init.6cac7f3105b8.js\", \"admin/img/search.svg\": \"admin/img/search.7cf54ff789c6.svg\", \"admin/img/icon-calendar.svg\": \"admin/img/icon-calendar.ac7aea671bea.svg\", \"admin/img/icon-clock.svg\": \"admin/img/icon-clock.e1d4dfac3f2b.svg\", \"admin/img/icon-hidelink.svg\": \"admin/img/icon-hidelink.8d245a995e18.svg\", \"admin/img/icon-no.svg\": \"admin/img/icon-no.439e821418cd.svg\", \"admin/img/tooltag-add.svg\": \"admin/img/tooltag-add.e59d620a9742.svg\", \"admin/img/inline-delete.svg\": \"admin/img/inline-delete.fec1b761f254.svg\", \"admin/img/LICENSE\": \"admin/img/LICENSE.2c54f4e1ca1c\", \"admin/img/icon-changelink.svg\": \"admin/img/icon-changelink.18d2fd706348.svg\", \"admin/img/icon-unknown.svg\": \"admin/img/icon-unknown.a18cb4398978.svg\", \"admin/img/sorting-icons.svg\": \"admin/img/sorting-icons.3a097b59f104.svg\", \"admin/img/icon-viewlink.svg\": \"admin/img/icon-viewlink.41eb31f7826e.svg\", \"admin/img/icon-yes.svg\": \"admin/img/icon-yes.d2f9f035226a.svg\", \"admin/img/icon-addlink.svg\": \"admin/img/icon-addlink.d519b3bab011.svg\", \"admin/img/icon-unknown-alt.svg\": \"admin/img/icon-unknown-alt.81536e128bb6.svg\", \"admin/img/icon-deletelink.svg\": \"admin/img/icon-deletelink.564ef9dc3854.svg\", \"admin/img/README.txt\": \"admin/img/README.a70711a38d87.txt\", \"admin/img/selector-icons.svg\": \"admin/img/selector-icons.b4555096cea2.svg\", \"admin/img/calendar-icons.svg\": \"admin/img/calendar-icons.39b290681a8b.svg\", \"admin/img/tooltag-arrowright.svg\": \"admin/img/tooltag-arrowright.bbfb788a849e.svg\", \"admin/img/icon-alert.svg\": \"admin/img/icon-alert.034cc7d8a67f.svg\", \"inline_validation/forms.py\": \"inline_validation/forms.fdf8f5825f8b.py\", \"inline_validation/form.py\": \"inline_validation/form.17ae9d61f48e.py\", \"inline_validation/input.py\": \"inline_validation/input.1fc6025d3995.py\", \"inline_validation/urls.py\": \"inline_validation/urls.1c76c74c8dfb.py\", \"progress_bar/start.py\": \"progress_bar/start.a6c80516bd2f.py\", \"progress_bar/bar.py\": \"progress_bar/bar.b8a3e8689aaa.py\", \"progress_bar/urls.py\": \"progress_bar/urls.d84e7c811b76.py\", \"progress_bar/status.py\": \"progress_bar/status.8ddef869643a.py\", \"cascading_selects/parent_select.py\": \"cascading_selects/parent_select.663100c7b50f.py\", \"cascading_selects/select.py\": \"cascading_selects/select.158aa777d411.py\", \"cascading_selects/urls.py\": \"cascading_selects/urls.cf66c75263f5.py\", \"component_tabs/component_tabs.css\": \"component_tabs/component_tabs.4c76e3fe56f0.css\", \"component_tabs/component_tabs.py\": \"component_tabs/component_tabs.25ef95b81a22.py\", \"component_tabs/component_tabs.html\": \"component_tabs/component_tabs.28d0d597d814.html\", \"component_tabs/component_tabs.js\": \"component_tabs/component_tabs.f3bd68dc790a.js\", \"click_to_load/tbody.py\": \"click_to_load/tbody.e59bf7e3e1be.py\", \"click_to_load/table.py\": \"click_to_load/table.0b1bb8bf7c91.py\", \"click_to_load/urls.py\": \"click_to_load/urls.b6ab5fb54fd4.py\", \"__pycache__/input_inline_validation.cpython-310.pyc\": \"__pycache__/input_inline_validation.cpython-310.47be9349d1ed.pyc\", \"__pycache__/bulk_update.cpython-310.pyc\": \"__pycache__/bulk_update.cpython-310.0ec834adf88e.pyc\", \"__pycache__/icon_button.cpython-310.pyc\": \"__pycache__/icon_button.cpython-310.147dc4b5012f.pyc\", \"__pycache__/delete_row.cpython-310.pyc\": \"__pycache__/delete_row.cpython-310.e5c2766f1fb1.pyc\", \"__pycache__/views_urls.cpython-310.pyc\": \"__pycache__/views_urls.cpython-310.ec4bd020cb50.pyc\", \"__pycache__/urls.cpython-310.pyc\": \"__pycache__/urls.cpython-310.e9f499766067.pyc\", \"__pycache__/edit_row.cpython-310.pyc\": \"__pycache__/edit_row.cpython-310.6564a3786c38.pyc\", \"__pycache__/abstract_button.cpython-310.pyc\": \"__pycache__/abstract_button.cpython-310.6695279171ae.pyc\", \"__pycache__/click_to_edit.cpython-310.pyc\": \"__pycache__/click_to_edit.cpython-310.d1ec510bc094.pyc\", \"__pycache__/stateless_counter.cpython-310.pyc\": \"__pycache__/stateless_counter.cpython-310.1647a6bf630d.pyc\", \"__pycache__/__init__.cpython-310.pyc\": \"__pycache__/__init__.cpython-310.2848769a4099.pyc\", \"infinite_scroll/tbody.py\": \"infinite_scroll/tbody.889ea8380c38.py\", \"infinite_scroll/table.py\": \"infinite_scroll/table.c757f118a80a.py\", \"infinite_scroll/urls.py\": \"infinite_scroll/urls.2119b85fae27.py\", \"bulk_update/tbody.py\": \"bulk_update/tbody.0b798d7e4a5e.py\", \"bulk_update/table.py\": \"bulk_update/table.19dbdd92634b.py\", \"bulk_update/urls.py\": \"bulk_update/urls.4e760d1714af.py\", \"active_search/tbody.py\": \"active_search/tbody.46fe860010d3.py\", \"active_search/input.py\": \"active_search/input.0d7f732a97de.py\", \"active_search/urls.py\": \"active_search/urls.69d1718169f9.py\", \"edit_row/table.py\": \"edit_row/table.49d751742877.py\", \"edit_row/row.py\": \"edit_row/row.101ee2e30322.py\", \"edit_row/urls.py\": \"edit_row/urls.afbd9697c969.py\", \"delete_row.py\": \"delete_row.08dbca324200.py\", \"__init__.py\": \"__init__.d41d8cd98f00.py\", \"click_to_edit.py\": \"click_to_edit.e860a5aa4d24.py\", \"urls.py\": \"urls.ed747cf49aae.py\", \"preload.js\": \"preload.738a4657614c.js\", \"prism.js\": \"prism.167e3bcdc317.js\", \"favicon.ico\": \"favicon.b4d7bab7c61b.ico\", \"sse.js\": \"sse.d41d8cd98f00.js\", \"htmx.min.js\": \"htmx.min.23806a07aa01.js\", \"flowbite.min.js\": \"flowbite.min.7c2b54dea4b1.js\", \"prism.css\": \"prism.1598ec91cbbd.css\", \"style.css\": \"style.a787112a42a1.css\", \"spinner.svg\": \"spinner.f8d00b0ef459.svg\", \"ws.js\": \"ws.d96b2cd51173.js\", \"done.svg\": \"done.a475d59ea779.svg\", \"flowbite.min.js.map\": \"flowbite.min.js.7cc182285771.map\", \"formal-invitation.svg\": \"formal-invitation.adee0d9eebd8.svg\", \"delete_row.html\": \"delete_row.65b5c6777191.html\", \"edit_row.html\": \"edit_row.f0b2badf8c40.html\", \"progress_bar.html\": \"progress_bar.c363aeb6fcab.html\", \"bulk_update.html\": \"bulk_update.3010cd02c183.html\", \"click_to_edit.html\": \"click_to_edit.8084c1fdc479.html\", \"infinite_scroll.html\": \"infinite_scroll.557f08f53b4d.html\", \"index.html\": \"index.c8db3aff394f.html\", \"active_search.html\": \"active_search.78decbf8ff19.html\", \"click_to_load.html\": \"click_to_load.5b3914747c41.html\", \"inline_validation.html\": \"inline_validation.180c06390895.html\", \"_base.html\": \"_base.51249b9b3e6d.html\", \"cascading_selects.html\": \"cascading_selects.6609b643d2c7.html\", \"django-htmx.js\": \"django-htmx.b395a6831ba0.js\"}, \"version\": \"1.1\", \"hash\": \"19a1877d7f30\"}"
  },
  {
    "path": "src/staticfiles/style.8907c8ae0e4d.css",
    "content": "/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:after,[data-popper-arrow]:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:after,[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 10 6'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}:is([dir=rtl]) select:not([size]){background-position:left .75rem center;padding-right:.75rem;padding-left:0}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark [type=checkbox]:checked,.dark [type=radio]:checked,[type=checkbox]:checked,[type=radio]:checked{border-color:#0000;background-color:currentColor;background-size:.55em .55em;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.dark [type=radio]:checked,[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\");background-size:1em 1em}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[type=checkbox]:indeterminate,[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;margin-inline-start:-1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}:is([dir=rtl]) input[type=file]::file-selector-button{padding-right:2rem;padding-left:1rem}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1px;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}.toggle-bg:after{content:\"\";position:absolute;top:.125rem;left:.125rem;background:#fff;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translateX(100%);;border-color:#fff}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3f83f880;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.apexcharts-canvas .apexcharts-tooltip{background-color:#fff;color:#6b7280;border:0!important;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-tooltip{background-color:#374151;color:#9ca3af;border-color:#0000;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{padding:.5rem .75rem;margin-bottom:.75rem;background-color:#f3f4f6;border-bottom-color:#e5e7eb;font-size:.875rem!important;font-weight:400;color:#6b7280}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{background-color:#4b5563;border-color:#6b7280;color:#9ca3af}.apexcharts-canvas .apexcharts-xaxistooltip{color:#6b7280;padding:.5rem .75rem;border-color:#0000;background-color:#fff;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-xaxistooltip{color:#9ca3af;background-color:#374151}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#6b7280;font-size:.875rem}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#9ca3af}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#111827;font-size:.875rem}:is([dir=rtl]) .apexcharts-tooltip .apexcharts-tooltip-marker{margin-right:0;margin-left:e}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip-text{font-weight:400;font-size:.875rem!important}.apexcharts-canvas .apexcharts-xaxistooltip:after,.apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip:after{border-width:8px;margin-left:-8px}.apexcharts-canvas .apexcharts-xaxistooltip:before{border-width:10px;margin-left:-10px}.dark .apexcharts-canvas .apexcharts-xaxistooltip:after,.dark .apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#374151}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-y-group{padding:0}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{padding-left:.75rem;padding-right:.75rem;padding-bottom:.75rem;background-color:#fff!important;color:#6b7280!important}.dark .apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{background-color:#374151!important;color:#9ca3af!important}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active:first-of-type{padding-top:.75rem}.apexcharts-canvas .apexcharts-legend{padding:0!important}.apexcharts-canvas .apexcharts-legend-text{font-size:.75rem;font-weight:500!important;padding-left:1.25rem;color:#6b7280!important}:is([dir=rtl]) .apexcharts-canvas .apexcharts-legend-text{padding-right:.5rem}.apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#111827!important}.dark .apexcharts-canvas .apexcharts-legend-text{color:#9ca3af!important}.dark .apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#fff!important}.apexcharts-canvas .apexcharts-legend-series{margin-left:.5rem;margin-right:.5rem;margin-bottom:.25rem!important;display:flex;align-items:center}.apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#111827!important;font-size:1.875rem;font-weight:700}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#fff!important}.apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#6b7280!important;font-size:1rem;font-weight:400}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#9ca3af!important}.apexcharts-canvas .apexcharts-datalabels .apexcharts-text.apexcharts-pie-label{font-size:.75rem!important;font-weight:600!important;text-shadow:none!important;filter:none!important}.apexcharts-gridline,.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{stroke:#e5e7eb!important}.dark .apexcharts-gridline,.dark .apexcharts-xcrosshairs,.dark .apexcharts-ycrosshairs{stroke:#374151!important}.format{color:var(--tw-format-body);max-width:65ch}.format :where([class~=lead]):not(:where([class~=not-format] *)){color:var(--tw-format-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.format :where(a):not(:where([class~=not-format] *)){color:var(--tw-format-links);text-decoration:underline;font-weight:500}.format :where(a):not(:where([class~=not-format] *)):hover{text-decoration:none}.format :where(strong):not(:where([class~=not-format] *)){color:var(--tw-format-bold);font-weight:700}.format :where(a strong):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote strong):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th strong):not(:where([class~=not-format] *)){color:inherit}.format :where(ol):not(:where([class~=not-format] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol[type=A]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=A s]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a s]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=I]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=I s]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i s]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=\"1\"]):not(:where([class~=not-format] *)){list-style-type:decimal}.format :where(ul):not(:where([class~=not-format] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol>li):not(:where([class~=not-format] *))::marker{font-weight:400;color:var(--tw-format-counters)}.format :where(ul>li):not(:where([class~=not-format] *))::marker{color:var(--tw-format-bullets)}.format :where(hr):not(:where([class~=not-format] *)){border-color:var(--tw-format-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.format :where(blockquote):not(:where([class~=not-format] *)){font-size:1.1111111em;font-weight:700;font-style:italic;color:var(--tw-format-quotes);quotes:\"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";margin-bottom:1.6em}.format :where(blockquote):not(:where([class~=not-format] *)):before{content:\"\";background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='24' fill='none'%3E%3Cpath fill='%239CA3AF' d='M18.69 24v-9.855C18.69 6.54 23.663 1.385 30.666 0l1.326 2.868c-3.242 1.223-5.326 4.85-5.326 7.799H32V24H18.69ZM0 24v-9.855C0 6.54 4.997 1.384 12 0l1.328 2.868C10.084 4.091 8 7.718 8 10.667h5.31V24H0Z'/%3E%3C/svg%3E\");background-repeat:no-repeat;color:var(--tw-format-quotes);width:1.7777778em;height:1.3333333em;display:block;margin-top:1.6em}.format :where(blockquote p:first-of-type):not(:where([class~=not-format] *)):before{content:open-quote}.format :where(blockquote p:last-of-type):not(:where([class~=not-format] *)):after{content:close-quote}.format :where(h1):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.format :where(h1 strong):not(:where([class~=not-format] *)){font-weight:900;color:inherit}.format :where(h2):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.5em;margin-top:0;margin-bottom:1em;line-height:1.3333333}.format :where(h2 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h3):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.25em;margin-top:0;margin-bottom:.6em;line-height:1.6}.format :where(h3 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h4):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;margin-top:0;margin-bottom:.5em;line-height:1.5}.format :where(h4 strong):not(:where([class~=not-format] *)){font-weight:700;color:inherit}.format :where(img):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.format :where(figcaption):not(:where([class~=not-format] *)){color:var(--tw-format-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.format :where(code):not(:where([class~=not-format] *)){color:var(--tw-format-code);font-weight:600;background-color:var(--tw-format-code-bg);padding:.3333333em .5555556em;border-radius:.2222222em;font-size:.875em}.format :where(a code):not(:where([class~=not-format] *)){color:inherit}.format :where(h1 code):not(:where([class~=not-format] *)){color:inherit}.format :where(h2 code):not(:where([class~=not-format] *)){color:inherit;font-size:.875em}.format :where(h3 code):not(:where([class~=not-format] *)){color:inherit;font-size:.9em}.format :where(h4 code):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote code):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th code):not(:where([class~=not-format] *)){color:inherit}.format :where(pre):not(:where([class~=not-format] *)){color:var(--tw-format-pre-code);background-color:var(--tw-format-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.format :where(pre code):not(:where([class~=not-format] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.format :where(pre code):not(:where([class~=not-format] *)):before{content:none}.format :where(pre code):not(:where([class~=not-format] *)):after{content:none}.format :where(table):not(:where([class~=not-format] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.format :where(thead):not(:where([class~=not-format] *)){background-color:var(--tw-format-th-bg);border-radius:.2777778em}.format :where(thead th):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;vertical-align:bottom;padding:.5555556em .5714286em .5714286em}.format :where(tbody tr):not(:where([class~=not-format] *)){border-bottom-width:1px;border-bottom-color:var(--tw-format-td-borders)}.format :where(tbody tr:last-child):not(:where([class~=not-format] *)){border-bottom-width:0}.format :where(tbody td):not(:where([class~=not-format] *)){vertical-align:initial}.format :where(tfoot):not(:where([class~=not-format] *)){border-top-width:1px;border-top-color:var(--tw-format-th-borders)}.format :where(tfoot td):not(:where([class~=not-format] *)){vertical-align:top}.format{--tw-format-body:#6b7280;--tw-format-headings:#111827;--tw-format-lead:#6b7280;--tw-format-links:#4b5563;--tw-format-bold:#111827;--tw-format-counters:#6b7280;--tw-format-bullets:#6b7280;--tw-format-hr:#e5e7eb;--tw-format-quotes:#111827;--tw-format-quote-borders:#e5e7eb;--tw-format-captions:#6b7280;--tw-format-code:#111827;--tw-format-code-bg:#f3f4f6;--tw-format-pre-code:#4b5563;--tw-format-pre-bg:#f3f4f6;--tw-format-th-borders:#e5e7eb;--tw-format-th-bg:#f9fafb;--tw-format-td-borders:#e5e7eb;--tw-format-invert-body:#9ca3af;--tw-format-invert-headings:#fff;--tw-format-invert-lead:#9ca3af;--tw-format-invert-links:#fff;--tw-format-invert-bold:#fff;--tw-format-invert-counters:#9ca3af;--tw-format-invert-bullets:#4b5563;--tw-format-invert-hr:#374151;--tw-format-invert-quotes:#f3f4f6;--tw-format-invert-quote-borders:#374151;--tw-format-invert-captions:#9ca3af;--tw-format-invert-code:#fff;--tw-format-invert-code-bg:#1f2937;--tw-format-invert-pre-code:#d1d5db;--tw-format-invert-pre-bg:#374151;--tw-format-invert-th-borders:#4b5563;--tw-format-invert-td-borders:#374151;--tw-format-invert-th-bg:#374151;font-size:1rem;line-height:1.75}.format :where(p):not(:where([class~=not-format] *)){margin-top:1.25em;margin-bottom:1.25em}.format :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(video):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(li):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format :where(ol>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(ul>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.5714286em}.format :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-sm :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format-sm :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-sm :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-base :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format-base :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-base :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.btn-primary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.625rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-primary-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary-small){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-red-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-red-small:hover{--tw-bg-opacity:1;background-color:rgb(155 28 28/var(--tw-bg-opacity))}.btn-red-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(248 180 180/var(--tw-ring-opacity))}:is(.dark .btn-red-small){--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity))}:is(.dark .btn-red-small:hover){--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity))}:is(.dark .btn-red-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(155 28 28/var(--tw-ring-opacity))}.btn-secondary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.625rem 1.25rem;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-secondary-small{border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary-small){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .label){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.input{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.input-error{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(119 29 29/var(--tw-text-opacity))}.input-error::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error::placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error:focus{--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(240 82 82/var(--tw-ring-opacity))}:is(.dark .input-error){--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .input-error)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}:is(.dark .input-error)::placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}.disabled-input{margin-bottom:1.25rem;display:block;width:100%;cursor:not-allowed;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.disabled-input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .disabled-input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:is(.dark .disabled-input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.link{font-weight:500;--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.link:hover{text-decoration-line:underline}:is(.dark .link){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}.tr{border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .tr){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.td{padding:1rem 1.5rem}.td-tight{padding:.5rem .75rem}.form{margin-left:auto;margin-right:auto;min-width:24rem;max-width:24rem}.table{width:100%;text-align:left;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:is(.dark .table){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.table:where([dir=rtl],[dir=rtl] *){text-align:right}.thead{background-color:rgb(248 250 252/var(--tw-bg-opacity));font-size:.75rem;line-height:1rem;text-transform:uppercase;color:rgb(51 65 85/var(--tw-text-opacity))}.thead,:is(.dark .thead){--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .thead){background-color:rgb(51 65 85/var(--tw-bg-opacity));color:rgb(148 163 184/var(--tw-text-opacity))}.th{padding:.75rem 1.5rem}.checkbox{height:1rem;width:1rem;border-radius:.25rem;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.checkbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .checkbox){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity));--tw-ring-offset-color:#1f2937}:is(.dark .checkbox:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(28 100 242/var(--tw-ring-opacity))}.h3{font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .h3){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.progress-bar-div{display:flex;width:24rem;flex-direction:column;justify-content:center;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-\\[60px\\]{bottom:60px}.left-0{left:0}.right-0{right:0}.start-0{inset-inline-start:0}.top-0{top:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-10{margin-top:2.5rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\\[16px\\]{height:16px}.min-h-screen{min-height:100vh}.w-1\\/2{width:50%}.w-4{width:1rem}.w-64{width:16rem}.w-\\[16px\\]{width:16px}.w-\\[256px\\]{width:256px}.w-full{width:100%}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-e-lg{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-s-lg{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-blue-600{--tw-border-opacity:1;border-color:rgb(28 100 242/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900\\/50{background-color:#11182780}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\\/50{background-color:#ffffff80}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.font-body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.text-blue-600{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(224 36 36/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(200 30 30/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:1024px){.lg\\:format-lg{font-size:1.125rem;line-height:1.7777778}.lg\\:format-lg :where(p):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:format-lg :where([class~=lead]):not(:where([class~=not-format] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\\:format-lg :where(blockquote):not(:where([class~=not-format] *)):before{margin-top:1.6666667em}.lg\\:format-lg :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:.5em}.lg\\:format-lg :where(h1):not(:where([class~=not-format] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\\:format-lg :where(h2):not(:where([class~=not-format] *)){font-size:2em;margin-top:0;margin-bottom:.6666667em;line-height:1.3333333}.lg\\:format-lg :where(h3):not(:where([class~=not-format] *)){font-size:1.3333333em;margin-top:0;margin-bottom:.6666667em;line-height:1.5}.lg\\:format-lg :where(h4):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:.4444444em;line-height:1.5555556}.lg\\:format-lg :where(img):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(video):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.lg\\:format-lg :where(figcaption):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\\:format-lg :where(code):not(:where([class~=not-format] *)){font-size:.8888889em}.lg\\:format-lg :where(h2 code):not(:where([class~=not-format] *)){font-size:.8666667em}.lg\\:format-lg :where(h3 code):not(:where([class~=not-format] *)){font-size:.875em}.lg\\:format-lg :where(pre):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding:1em 1.5em}.lg\\:format-lg :where(ol):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(ul):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(li):not(:where([class~=not-format] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\\:format-lg :where(ol>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(ul>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(hr):not(:where([class~=not-format] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\\:format-lg :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(table):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5}.lg\\:format-lg :where(thead th):not(:where([class~=not-format] *)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\\:format-lg :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.75em}.lg\\:format-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}}.hover\\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-2:focus,.focus\\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.focus\\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}:is(.dark .dark\\:border-blue-500){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-600){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-700){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\\:border-transparent){border-color:#0000}:is(.dark .dark\\:bg-blue-600){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-600){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800\\/50){background-color:#1f293780}:is(.dark .dark\\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-900\\/80){background-color:#111827cc}:is(.dark .dark\\:text-blue-500){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\\:text-red-500){--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .dark\\:text-slate-800){--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark .dark\\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:placeholder-gray-400)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:placeholder-gray-400)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:hover\\:bg-blue-700:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-600:hover){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-800:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:text-blue-500:hover){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-gray-300:hover){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-white:hover){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:focus\\:border-blue-500:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:focus\\:ring-blue-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}@media (min-width:640px){.sm\\:flex{display:flex}.sm\\:flex-row{flex-direction:row}.sm\\:items-start{align-items:flex-start}}@media (min-width:768px){.md\\:w-1\\/2{width:50%}}@media (min-width:1024px){.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:w-1\\/2{width:50%}.lg\\:flex-row{flex-direction:row}.lg\\:items-start{align-items:flex-start}.lg\\:justify-between{justify-content:space-between}.lg\\:py-8{padding-top:2rem;padding-bottom:2rem}}.rtl\\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}"
  },
  {
    "path": "src/staticfiles/style.a787112a42a1.css",
    "content": "/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:after,[data-popper-arrow]:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:after,[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 10 6'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}:is([dir=rtl]) select:not([size]){background-position:left .75rem center;padding-right:.75rem;padding-left:0}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark [type=checkbox]:checked,.dark [type=radio]:checked,[type=checkbox]:checked,[type=radio]:checked{border-color:#0000;background-color:currentColor;background-size:.55em .55em;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.dark [type=radio]:checked,[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\");background-size:1em 1em}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[type=checkbox]:indeterminate,[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;margin-inline-start:-1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}:is([dir=rtl]) input[type=file]::file-selector-button{padding-right:2rem;padding-left:1rem}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1px;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}.toggle-bg:after{content:\"\";position:absolute;top:.125rem;left:.125rem;background:#fff;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translateX(100%);;border-color:#fff}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3f83f880;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.apexcharts-canvas .apexcharts-tooltip{background-color:#fff;color:#6b7280;border:0!important;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-tooltip{background-color:#374151;color:#9ca3af;border-color:#0000;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{padding:.5rem .75rem;margin-bottom:.75rem;background-color:#f3f4f6;border-bottom-color:#e5e7eb;font-size:.875rem!important;font-weight:400;color:#6b7280}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{background-color:#4b5563;border-color:#6b7280;color:#9ca3af}.apexcharts-canvas .apexcharts-xaxistooltip{color:#6b7280;padding:.5rem .75rem;border-color:#0000;background-color:#fff;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-xaxistooltip{color:#9ca3af;background-color:#374151}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#6b7280;font-size:.875rem}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#9ca3af}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#111827;font-size:.875rem}:is([dir=rtl]) .apexcharts-tooltip .apexcharts-tooltip-marker{margin-right:0;margin-left:e}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip-text{font-weight:400;font-size:.875rem!important}.apexcharts-canvas .apexcharts-xaxistooltip:after,.apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip:after{border-width:8px;margin-left:-8px}.apexcharts-canvas .apexcharts-xaxistooltip:before{border-width:10px;margin-left:-10px}.dark .apexcharts-canvas .apexcharts-xaxistooltip:after,.dark .apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#374151}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-y-group{padding:0}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{padding-left:.75rem;padding-right:.75rem;padding-bottom:.75rem;background-color:#fff!important;color:#6b7280!important}.dark .apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{background-color:#374151!important;color:#9ca3af!important}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active:first-of-type{padding-top:.75rem}.apexcharts-canvas .apexcharts-legend{padding:0!important}.apexcharts-canvas .apexcharts-legend-text{font-size:.75rem;font-weight:500!important;padding-left:1.25rem;color:#6b7280!important}:is([dir=rtl]) .apexcharts-canvas .apexcharts-legend-text{padding-right:.5rem}.apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#111827!important}.dark .apexcharts-canvas .apexcharts-legend-text{color:#9ca3af!important}.dark .apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#fff!important}.apexcharts-canvas .apexcharts-legend-series{margin-left:.5rem;margin-right:.5rem;margin-bottom:.25rem!important;display:flex;align-items:center}.apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#111827!important;font-size:1.875rem;font-weight:700}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#fff!important}.apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#6b7280!important;font-size:1rem;font-weight:400}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#9ca3af!important}.apexcharts-canvas .apexcharts-datalabels .apexcharts-text.apexcharts-pie-label{font-size:.75rem!important;font-weight:600!important;text-shadow:none!important;filter:none!important}.apexcharts-gridline,.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{stroke:#e5e7eb!important}.dark .apexcharts-gridline,.dark .apexcharts-xcrosshairs,.dark .apexcharts-ycrosshairs{stroke:#374151!important}.format{color:var(--tw-format-body);max-width:65ch}.format :where([class~=lead]):not(:where([class~=not-format] *)){color:var(--tw-format-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.format :where(a):not(:where([class~=not-format] *)){color:var(--tw-format-links);text-decoration:underline;font-weight:500}.format :where(a):not(:where([class~=not-format] *)):hover{text-decoration:none}.format :where(strong):not(:where([class~=not-format] *)){color:var(--tw-format-bold);font-weight:700}.format :where(a strong):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote strong):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th strong):not(:where([class~=not-format] *)){color:inherit}.format :where(ol):not(:where([class~=not-format] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol[type=A]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=A s]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a s]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=I]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=I s]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i s]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=\"1\"]):not(:where([class~=not-format] *)){list-style-type:decimal}.format :where(ul):not(:where([class~=not-format] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol>li):not(:where([class~=not-format] *))::marker{font-weight:400;color:var(--tw-format-counters)}.format :where(ul>li):not(:where([class~=not-format] *))::marker{color:var(--tw-format-bullets)}.format :where(hr):not(:where([class~=not-format] *)){border-color:var(--tw-format-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.format :where(blockquote):not(:where([class~=not-format] *)){font-size:1.1111111em;font-weight:700;font-style:italic;color:var(--tw-format-quotes);quotes:\"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";margin-bottom:1.6em}.format :where(blockquote):not(:where([class~=not-format] *)):before{content:\"\";background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='24' fill='none'%3E%3Cpath fill='%239CA3AF' d='M18.69 24v-9.855C18.69 6.54 23.663 1.385 30.666 0l1.326 2.868c-3.242 1.223-5.326 4.85-5.326 7.799H32V24H18.69ZM0 24v-9.855C0 6.54 4.997 1.384 12 0l1.328 2.868C10.084 4.091 8 7.718 8 10.667h5.31V24H0Z'/%3E%3C/svg%3E\");background-repeat:no-repeat;color:var(--tw-format-quotes);width:1.7777778em;height:1.3333333em;display:block;margin-top:1.6em}.format :where(blockquote p:first-of-type):not(:where([class~=not-format] *)):before{content:open-quote}.format :where(blockquote p:last-of-type):not(:where([class~=not-format] *)):after{content:close-quote}.format :where(h1):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.format :where(h1 strong):not(:where([class~=not-format] *)){font-weight:900;color:inherit}.format :where(h2):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.5em;margin-top:0;margin-bottom:1em;line-height:1.3333333}.format :where(h2 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h3):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.25em;margin-top:0;margin-bottom:.6em;line-height:1.6}.format :where(h3 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h4):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;margin-top:0;margin-bottom:.5em;line-height:1.5}.format :where(h4 strong):not(:where([class~=not-format] *)){font-weight:700;color:inherit}.format :where(img):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.format :where(figcaption):not(:where([class~=not-format] *)){color:var(--tw-format-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.format :where(code):not(:where([class~=not-format] *)){color:var(--tw-format-code);font-weight:600;background-color:var(--tw-format-code-bg);padding:.3333333em .5555556em;border-radius:.2222222em;font-size:.875em}.format :where(a code):not(:where([class~=not-format] *)){color:inherit}.format :where(h1 code):not(:where([class~=not-format] *)){color:inherit}.format :where(h2 code):not(:where([class~=not-format] *)){color:inherit;font-size:.875em}.format :where(h3 code):not(:where([class~=not-format] *)){color:inherit;font-size:.9em}.format :where(h4 code):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote code):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th code):not(:where([class~=not-format] *)){color:inherit}.format :where(pre):not(:where([class~=not-format] *)){color:var(--tw-format-pre-code);background-color:var(--tw-format-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.format :where(pre code):not(:where([class~=not-format] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.format :where(pre code):not(:where([class~=not-format] *)):before{content:none}.format :where(pre code):not(:where([class~=not-format] *)):after{content:none}.format :where(table):not(:where([class~=not-format] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.format :where(thead):not(:where([class~=not-format] *)){background-color:var(--tw-format-th-bg);border-radius:.2777778em}.format :where(thead th):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;vertical-align:bottom;padding:.5555556em .5714286em .5714286em}.format :where(tbody tr):not(:where([class~=not-format] *)){border-bottom-width:1px;border-bottom-color:var(--tw-format-td-borders)}.format :where(tbody tr:last-child):not(:where([class~=not-format] *)){border-bottom-width:0}.format :where(tbody td):not(:where([class~=not-format] *)){vertical-align:initial}.format :where(tfoot):not(:where([class~=not-format] *)){border-top-width:1px;border-top-color:var(--tw-format-th-borders)}.format :where(tfoot td):not(:where([class~=not-format] *)){vertical-align:top}.format{--tw-format-body:#6b7280;--tw-format-headings:#111827;--tw-format-lead:#6b7280;--tw-format-links:#4b5563;--tw-format-bold:#111827;--tw-format-counters:#6b7280;--tw-format-bullets:#6b7280;--tw-format-hr:#e5e7eb;--tw-format-quotes:#111827;--tw-format-quote-borders:#e5e7eb;--tw-format-captions:#6b7280;--tw-format-code:#111827;--tw-format-code-bg:#f3f4f6;--tw-format-pre-code:#4b5563;--tw-format-pre-bg:#f3f4f6;--tw-format-th-borders:#e5e7eb;--tw-format-th-bg:#f9fafb;--tw-format-td-borders:#e5e7eb;--tw-format-invert-body:#9ca3af;--tw-format-invert-headings:#fff;--tw-format-invert-lead:#9ca3af;--tw-format-invert-links:#fff;--tw-format-invert-bold:#fff;--tw-format-invert-counters:#9ca3af;--tw-format-invert-bullets:#4b5563;--tw-format-invert-hr:#374151;--tw-format-invert-quotes:#f3f4f6;--tw-format-invert-quote-borders:#374151;--tw-format-invert-captions:#9ca3af;--tw-format-invert-code:#fff;--tw-format-invert-code-bg:#1f2937;--tw-format-invert-pre-code:#d1d5db;--tw-format-invert-pre-bg:#374151;--tw-format-invert-th-borders:#4b5563;--tw-format-invert-td-borders:#374151;--tw-format-invert-th-bg:#374151;font-size:1rem;line-height:1.75}.format :where(p):not(:where([class~=not-format] *)){margin-top:1.25em;margin-bottom:1.25em}.format :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(video):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(li):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format :where(ol>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(ul>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.5714286em}.format :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-sm :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format-sm :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-sm :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-base :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format-base :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-base :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.btn-primary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.625rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-primary-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary-small){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-red-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-red-small:hover{--tw-bg-opacity:1;background-color:rgb(155 28 28/var(--tw-bg-opacity))}.btn-red-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(248 180 180/var(--tw-ring-opacity))}:is(.dark .btn-red-small){--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity))}:is(.dark .btn-red-small:hover){--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity))}:is(.dark .btn-red-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(155 28 28/var(--tw-ring-opacity))}.btn-secondary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.625rem 1.25rem;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-secondary-small{border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary-small){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .label){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.input{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.input-error{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(119 29 29/var(--tw-text-opacity))}.input-error::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error::placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error:focus{--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(240 82 82/var(--tw-ring-opacity))}:is(.dark .input-error){--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .input-error)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}:is(.dark .input-error)::placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}.disabled-input{margin-bottom:1.25rem;display:block;width:100%;cursor:not-allowed;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.disabled-input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .disabled-input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:is(.dark .disabled-input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.link{font-weight:500;--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.link:hover{text-decoration-line:underline}:is(.dark .link){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}.form{margin-left:auto;margin-right:auto;min-width:24rem;max-width:24rem}.table{width:100%;text-align:left;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:is(.dark .table){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}@media (min-width:640px){.table{font-size:.875rem;line-height:1.25rem}}.table:where([dir=rtl],[dir=rtl] *){text-align:right}.thead{background-color:rgb(248 250 252/var(--tw-bg-opacity));font-size:.75rem;line-height:1rem;text-transform:uppercase;color:rgb(51 65 85/var(--tw-text-opacity))}.thead,:is(.dark .thead){--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .thead){background-color:rgb(51 65 85/var(--tw-bg-opacity));color:rgb(148 163 184/var(--tw-text-opacity))}.tr{border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .tr){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.td-tight{padding:.25rem}@media (min-width:640px){.td-tight{padding:.5rem .75rem}}.td{padding:.5rem .75rem}@media (min-width:640px){.td{padding:1rem 1.5rem}}.th{padding:.375rem .75rem}@media (min-width:640px){.th{padding:.75rem 1.5rem}}.checkbox{height:1rem;width:1rem;border-radius:.25rem;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.checkbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .checkbox){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity));--tw-ring-offset-color:#1f2937}:is(.dark .checkbox:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(28 100 242/var(--tw-ring-opacity))}.h3{font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .h3){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.progress-bar-div{display:flex;width:24rem;flex-direction:column;justify-content:center;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-\\[60px\\]{bottom:60px}.left-0{left:0}.right-0{right:0}.start-0{inset-inline-start:0}.top-0{top:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\\[16px\\]{height:16px}.min-h-screen{min-height:100vh}.w-1\\/2{width:50%}.w-4{width:1rem}.w-64{width:16rem}.w-\\[16px\\]{width:16px}.w-\\[256px\\]{width:256px}.w-full{width:100%}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-e-lg{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-s-lg{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-blue-600{--tw-border-opacity:1;border-color:rgb(28 100 242/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900\\/50{background-color:#11182780}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\\/50{background-color:#ffffff80}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.font-body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.text-blue-600{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(224 36 36/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(200 30 30/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:1024px){.lg\\:format-lg{font-size:1.125rem;line-height:1.7777778}.lg\\:format-lg :where(p):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:format-lg :where([class~=lead]):not(:where([class~=not-format] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\\:format-lg :where(blockquote):not(:where([class~=not-format] *)):before{margin-top:1.6666667em}.lg\\:format-lg :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:.5em}.lg\\:format-lg :where(h1):not(:where([class~=not-format] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\\:format-lg :where(h2):not(:where([class~=not-format] *)){font-size:2em;margin-top:0;margin-bottom:.6666667em;line-height:1.3333333}.lg\\:format-lg :where(h3):not(:where([class~=not-format] *)){font-size:1.3333333em;margin-top:0;margin-bottom:.6666667em;line-height:1.5}.lg\\:format-lg :where(h4):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:.4444444em;line-height:1.5555556}.lg\\:format-lg :where(img):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(video):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.lg\\:format-lg :where(figcaption):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\\:format-lg :where(code):not(:where([class~=not-format] *)){font-size:.8888889em}.lg\\:format-lg :where(h2 code):not(:where([class~=not-format] *)){font-size:.8666667em}.lg\\:format-lg :where(h3 code):not(:where([class~=not-format] *)){font-size:.875em}.lg\\:format-lg :where(pre):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding:1em 1.5em}.lg\\:format-lg :where(ol):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(ul):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(li):not(:where([class~=not-format] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\\:format-lg :where(ol>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(ul>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(hr):not(:where([class~=not-format] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\\:format-lg :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(table):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5}.lg\\:format-lg :where(thead th):not(:where([class~=not-format] *)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\\:format-lg :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.75em}.lg\\:format-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}}.hover\\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-2:focus,.focus\\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.focus\\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}:is(.dark .dark\\:border-blue-500){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-600){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-700){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\\:border-transparent){border-color:#0000}:is(.dark .dark\\:bg-blue-600){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-600){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800\\/50){background-color:#1f293780}:is(.dark .dark\\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-900\\/80){background-color:#111827cc}:is(.dark .dark\\:text-blue-500){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\\:text-red-500){--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .dark\\:text-slate-800){--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark .dark\\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:placeholder-gray-400)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:placeholder-gray-400)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:hover\\:bg-blue-700:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-600:hover){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-800:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:text-blue-500:hover){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-gray-300:hover){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-white:hover){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:focus\\:border-blue-500:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:focus\\:ring-blue-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}@media (min-width:640px){.sm\\:flex{display:flex}.sm\\:flex-row{flex-direction:row}.sm\\:items-start{align-items:flex-start}}@media (min-width:768px){.md\\:w-1\\/2{width:50%}}@media (min-width:1024px){.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:w-1\\/2{width:50%}.lg\\:flex-row{flex-direction:row}.lg\\:items-start{align-items:flex-start}.lg\\:justify-between{justify-content:space-between}.lg\\:py-8{padding-top:2rem;padding-bottom:2rem}}.rtl\\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}"
  },
  {
    "path": "src/staticfiles/style.b924d806fdc9.css",
    "content": "/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:after,[data-popper-arrow]:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:after,[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 10 6'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}:is([dir=rtl]) select:not([size]){background-position:left .75rem center;padding-right:.75rem;padding-left:0}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark [type=checkbox]:checked,.dark [type=radio]:checked,[type=checkbox]:checked,[type=radio]:checked{border-color:#0000;background-color:currentColor;background-size:.55em .55em;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.dark [type=radio]:checked,[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\");background-size:1em 1em}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[type=checkbox]:indeterminate,[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;margin-inline-start:-1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}:is([dir=rtl]) input[type=file]::file-selector-button{padding-right:2rem;padding-left:1rem}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1px;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}.toggle-bg:after{content:\"\";position:absolute;top:.125rem;left:.125rem;background:#fff;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translateX(100%);;border-color:#fff}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3f83f880;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.apexcharts-canvas .apexcharts-tooltip{background-color:#fff;color:#6b7280;border:0!important;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-tooltip{background-color:#374151;color:#9ca3af;border-color:#0000;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{padding:.5rem .75rem;margin-bottom:.75rem;background-color:#f3f4f6;border-bottom-color:#e5e7eb;font-size:.875rem!important;font-weight:400;color:#6b7280}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{background-color:#4b5563;border-color:#6b7280;color:#9ca3af}.apexcharts-canvas .apexcharts-xaxistooltip{color:#6b7280;padding:.5rem .75rem;border-color:#0000;background-color:#fff;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-xaxistooltip{color:#9ca3af;background-color:#374151}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#6b7280;font-size:.875rem}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#9ca3af}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#111827;font-size:.875rem}:is([dir=rtl]) .apexcharts-tooltip .apexcharts-tooltip-marker{margin-right:0;margin-left:e}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip-text{font-weight:400;font-size:.875rem!important}.apexcharts-canvas .apexcharts-xaxistooltip:after,.apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip:after{border-width:8px;margin-left:-8px}.apexcharts-canvas .apexcharts-xaxistooltip:before{border-width:10px;margin-left:-10px}.dark .apexcharts-canvas .apexcharts-xaxistooltip:after,.dark .apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#374151}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-y-group{padding:0}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{padding-left:.75rem;padding-right:.75rem;padding-bottom:.75rem;background-color:#fff!important;color:#6b7280!important}.dark .apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{background-color:#374151!important;color:#9ca3af!important}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active:first-of-type{padding-top:.75rem}.apexcharts-canvas .apexcharts-legend{padding:0!important}.apexcharts-canvas .apexcharts-legend-text{font-size:.75rem;font-weight:500!important;padding-left:1.25rem;color:#6b7280!important}:is([dir=rtl]) .apexcharts-canvas .apexcharts-legend-text{padding-right:.5rem}.apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#111827!important}.dark .apexcharts-canvas .apexcharts-legend-text{color:#9ca3af!important}.dark .apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#fff!important}.apexcharts-canvas .apexcharts-legend-series{margin-left:.5rem;margin-right:.5rem;margin-bottom:.25rem!important;display:flex;align-items:center}.apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#111827!important;font-size:1.875rem;font-weight:700}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#fff!important}.apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#6b7280!important;font-size:1rem;font-weight:400}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#9ca3af!important}.apexcharts-canvas .apexcharts-datalabels .apexcharts-text.apexcharts-pie-label{font-size:.75rem!important;font-weight:600!important;text-shadow:none!important;filter:none!important}.apexcharts-gridline,.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{stroke:#e5e7eb!important}.dark .apexcharts-gridline,.dark .apexcharts-xcrosshairs,.dark .apexcharts-ycrosshairs{stroke:#374151!important}.format{color:var(--tw-format-body);max-width:65ch}.format :where([class~=lead]):not(:where([class~=not-format] *)){color:var(--tw-format-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.format :where(a):not(:where([class~=not-format] *)){color:var(--tw-format-links);text-decoration:underline;font-weight:500}.format :where(a):not(:where([class~=not-format] *)):hover{text-decoration:none}.format :where(strong):not(:where([class~=not-format] *)){color:var(--tw-format-bold);font-weight:700}.format :where(a strong):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote strong):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th strong):not(:where([class~=not-format] *)){color:inherit}.format :where(ol):not(:where([class~=not-format] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol[type=A]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=A s]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a s]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=I]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=I s]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i s]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=\"1\"]):not(:where([class~=not-format] *)){list-style-type:decimal}.format :where(ul):not(:where([class~=not-format] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol>li):not(:where([class~=not-format] *))::marker{font-weight:400;color:var(--tw-format-counters)}.format :where(ul>li):not(:where([class~=not-format] *))::marker{color:var(--tw-format-bullets)}.format :where(hr):not(:where([class~=not-format] *)){border-color:var(--tw-format-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.format :where(blockquote):not(:where([class~=not-format] *)){font-size:1.1111111em;font-weight:700;font-style:italic;color:var(--tw-format-quotes);quotes:\"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";margin-bottom:1.6em}.format :where(blockquote):not(:where([class~=not-format] *)):before{content:\"\";background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='24' fill='none'%3E%3Cpath fill='%239CA3AF' d='M18.69 24v-9.855C18.69 6.54 23.663 1.385 30.666 0l1.326 2.868c-3.242 1.223-5.326 4.85-5.326 7.799H32V24H18.69ZM0 24v-9.855C0 6.54 4.997 1.384 12 0l1.328 2.868C10.084 4.091 8 7.718 8 10.667h5.31V24H0Z'/%3E%3C/svg%3E\");background-repeat:no-repeat;color:var(--tw-format-quotes);width:1.7777778em;height:1.3333333em;display:block;margin-top:1.6em}.format :where(blockquote p:first-of-type):not(:where([class~=not-format] *)):before{content:open-quote}.format :where(blockquote p:last-of-type):not(:where([class~=not-format] *)):after{content:close-quote}.format :where(h1):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.format :where(h1 strong):not(:where([class~=not-format] *)){font-weight:900;color:inherit}.format :where(h2):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.5em;margin-top:0;margin-bottom:1em;line-height:1.3333333}.format :where(h2 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h3):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.25em;margin-top:0;margin-bottom:.6em;line-height:1.6}.format :where(h3 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h4):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;margin-top:0;margin-bottom:.5em;line-height:1.5}.format :where(h4 strong):not(:where([class~=not-format] *)){font-weight:700;color:inherit}.format :where(img):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.format :where(figcaption):not(:where([class~=not-format] *)){color:var(--tw-format-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.format :where(code):not(:where([class~=not-format] *)){color:var(--tw-format-code);font-weight:600;background-color:var(--tw-format-code-bg);padding:.3333333em .5555556em;border-radius:.2222222em;font-size:.875em}.format :where(a code):not(:where([class~=not-format] *)){color:inherit}.format :where(h1 code):not(:where([class~=not-format] *)){color:inherit}.format :where(h2 code):not(:where([class~=not-format] *)){color:inherit;font-size:.875em}.format :where(h3 code):not(:where([class~=not-format] *)){color:inherit;font-size:.9em}.format :where(h4 code):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote code):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th code):not(:where([class~=not-format] *)){color:inherit}.format :where(pre):not(:where([class~=not-format] *)){color:var(--tw-format-pre-code);background-color:var(--tw-format-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.format :where(pre code):not(:where([class~=not-format] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.format :where(pre code):not(:where([class~=not-format] *)):before{content:none}.format :where(pre code):not(:where([class~=not-format] *)):after{content:none}.format :where(table):not(:where([class~=not-format] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.format :where(thead):not(:where([class~=not-format] *)){background-color:var(--tw-format-th-bg);border-radius:.2777778em}.format :where(thead th):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;vertical-align:bottom;padding:.5555556em .5714286em .5714286em}.format :where(tbody tr):not(:where([class~=not-format] *)){border-bottom-width:1px;border-bottom-color:var(--tw-format-td-borders)}.format :where(tbody tr:last-child):not(:where([class~=not-format] *)){border-bottom-width:0}.format :where(tbody td):not(:where([class~=not-format] *)){vertical-align:initial}.format :where(tfoot):not(:where([class~=not-format] *)){border-top-width:1px;border-top-color:var(--tw-format-th-borders)}.format :where(tfoot td):not(:where([class~=not-format] *)){vertical-align:top}.format{--tw-format-body:#6b7280;--tw-format-headings:#111827;--tw-format-lead:#6b7280;--tw-format-links:#4b5563;--tw-format-bold:#111827;--tw-format-counters:#6b7280;--tw-format-bullets:#6b7280;--tw-format-hr:#e5e7eb;--tw-format-quotes:#111827;--tw-format-quote-borders:#e5e7eb;--tw-format-captions:#6b7280;--tw-format-code:#111827;--tw-format-code-bg:#f3f4f6;--tw-format-pre-code:#4b5563;--tw-format-pre-bg:#f3f4f6;--tw-format-th-borders:#e5e7eb;--tw-format-th-bg:#f9fafb;--tw-format-td-borders:#e5e7eb;--tw-format-invert-body:#9ca3af;--tw-format-invert-headings:#fff;--tw-format-invert-lead:#9ca3af;--tw-format-invert-links:#fff;--tw-format-invert-bold:#fff;--tw-format-invert-counters:#9ca3af;--tw-format-invert-bullets:#4b5563;--tw-format-invert-hr:#374151;--tw-format-invert-quotes:#f3f4f6;--tw-format-invert-quote-borders:#374151;--tw-format-invert-captions:#9ca3af;--tw-format-invert-code:#fff;--tw-format-invert-code-bg:#1f2937;--tw-format-invert-pre-code:#d1d5db;--tw-format-invert-pre-bg:#374151;--tw-format-invert-th-borders:#4b5563;--tw-format-invert-td-borders:#374151;--tw-format-invert-th-bg:#374151;font-size:1rem;line-height:1.75}.format :where(p):not(:where([class~=not-format] *)){margin-top:1.25em;margin-bottom:1.25em}.format :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(video):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(li):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format :where(ol>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(ul>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.5714286em}.format :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-sm :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format-sm :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-sm :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-base :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format-base :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-base :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.btn-primary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.625rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-primary-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary-small){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-red-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-red-small:hover{--tw-bg-opacity:1;background-color:rgb(155 28 28/var(--tw-bg-opacity))}.btn-red-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(248 180 180/var(--tw-ring-opacity))}:is(.dark .btn-red-small){--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity))}:is(.dark .btn-red-small:hover){--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity))}:is(.dark .btn-red-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(155 28 28/var(--tw-ring-opacity))}.btn-secondary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.625rem 1.25rem;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-secondary-small{border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary-small){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .label){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.input{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.input-error{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(119 29 29/var(--tw-text-opacity))}.input-error::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error::placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error:focus{--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(240 82 82/var(--tw-ring-opacity))}:is(.dark .input-error){--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .input-error)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}:is(.dark .input-error)::placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}.disabled-input{margin-bottom:1.25rem;display:block;width:100%;cursor:not-allowed;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.disabled-input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .disabled-input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:is(.dark .disabled-input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.link{font-weight:500;--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.link:hover{text-decoration-line:underline}:is(.dark .link){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}.tr{border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .tr){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.td{padding:1rem 1.5rem}.td-tight{padding:.5rem .75rem}.form{margin-left:auto;margin-right:auto;min-width:24rem;max-width:24rem}.table{width:100%;text-align:left;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:is(.dark .table){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}.table:where([dir=rtl],[dir=rtl] *){text-align:right}.thead{background-color:rgb(248 250 252/var(--tw-bg-opacity));font-size:.75rem;line-height:1rem;text-transform:uppercase;color:rgb(51 65 85/var(--tw-text-opacity))}.thead,:is(.dark .thead){--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .thead){background-color:rgb(51 65 85/var(--tw-bg-opacity));color:rgb(148 163 184/var(--tw-text-opacity))}.th{padding:.75rem 1.5rem}.checkbox{height:1rem;width:1rem;border-radius:.25rem;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.checkbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .checkbox){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity));--tw-ring-offset-color:#1f2937}:is(.dark .checkbox:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(28 100 242/var(--tw-ring-opacity))}.h3{font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .h3){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.progress-bar-div{display:flex;width:24rem;flex-direction:column;justify-content:center;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-\\[60px\\]{bottom:60px}.left-0{left:0}.right-0{right:0}.start-0{inset-inline-start:0}.top-0{top:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\\[16px\\]{height:16px}.min-h-screen{min-height:100vh}.w-1\\/2{width:50%}.w-4{width:1rem}.w-64{width:16rem}.w-\\[16px\\]{width:16px}.w-\\[256px\\]{width:256px}.w-full{width:100%}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-e-lg{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-s-lg{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-blue-600{--tw-border-opacity:1;border-color:rgb(28 100 242/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900\\/50{background-color:#11182780}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\\/50{background-color:#ffffff80}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.font-body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.text-blue-600{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(224 36 36/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(200 30 30/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:1024px){.lg\\:format-lg{font-size:1.125rem;line-height:1.7777778}.lg\\:format-lg :where(p):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:format-lg :where([class~=lead]):not(:where([class~=not-format] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\\:format-lg :where(blockquote):not(:where([class~=not-format] *)):before{margin-top:1.6666667em}.lg\\:format-lg :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:.5em}.lg\\:format-lg :where(h1):not(:where([class~=not-format] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\\:format-lg :where(h2):not(:where([class~=not-format] *)){font-size:2em;margin-top:0;margin-bottom:.6666667em;line-height:1.3333333}.lg\\:format-lg :where(h3):not(:where([class~=not-format] *)){font-size:1.3333333em;margin-top:0;margin-bottom:.6666667em;line-height:1.5}.lg\\:format-lg :where(h4):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:.4444444em;line-height:1.5555556}.lg\\:format-lg :where(img):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(video):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.lg\\:format-lg :where(figcaption):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\\:format-lg :where(code):not(:where([class~=not-format] *)){font-size:.8888889em}.lg\\:format-lg :where(h2 code):not(:where([class~=not-format] *)){font-size:.8666667em}.lg\\:format-lg :where(h3 code):not(:where([class~=not-format] *)){font-size:.875em}.lg\\:format-lg :where(pre):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding:1em 1.5em}.lg\\:format-lg :where(ol):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(ul):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(li):not(:where([class~=not-format] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\\:format-lg :where(ol>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(ul>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(hr):not(:where([class~=not-format] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\\:format-lg :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(table):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5}.lg\\:format-lg :where(thead th):not(:where([class~=not-format] *)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\\:format-lg :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.75em}.lg\\:format-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}}.hover\\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-2:focus,.focus\\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.focus\\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}:is(.dark .dark\\:border-blue-500){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-600){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-700){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\\:border-transparent){border-color:#0000}:is(.dark .dark\\:bg-blue-600){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-600){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800\\/50){background-color:#1f293780}:is(.dark .dark\\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-900\\/80){background-color:#111827cc}:is(.dark .dark\\:text-blue-500){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\\:text-red-500){--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .dark\\:text-slate-800){--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark .dark\\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:placeholder-gray-400)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:placeholder-gray-400)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:hover\\:bg-blue-700:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-600:hover){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-800:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:text-blue-500:hover){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-gray-300:hover){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-white:hover){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:focus\\:border-blue-500:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:focus\\:ring-blue-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}@media (min-width:640px){.sm\\:flex{display:flex}.sm\\:flex-row{flex-direction:row}.sm\\:items-start{align-items:flex-start}}@media (min-width:768px){.md\\:w-1\\/2{width:50%}}@media (min-width:1024px){.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:w-1\\/2{width:50%}.lg\\:flex-row{flex-direction:row}.lg\\:items-start{align-items:flex-start}.lg\\:justify-between{justify-content:space-between}.lg\\:py-8{padding-top:2rem;padding-bottom:2rem}}.rtl\\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}"
  },
  {
    "path": "src/staticfiles/style.css",
    "content": "/*! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:\"\"}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.tooltip-arrow,.tooltip-arrow:before{position:absolute;width:8px;height:8px;background:inherit}.tooltip-arrow{visibility:hidden}.tooltip-arrow:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-tooltip-style^=light]+.tooltip>.tooltip-arrow:before{border-style:solid;border-color:#e5e7eb}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=top]>.tooltip-arrow:before{border-bottom-width:1px;border-right-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=right]>.tooltip-arrow:before{border-bottom-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=bottom]>.tooltip-arrow:before{border-top-width:1px;border-left-width:1px}[data-tooltip-style^=light]+.tooltip[data-popper-placement^=left]>.tooltip-arrow:before{border-top-width:1px;border-right-width:1px}.tooltip[data-popper-placement^=top]>.tooltip-arrow{bottom:-4px}.tooltip[data-popper-placement^=bottom]>.tooltip-arrow{top:-4px}.tooltip[data-popper-placement^=left]>.tooltip-arrow{right:-4px}.tooltip[data-popper-placement^=right]>.tooltip-arrow{left:-4px}.tooltip.invisible>.tooltip-arrow:before{visibility:hidden}[data-popper-arrow],[data-popper-arrow]:before{position:absolute;width:8px;height:8px;background:inherit}[data-popper-arrow]{visibility:hidden}[data-popper-arrow]:after,[data-popper-arrow]:before{content:\"\";visibility:visible;transform:rotate(45deg)}[data-popper-arrow]:after{position:absolute;width:9px;height:9px;background:inherit}[role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:before{border-style:solid;border-color:#4b5563}[role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#e5e7eb}.dark [role=tooltip]>[data-popper-arrow]:after{border-style:solid;border-color:#4b5563}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]:before{border-bottom-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]:before{border-bottom-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]:before{border-top-width:1px;border-left-width:1px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:after,[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]:before{border-top-width:1px;border-right-width:1px}[data-popover][role=tooltip][data-popper-placement^=top]>[data-popper-arrow]{bottom:-5px}[data-popover][role=tooltip][data-popper-placement^=bottom]>[data-popper-arrow]{top:-5px}[data-popover][role=tooltip][data-popper-placement^=left]>[data-popper-arrow]{right:-5px}[data-popover][role=tooltip][data-popper-placement^=right]>[data-popper-arrow]{left:-5px}[role=tooltip].invisible>[data-popper-arrow]:after,[role=tooltip].invisible>[data-popper-arrow]:before{visibility:hidden}[multiple],[type=date],[type=datetime-local],[type=email],[type=month],[type=number],[type=password],[type=search],[type=tel],[type=text],[type=time],[type=url],[type=week],select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow:0 0 #0000}[multiple]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=email]:focus,[type=month]:focus,[type=number]:focus,[type=password]:focus,[type=search]:focus,[type=tel]:focus,[type=text]:focus,[type=time]:focus,[type=url]:focus,[type=week]:focus,select:focus,textarea:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#1c64f2}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em}select:not([size]){background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 10 6'%3E%3Cpath stroke='%236B7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m1 1 4 4 4-4'/%3E%3C/svg%3E\");background-position:right .75rem center;background-repeat:no-repeat;background-size:.75em .75em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}:is([dir=rtl]) select:not([size]){background-position:left .75rem center;padding-right:.75rem;padding-left:0}[multiple]{background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#1c64f2;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow:0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:2px;--tw-ring-offset-color:#fff;--tw-ring-color:#1c64f2;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.dark [type=checkbox]:checked,.dark [type=radio]:checked,[type=checkbox]:checked,[type=radio]:checked{border-color:#0000;background-color:currentColor;background-size:.55em .55em;background-position:50%;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}.dark [type=radio]:checked,[type=radio]:checked{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E\");background-size:1em 1em}[type=checkbox]:indeterminate{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' aria-hidden='true' viewBox='0 0 16 12'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M1 5.917 5.724 10.5 15 1.5'/%3E%3C/svg%3E\");background-position:50%;background-repeat:no-repeat;background-size:.55em .55em;-webkit-print-color-adjust:exact;print-color-adjust:exact}[type=checkbox]:indeterminate,[type=checkbox]:indeterminate:focus,[type=checkbox]:indeterminate:hover{background-color:currentColor;border-color:#0000}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px auto inherit}input[type=file]::file-selector-button{color:#fff;background:#1f2937;border:0;font-weight:500;font-size:.875rem;cursor:pointer;padding:.625rem 1rem .625rem 2rem;margin-inline-start:-1rem;margin-inline-end:1rem}input[type=file]::file-selector-button:hover{background:#374151}:is([dir=rtl]) input[type=file]::file-selector-button{padding-right:2rem;padding-left:1rem}.dark input[type=file]::file-selector-button{color:#fff;background:#4b5563}.dark input[type=file]::file-selector-button:hover{background:#6b7280}input[type=range]::-webkit-slider-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-webkit-slider-thumb{background:#9ca3af}.dark input[type=range]:disabled::-webkit-slider-thumb{background:#6b7280}input[type=range]:focus::-webkit-slider-thumb{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1px;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}input[type=range]::-moz-range-thumb{height:1.25rem;width:1.25rem;background:#1c64f2;border-radius:9999px;border:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;cursor:pointer}input[type=range]:disabled::-moz-range-thumb{background:#9ca3af}.dark input[type=range]:disabled::-moz-range-thumb{background:#6b7280}input[type=range]::-moz-range-progress{background:#3f83f8}input[type=range]::-ms-fill-lower{background:#3f83f8}.toggle-bg:after{content:\"\";position:absolute;top:.125rem;left:.125rem;background:#fff;border-color:#d1d5db;border-width:1px;border-radius:9999px;height:1.25rem;width:1.25rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;box-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color)}input:checked+.toggle-bg:after{transform:translateX(100%);;border-color:#fff}input:checked+.toggle-bg{background:#1c64f2;border-color:#1c64f2}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3f83f880;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.apexcharts-canvas .apexcharts-tooltip{background-color:#fff;color:#6b7280;border:0!important;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-tooltip{background-color:#374151;color:#9ca3af;border-color:#0000;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{padding:.5rem .75rem;margin-bottom:.75rem;background-color:#f3f4f6;border-bottom-color:#e5e7eb;font-size:.875rem!important;font-weight:400;color:#6b7280}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-title{background-color:#4b5563;border-color:#6b7280;color:#9ca3af}.apexcharts-canvas .apexcharts-xaxistooltip{color:#6b7280;padding:.5rem .75rem;border-color:#0000;background-color:#fff;border-radius:.25rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.dark .apexcharts-canvas .apexcharts-xaxistooltip{color:#9ca3af;background-color:#374151}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#6b7280;font-size:.875rem}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-label{color:#9ca3af}.apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#111827;font-size:.875rem}:is([dir=rtl]) .apexcharts-tooltip .apexcharts-tooltip-marker{margin-right:0;margin-left:e}.dark .apexcharts-canvas .apexcharts-tooltip .apexcharts-tooltip-text-y-value{color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip-text{font-weight:400;font-size:.875rem!important}.apexcharts-canvas .apexcharts-xaxistooltip:after,.apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#fff}.apexcharts-canvas .apexcharts-xaxistooltip:after{border-width:8px;margin-left:-8px}.apexcharts-canvas .apexcharts-xaxistooltip:before{border-width:10px;margin-left:-10px}.dark .apexcharts-canvas .apexcharts-xaxistooltip:after,.dark .apexcharts-canvas .apexcharts-xaxistooltip:before{border-bottom-color:#374151}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-y-group{padding:0}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{padding-left:.75rem;padding-right:.75rem;padding-bottom:.75rem;background-color:#fff!important;color:#6b7280!important}.dark .apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active{background-color:#374151!important;color:#9ca3af!important}.apexcharts-canvas .apexcharts-tooltip-series-group.apexcharts-active:first-of-type{padding-top:.75rem}.apexcharts-canvas .apexcharts-legend{padding:0!important}.apexcharts-canvas .apexcharts-legend-text{font-size:.75rem;font-weight:500!important;padding-left:1.25rem;color:#6b7280!important}:is([dir=rtl]) .apexcharts-canvas .apexcharts-legend-text{padding-right:.5rem}.apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#111827!important}.dark .apexcharts-canvas .apexcharts-legend-text{color:#9ca3af!important}.dark .apexcharts-canvas .apexcharts-legend-text:not(.apexcharts-inactive-legend):hover{color:#fff!important}.apexcharts-canvas .apexcharts-legend-series{margin-left:.5rem;margin-right:.5rem;margin-bottom:.25rem!important;display:flex;align-items:center}.apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#111827!important;font-size:1.875rem;font-weight:700}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-value{fill:#fff!important}.apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#6b7280!important;font-size:1rem;font-weight:400}.dark .apexcharts-canvas .apexcharts-datalabels-group .apexcharts-text.apexcharts-datalabel-label{fill:#9ca3af!important}.apexcharts-canvas .apexcharts-datalabels .apexcharts-text.apexcharts-pie-label{font-size:.75rem!important;font-weight:600!important;text-shadow:none!important;filter:none!important}.apexcharts-gridline,.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{stroke:#e5e7eb!important}.dark .apexcharts-gridline,.dark .apexcharts-xcrosshairs,.dark .apexcharts-ycrosshairs{stroke:#374151!important}.format{color:var(--tw-format-body);max-width:65ch}.format :where([class~=lead]):not(:where([class~=not-format] *)){color:var(--tw-format-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.format :where(a):not(:where([class~=not-format] *)){color:var(--tw-format-links);text-decoration:underline;font-weight:500}.format :where(a):not(:where([class~=not-format] *)):hover{text-decoration:none}.format :where(strong):not(:where([class~=not-format] *)){color:var(--tw-format-bold);font-weight:700}.format :where(a strong):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote strong):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th strong):not(:where([class~=not-format] *)){color:inherit}.format :where(ol):not(:where([class~=not-format] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol[type=A]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=A s]):not(:where([class~=not-format] *)){list-style-type:upper-alpha}.format :where(ol[type=a s]):not(:where([class~=not-format] *)){list-style-type:lower-alpha}.format :where(ol[type=I]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=I s]):not(:where([class~=not-format] *)){list-style-type:upper-roman}.format :where(ol[type=i s]):not(:where([class~=not-format] *)){list-style-type:lower-roman}.format :where(ol[type=\"1\"]):not(:where([class~=not-format] *)){list-style-type:decimal}.format :where(ul):not(:where([class~=not-format] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.format :where(ol>li):not(:where([class~=not-format] *))::marker{font-weight:400;color:var(--tw-format-counters)}.format :where(ul>li):not(:where([class~=not-format] *))::marker{color:var(--tw-format-bullets)}.format :where(hr):not(:where([class~=not-format] *)){border-color:var(--tw-format-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.format :where(blockquote):not(:where([class~=not-format] *)){font-size:1.1111111em;font-weight:700;font-style:italic;color:var(--tw-format-quotes);quotes:\"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";margin-bottom:1.6em}.format :where(blockquote):not(:where([class~=not-format] *)):before{content:\"\";background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='24' fill='none'%3E%3Cpath fill='%239CA3AF' d='M18.69 24v-9.855C18.69 6.54 23.663 1.385 30.666 0l1.326 2.868c-3.242 1.223-5.326 4.85-5.326 7.799H32V24H18.69ZM0 24v-9.855C0 6.54 4.997 1.384 12 0l1.328 2.868C10.084 4.091 8 7.718 8 10.667h5.31V24H0Z'/%3E%3C/svg%3E\");background-repeat:no-repeat;color:var(--tw-format-quotes);width:1.7777778em;height:1.3333333em;display:block;margin-top:1.6em}.format :where(blockquote p:first-of-type):not(:where([class~=not-format] *)):before{content:open-quote}.format :where(blockquote p:last-of-type):not(:where([class~=not-format] *)):after{content:close-quote}.format :where(h1):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.format :where(h1 strong):not(:where([class~=not-format] *)){font-weight:900;color:inherit}.format :where(h2):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.5em;margin-top:0;margin-bottom:1em;line-height:1.3333333}.format :where(h2 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h3):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:700;font-size:1.25em;margin-top:0;margin-bottom:.6em;line-height:1.6}.format :where(h3 strong):not(:where([class~=not-format] *)){font-weight:800;color:inherit}.format :where(h4):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;margin-top:0;margin-bottom:.5em;line-height:1.5}.format :where(h4 strong):not(:where([class~=not-format] *)){font-weight:700;color:inherit}.format :where(img):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.format :where(figcaption):not(:where([class~=not-format] *)){color:var(--tw-format-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.format :where(code):not(:where([class~=not-format] *)){color:var(--tw-format-code);font-weight:600;background-color:var(--tw-format-code-bg);padding:.3333333em .5555556em;border-radius:.2222222em;font-size:.875em}.format :where(a code):not(:where([class~=not-format] *)){color:inherit}.format :where(h1 code):not(:where([class~=not-format] *)){color:inherit}.format :where(h2 code):not(:where([class~=not-format] *)){color:inherit;font-size:.875em}.format :where(h3 code):not(:where([class~=not-format] *)){color:inherit;font-size:.9em}.format :where(h4 code):not(:where([class~=not-format] *)){color:inherit}.format :where(blockquote code):not(:where([class~=not-format] *)){color:inherit}.format :where(thead th code):not(:where([class~=not-format] *)){color:inherit}.format :where(pre):not(:where([class~=not-format] *)){color:var(--tw-format-pre-code);background-color:var(--tw-format-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.format :where(pre code):not(:where([class~=not-format] *)){background-color:initial;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.format :where(pre code):not(:where([class~=not-format] *)):before{content:none}.format :where(pre code):not(:where([class~=not-format] *)):after{content:none}.format :where(table):not(:where([class~=not-format] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.format :where(thead):not(:where([class~=not-format] *)){background-color:var(--tw-format-th-bg);border-radius:.2777778em}.format :where(thead th):not(:where([class~=not-format] *)){color:var(--tw-format-headings);font-weight:600;vertical-align:bottom;padding:.5555556em .5714286em .5714286em}.format :where(tbody tr):not(:where([class~=not-format] *)){border-bottom-width:1px;border-bottom-color:var(--tw-format-td-borders)}.format :where(tbody tr:last-child):not(:where([class~=not-format] *)){border-bottom-width:0}.format :where(tbody td):not(:where([class~=not-format] *)){vertical-align:initial}.format :where(tfoot):not(:where([class~=not-format] *)){border-top-width:1px;border-top-color:var(--tw-format-th-borders)}.format :where(tfoot td):not(:where([class~=not-format] *)){vertical-align:top}.format{--tw-format-body:#6b7280;--tw-format-headings:#111827;--tw-format-lead:#6b7280;--tw-format-links:#4b5563;--tw-format-bold:#111827;--tw-format-counters:#6b7280;--tw-format-bullets:#6b7280;--tw-format-hr:#e5e7eb;--tw-format-quotes:#111827;--tw-format-quote-borders:#e5e7eb;--tw-format-captions:#6b7280;--tw-format-code:#111827;--tw-format-code-bg:#f3f4f6;--tw-format-pre-code:#4b5563;--tw-format-pre-bg:#f3f4f6;--tw-format-th-borders:#e5e7eb;--tw-format-th-bg:#f9fafb;--tw-format-td-borders:#e5e7eb;--tw-format-invert-body:#9ca3af;--tw-format-invert-headings:#fff;--tw-format-invert-lead:#9ca3af;--tw-format-invert-links:#fff;--tw-format-invert-bold:#fff;--tw-format-invert-counters:#9ca3af;--tw-format-invert-bullets:#4b5563;--tw-format-invert-hr:#374151;--tw-format-invert-quotes:#f3f4f6;--tw-format-invert-quote-borders:#374151;--tw-format-invert-captions:#9ca3af;--tw-format-invert-code:#fff;--tw-format-invert-code-bg:#1f2937;--tw-format-invert-pre-code:#d1d5db;--tw-format-invert-pre-bg:#374151;--tw-format-invert-th-borders:#4b5563;--tw-format-invert-td-borders:#374151;--tw-format-invert-th-bg:#374151;font-size:1rem;line-height:1.75}.format :where(p):not(:where([class~=not-format] *)){margin-top:1.25em;margin-bottom:1.25em}.format :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(video):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(figure):not(:where([class~=not-format] *)){margin-top:2em;margin-bottom:2em}.format :where(li):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format :where(ol>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(ul>li):not(:where([class~=not-format] *)){padding-left:.375em}.format :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.format :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.5714286em}.format :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.format :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-sm :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.5em;margin-bottom:.5em}.format-sm :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1em}.format-sm :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1em}.format-sm :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-sm :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-base :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.75em;margin-bottom:.75em}.format-base :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.25em}.format-base :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.25em}.format-base :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-base :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}.btn-primary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.625rem 1.25rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-primary-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-primary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.btn-primary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-primary-small){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .btn-primary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-red-small{border-radius:.5rem;--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-red-small:hover{--tw-bg-opacity:1;background-color:rgb(155 28 28/var(--tw-bg-opacity))}.btn-red-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(248 180 180/var(--tw-ring-opacity))}:is(.dark .btn-red-small){--tw-bg-opacity:1;background-color:rgb(224 36 36/var(--tw-bg-opacity))}:is(.dark .btn-red-small:hover){--tw-bg-opacity:1;background-color:rgb(200 30 30/var(--tw-bg-opacity))}:is(.dark .btn-red-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(155 28 28/var(--tw-ring-opacity))}.btn-secondary{margin-inline-end:.5rem;margin-bottom:.5rem;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.625rem 1.25rem;text-align:center;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.btn-secondary-small{border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity));padding:.5rem .75rem;text-align:center;font-size:.75rem;line-height:1rem;font-weight:500;--tw-text-opacity:1;color:rgb(26 86 219/var(--tw-text-opacity))}.btn-secondary-small:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.btn-secondary-small:focus{outline:2px solid #0000;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}:is(.dark .btn-secondary-small){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:hover){--tw-bg-opacity:1;background-color:rgb(63 131 248/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .btn-secondary-small:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(30 66 159/var(--tw-ring-opacity))}.label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .label){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.input{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.input-error{display:block;width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(253 242 242/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(119 29 29/var(--tw-text-opacity))}.input-error::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error::placeholder{--tw-placeholder-opacity:1;color:rgb(200 30 30/var(--tw-placeholder-opacity))}.input-error:focus{--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(240 82 82/var(--tw-ring-opacity))}:is(.dark .input-error){--tw-border-opacity:1;border-color:rgb(240 82 82/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .input-error)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}:is(.dark .input-error)::placeholder{--tw-placeholder-opacity:1;color:rgb(240 82 82/var(--tw-placeholder-opacity))}.disabled-input{margin-bottom:1.25rem;display:block;width:100%;cursor:not-allowed;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity));padding:.625rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}.disabled-input:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .disabled-input){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}:is(.dark .disabled-input)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity))}:is(.dark .disabled-input:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity));--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.link{font-weight:500;--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.link:hover{text-decoration-line:underline}:is(.dark .link){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}.form{margin-left:auto;margin-right:auto;min-width:24rem;max-width:24rem}.table{width:100%;text-align:left;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity))}:is(.dark .table){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity))}@media (min-width:640px){.table{font-size:.875rem;line-height:1.25rem}}.table:where([dir=rtl],[dir=rtl] *){text-align:right}.thead{background-color:rgb(248 250 252/var(--tw-bg-opacity));font-size:.75rem;line-height:1rem;text-transform:uppercase;color:rgb(51 65 85/var(--tw-text-opacity))}.thead,:is(.dark .thead){--tw-bg-opacity:1;--tw-text-opacity:1}:is(.dark .thead){background-color:rgb(51 65 85/var(--tw-bg-opacity));color:rgb(148 163 184/var(--tw-text-opacity))}.tr{border-bottom-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}:is(.dark .tr){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity))}.td-tight{padding:.25rem}@media (min-width:640px){.td-tight{padding:.5rem .75rem}}.td{padding:.5rem .75rem}@media (min-width:640px){.td{padding:1rem 1.5rem}}.th{padding:.375rem .75rem}@media (min-width:640px){.th{padding:.75rem 1.5rem}}.checkbox{height:1rem;width:1rem;border-radius:.25rem;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.checkbox:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}:is(.dark .checkbox){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity));--tw-ring-offset-color:#1f2937}:is(.dark .checkbox:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(28 100 242/var(--tw-ring-opacity))}.h3{font-size:1.125rem;line-height:1.75rem;font-weight:600;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity))}:is(.dark .h3){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.progress-bar-div{display:flex;width:24rem;flex-direction:column;justify-content:center;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-\\[60px\\]{bottom:60px}.left-0{left:0}.right-0{right:0}.start-0{inset-inline-start:0}.top-0{top:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-4{height:1rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-\\[16px\\]{height:16px}.min-h-screen{min-height:100vh}.w-1\\/2{width:50%}.w-4{width:1rem}.w-64{width:16rem}.w-\\[16px\\]{width:16px}.w-\\[256px\\]{width:256px}.w-full{width:100%}.max-w-screen-xl{max-width:1280px}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y:-100%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x:100%}.translate-y-full{--tw-translate-y:100%}.rotate-180,.translate-y-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.self-center{align-self:center}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-lg{border-radius:.5rem}.rounded-e-lg{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-s-lg{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-blue-600{--tw-border-opacity:1;border-color:rgb(28 100 242/var(--tw-border-opacity))}.border-blue-700{--tw-border-opacity:1;border-color:rgb(26 86 219/var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.bg-gray-900\\/50{background-color:#11182780}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\\/50{background-color:#ffffff80}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-4{padding:1rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-2{padding-top:.5rem}.text-center{text-align:center}.font-body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.text-blue-600{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-red-600{--tw-text-opacity:1;color:rgb(224 36 36/var(--tw-text-opacity))}.text-red-700{--tw-text-opacity:1;color:rgb(200 30 30/var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (min-width:1024px){.lg\\:format-lg{font-size:1.125rem;line-height:1.7777778}.lg\\:format-lg :where(p):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\\:format-lg :where([class~=lead]):not(:where([class~=not-format] *)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\\:format-lg :where(blockquote):not(:where([class~=not-format] *)):before{margin-top:1.6666667em}.lg\\:format-lg :where(blockquote>p:first-child):not(:where([class~=not-format] *)){margin-top:.5em}.lg\\:format-lg :where(h1):not(:where([class~=not-format] *)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\\:format-lg :where(h2):not(:where([class~=not-format] *)){font-size:2em;margin-top:0;margin-bottom:.6666667em;line-height:1.3333333}.lg\\:format-lg :where(h3):not(:where([class~=not-format] *)){font-size:1.3333333em;margin-top:0;margin-bottom:.6666667em;line-height:1.5}.lg\\:format-lg :where(h4):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:.4444444em;line-height:1.5555556}.lg\\:format-lg :where(img):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(video):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure):not(:where([class~=not-format] *)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\\:format-lg :where(figure>*):not(:where([class~=not-format] *)){margin-top:0;margin-bottom:0}.lg\\:format-lg :where(figcaption):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\\:format-lg :where(code):not(:where([class~=not-format] *)){font-size:.8888889em}.lg\\:format-lg :where(h2 code):not(:where([class~=not-format] *)){font-size:.8666667em}.lg\\:format-lg :where(h3 code):not(:where([class~=not-format] *)){font-size:.875em}.lg\\:format-lg :where(pre):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding:1em 1.5em}.lg\\:format-lg :where(ol):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(ul):not(:where([class~=not-format] *)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\\:format-lg :where(li):not(:where([class~=not-format] *)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\\:format-lg :where(ol>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(ul>li):not(:where([class~=not-format] *)){padding-left:.4444444em}.lg\\:format-lg :where(.format>ul>li p):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(.format>ul>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ul>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:first-child):not(:where([class~=not-format] *)){margin-top:1.3333333em}.lg\\:format-lg :where(.format>ol>li>:last-child):not(:where([class~=not-format] *)){margin-bottom:1.3333333em}.lg\\:format-lg :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-format] *)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\\:format-lg :where(hr):not(:where([class~=not-format] *)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\\:format-lg :where(hr+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h2+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h3+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(h4+*):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(table):not(:where([class~=not-format] *)){font-size:.8888889em;line-height:1.5}.lg\\:format-lg :where(thead th):not(:where([class~=not-format] *)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\\:format-lg :where(thead th:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(tbody td,tfoot td):not(:where([class~=not-format] *)){padding:.75em}.lg\\:format-lg :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-format] *)){padding-right:0}.lg\\:format-lg :where(.format>:first-child):not(:where([class~=not-format] *)){margin-top:0}.lg\\:format-lg :where(.format>:last-child):not(:where([class~=not-format] *)){margin-bottom:0}}.hover\\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity))}.hover\\:bg-blue-800:hover{--tw-bg-opacity:1;background-color:rgb(30 66 159/var(--tw-bg-opacity))}.hover\\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.hover\\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity))}.hover\\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(28 100 242/var(--tw-text-opacity))}.hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.hover\\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.focus\\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.focus\\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-2:focus,.focus\\:ring-4:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\\:ring-4:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\\:ring-blue-300:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(164 202 254/var(--tw-ring-opacity))}.focus\\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}.focus\\:ring-gray-200:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(229 231 235/var(--tw-ring-opacity))}:is(.dark .dark\\:border-blue-500){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-600){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity))}:is(.dark .dark\\:border-gray-700){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}:is(.dark .dark\\:border-transparent){border-color:#0000}:is(.dark .dark\\:bg-blue-600){--tw-bg-opacity:1;background-color:rgb(28 100 242/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-600){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-700){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-800\\/50){background-color:#1f293780}:is(.dark .dark\\:bg-gray-900){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}:is(.dark .dark\\:bg-gray-900\\/80){background-color:#111827cc}:is(.dark .dark\\:text-blue-500){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:text-gray-400){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}:is(.dark .dark\\:text-red-500){--tw-text-opacity:1;color:rgb(240 82 82/var(--tw-text-opacity))}:is(.dark .dark\\:text-slate-800){--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity))}:is(.dark .dark\\:text-white){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:placeholder-gray-400)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:placeholder-gray-400)::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity))}:is(.dark .dark\\:hover\\:bg-blue-700:hover){--tw-bg-opacity:1;background-color:rgb(26 86 219/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-600:hover){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:bg-gray-800:hover){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}:is(.dark .dark\\:hover\\:text-blue-500:hover){--tw-text-opacity:1;color:rgb(63 131 248/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-gray-300:hover){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity))}:is(.dark .dark\\:hover\\:text-white:hover){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}:is(.dark .dark\\:focus\\:border-blue-500:focus){--tw-border-opacity:1;border-color:rgb(63 131 248/var(--tw-border-opacity))}:is(.dark .dark\\:focus\\:ring-blue-500:focus){--tw-ring-opacity:1;--tw-ring-color:rgb(63 131 248/var(--tw-ring-opacity))}@media (min-width:640px){.sm\\:flex{display:flex}.sm\\:flex-row{flex-direction:row}.sm\\:items-start{align-items:flex-start}}@media (min-width:768px){.md\\:w-1\\/2{width:50%}}@media (min-width:1024px){.lg\\:mt-0{margin-top:0}.lg\\:mt-20{margin-top:5rem}.lg\\:w-1\\/2{width:50%}.lg\\:flex-row{flex-direction:row}.lg\\:items-start{align-items:flex-start}.lg\\:justify-between{justify-content:space-between}.lg\\:py-8{padding-top:2rem;padding-bottom:2rem}}.rtl\\:rotate-180:where([dir=rtl],[dir=rtl] *){--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rtl\\:space-x-reverse:where([dir=rtl],[dir=rtl] *)>:not([hidden])~:not([hidden]){--tw-space-x-reverse:1}"
  },
  {
    "path": "src/staticfiles/urls.ed747cf49aae.py",
    "content": "from django.urls import include, path\nfrom components.click_to_edit import ClickToEditComponent\nfrom components.delete_row import DeleteRowComponent\n\nurlpatterns = [\n    path(\"active_search/\", include(\"components.active_search.urls\")),\n    path(\"bulk_update/\", include(\"components.bulk_update.urls\")),\n    path(\"cascading_selects/\", include(\"components.cascading_selects.urls\")),\n    path(\n        \"click_to_edit/contact/<int:id>\",\n        ClickToEditComponent.as_view(),\n        name=\"contact\",\n    ),\n    path(\n        \"click_to_edit/contact/<int:id>/edit\",\n        ClickToEditComponent.as_view(),\n        name=\"contact_edit\",\n    ),\n    path(\"click_to_load/\", include(\"components.click_to_load.urls\")),\n    path(\n        \"delete_row/contact/<int:id>\",\n        DeleteRowComponent.as_view(),\n        name=\"contact_delete_row\",\n    ),\n    path(\"edit_row/\", include(\"components.edit_row.urls\")),\n    path(\"infinite_scroll/\", include(\"components.infinite_scroll.urls\")),\n    path(\"inline_validation/\", include(\"components.inline_validation.urls\")),\n    path(\"progress_bar/\", include(\"components.progress_bar.urls\")),\n]\n"
  },
  {
    "path": "src/staticfiles/urls.py",
    "content": "from django.urls import include, path\nfrom components.click_to_edit import ClickToEditComponent\nfrom components.delete_row import DeleteRowComponent\n\nurlpatterns = [\n    path(\"active_search/\", include(\"components.active_search.urls\")),\n    path(\"bulk_update/\", include(\"components.bulk_update.urls\")),\n    path(\"cascading_selects/\", include(\"components.cascading_selects.urls\")),\n    path(\n        \"click_to_edit/contact/<int:id>\",\n        ClickToEditComponent.as_view(),\n        name=\"contact\",\n    ),\n    path(\n        \"click_to_edit/contact/<int:id>/edit\",\n        ClickToEditComponent.as_view(),\n        name=\"contact_edit\",\n    ),\n    path(\"click_to_load/\", include(\"components.click_to_load.urls\")),\n    path(\n        \"delete_row/contact/<int:id>\",\n        DeleteRowComponent.as_view(),\n        name=\"contact_delete_row\",\n    ),\n    path(\"edit_row/\", include(\"components.edit_row.urls\")),\n    path(\"infinite_scroll/\", include(\"components.infinite_scroll.urls\")),\n    path(\"inline_validation/\", include(\"components.inline_validation.urls\")),\n    path(\"progress_bar/\", include(\"components.progress_bar.urls\")),\n]\n"
  },
  {
    "path": "src/staticfiles/ws.d96b2cd51173.js",
    "content": "/*\nWebSockets Extension\n============================\nThis extension adds support for WebSockets to htmx.  See /www/extensions/ws.md for usage instructions.\n*/\n\n(function () {\n\n\t/** @type {import(\"../htmx\").HtmxInternalApi} */\n\tvar api;\n\n\thtmx.defineExtension(\"ws\", {\n\n\t\t/**\n\t\t * init is called once, when this extension is first registered.\n\t\t * @param {import(\"../htmx\").HtmxInternalApi} apiRef\n\t\t */\n\t\tinit: function (apiRef) {\n\n\t\t\t// Store reference to internal API\n\t\t\tapi = apiRef;\n\n\t\t\t// Default function for creating new EventSource objects\n\t\t\tif (!htmx.createWebSocket) {\n\t\t\t\thtmx.createWebSocket = createWebSocket;\n\t\t\t}\n\n\t\t\t// Default setting for reconnect delay\n\t\t\tif (!htmx.config.wsReconnectDelay) {\n\t\t\t\thtmx.config.wsReconnectDelay = \"full-jitter\";\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * onEvent handles all events passed to this extension.\n\t\t *\n\t\t * @param {string} name\n\t\t * @param {Event} evt\n\t\t */\n\t\tonEvent: function (name, evt) {\n\n\t\t\tswitch (name) {\n\n\t\t\t\t// Try to close the socket when elements are removed\n\t\t\t\tcase \"htmx:beforeCleanupElement\":\n\n\t\t\t\t\tvar internalData = api.getInternalData(evt.target)\n\n\t\t\t\t\tif (internalData.webSocket) {\n\t\t\t\t\t\tinternalData.webSocket.close();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\n\t\t\t\t// Try to create websockets when elements are processed\n\t\t\t\tcase \"htmx:beforeProcessNode\":\n\t\t\t\t\tvar parent = evt.target;\n\n\t\t\t\t\tforEach(queryAttributeOnThisOrChildren(parent, \"ws-connect\"), function (child) {\n\t\t\t\t\t\tensureWebSocket(child)\n\t\t\t\t\t});\n\t\t\t\t\tforEach(queryAttributeOnThisOrChildren(parent, \"ws-send\"), function (child) {\n\t\t\t\t\t\tensureWebSocketSend(child)\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction splitOnWhitespace(trigger) {\n\t\treturn trigger.trim().split(/\\s+/);\n\t}\n\n\tfunction getLegacyWebsocketURL(elt) {\n\t\tvar legacySSEValue = api.getAttributeValue(elt, \"hx-ws\");\n\t\tif (legacySSEValue) {\n\t\t\tvar values = splitOnWhitespace(legacySSEValue);\n\t\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\t\tvar value = values[i].split(/:(.+)/);\n\t\t\t\tif (value[0] === \"connect\") {\n\t\t\t\t\treturn value[1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * ensureWebSocket creates a new WebSocket on the designated element, using\n\t * the element's \"ws-connect\" attribute.\n\t * @param {HTMLElement} socketElt\n\t * @returns\n\t */\n\tfunction ensureWebSocket(socketElt) {\n\n\t\t// If the element containing the WebSocket connection no longer exists, then\n\t\t// do not connect/reconnect the WebSocket.\n\t\tif (!api.bodyContains(socketElt)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the source straight from the element's value\n\t\tvar wssSource = api.getAttributeValue(socketElt, \"ws-connect\")\n\n\t\tif (wssSource == null || wssSource === \"\") {\n\t\t\tvar legacySource = getLegacyWebsocketURL(socketElt);\n\t\t\tif (legacySource == null) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\twssSource = legacySource;\n\t\t\t}\n\t\t}\n\n\t\t// Guarantee that the wssSource value is a fully qualified URL\n\t\tif (wssSource.indexOf(\"/\") === 0) {\n\t\t\tvar base_part = location.hostname + (location.port ? ':' + location.port : '');\n\t\t\tif (location.protocol === 'https:') {\n\t\t\t\twssSource = \"wss://\" + base_part + wssSource;\n\t\t\t} else if (location.protocol === 'http:') {\n\t\t\t\twssSource = \"ws://\" + base_part + wssSource;\n\t\t\t}\n\t\t}\n\n\t\tvar socketWrapper = createWebsocketWrapper(socketElt, function () {\n\t\t\treturn htmx.createWebSocket(wssSource)\n\t\t});\n\n\t\tsocketWrapper.addEventListener('message', function (event) {\n\t\t\tif (maybeCloseWebSocketSource(socketElt)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar response = event.data;\n\t\t\tif (!api.triggerEvent(socketElt, \"htmx:wsBeforeMessage\", {\n\t\t\t\tmessage: response,\n\t\t\t\tsocketWrapper: socketWrapper.publicInterface\n\t\t\t})) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tapi.withExtensions(socketElt, function (extension) {\n\t\t\t\tresponse = extension.transformResponse(response, null, socketElt);\n\t\t\t});\n\n\t\t\tvar settleInfo = api.makeSettleInfo(socketElt);\n\t\t\tvar fragment = api.makeFragment(response);\n\n\t\t\tif (fragment.children.length) {\n\t\t\t\tvar children = Array.from(fragment.children);\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tapi.oobSwap(api.getAttributeValue(children[i], \"hx-swap-oob\") || \"true\", children[i], settleInfo);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tapi.settleImmediately(settleInfo.tasks);\n\t\t\tapi.triggerEvent(socketElt, \"htmx:wsAfterMessage\", { message: response, socketWrapper: socketWrapper.publicInterface })\n\t\t});\n\n\t\t// Put the WebSocket into the HTML Element's custom data.\n\t\tapi.getInternalData(socketElt).webSocket = socketWrapper;\n\t}\n\n\t/**\n\t * @typedef {Object} WebSocketWrapper\n\t * @property {WebSocket} socket\n\t * @property {Array<{message: string, sendElt: Element}>} messageQueue\n\t * @property {number} retryCount\n\t * @property {(message: string, sendElt: Element) => void} sendImmediately sendImmediately sends message regardless of websocket connection state\n\t * @property {(message: string, sendElt: Element) => void} send\n\t * @property {(event: string, handler: Function) => void} addEventListener\n\t * @property {() => void} handleQueuedMessages\n\t * @property {() => void} init\n\t * @property {() => void} close\n\t */\n\t/**\n\t *\n\t * @param socketElt\n\t * @param socketFunc\n\t * @returns {WebSocketWrapper}\n\t */\n\tfunction createWebsocketWrapper(socketElt, socketFunc) {\n\t\tvar wrapper = {\n\t\t\tsocket: null,\n\t\t\tmessageQueue: [],\n\t\t\tretryCount: 0,\n\n\t\t\t/** @type {Object<string, Function[]>} */\n\t\t\tevents: {},\n\n\t\t\taddEventListener: function (event, handler) {\n\t\t\t\tif (this.socket) {\n\t\t\t\t\tthis.socket.addEventListener(event, handler);\n\t\t\t\t}\n\n\t\t\t\tif (!this.events[event]) {\n\t\t\t\t\tthis.events[event] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.events[event].push(handler);\n\t\t\t},\n\n\t\t\tsendImmediately: function (message, sendElt) {\n\t\t\t\tif (!this.socket) {\n\t\t\t\t\tapi.triggerErrorEvent()\n\t\t\t\t}\n\t\t\t\tif (!sendElt || api.triggerEvent(sendElt, 'htmx:wsBeforeSend', {\n\t\t\t\t\tmessage: message,\n\t\t\t\t\tsocketWrapper: this.publicInterface\n\t\t\t\t})) {\n\t\t\t\t\tthis.socket.send(message);\n\t\t\t\t\tsendElt && api.triggerEvent(sendElt, 'htmx:wsAfterSend', {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tsocketWrapper: this.publicInterface\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsend: function (message, sendElt) {\n\t\t\t\tif (this.socket.readyState !== this.socket.OPEN) {\n\t\t\t\t\tthis.messageQueue.push({ message: message, sendElt: sendElt });\n\t\t\t\t} else {\n\t\t\t\t\tthis.sendImmediately(message, sendElt);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thandleQueuedMessages: function () {\n\t\t\t\twhile (this.messageQueue.length > 0) {\n\t\t\t\t\tvar queuedItem = this.messageQueue[0]\n\t\t\t\t\tif (this.socket.readyState === this.socket.OPEN) {\n\t\t\t\t\t\tthis.sendImmediately(queuedItem.message, queuedItem.sendElt);\n\t\t\t\t\t\tthis.messageQueue.shift();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tinit: function () {\n\t\t\t\tif (this.socket && this.socket.readyState === this.socket.OPEN) {\n\t\t\t\t\t// Close discarded socket\n\t\t\t\t\tthis.socket.close()\n\t\t\t\t}\n\n\t\t\t\t// Create a new WebSocket and event handlers\n\t\t\t\t/** @type {WebSocket} */\n\t\t\t\tvar socket = socketFunc();\n\n\t\t\t\t// The event.type detail is added for interface conformance with the\n\t\t\t\t// other two lifecycle events (open and close) so a single handler method\n\t\t\t\t// can handle them polymorphically, if required.\n\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsConnecting\", { event: { type: 'connecting' } });\n\n\t\t\t\tthis.socket = socket;\n\n\t\t\t\tsocket.onopen = function (e) {\n\t\t\t\t\twrapper.retryCount = 0;\n\t\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsOpen\", { event: e, socketWrapper: wrapper.publicInterface });\n\t\t\t\t\twrapper.handleQueuedMessages();\n\t\t\t\t}\n\n\t\t\t\tsocket.onclose = function (e) {\n\t\t\t\t\t// If socket should not be connected, stop further attempts to establish connection\n\t\t\t\t\t// If Abnormal Closure/Service Restart/Try Again Later, then set a timer to reconnect after a pause.\n\t\t\t\t\tif (!maybeCloseWebSocketSource(socketElt) && [1006, 1012, 1013].indexOf(e.code) >= 0) {\n\t\t\t\t\t\tvar delay = getWebSocketReconnectDelay(wrapper.retryCount);\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\twrapper.retryCount += 1;\n\t\t\t\t\t\t\twrapper.init();\n\t\t\t\t\t\t}, delay);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Notify client code that connection has been closed. Client code can inspect `event` field\n\t\t\t\t\t// to determine whether closure has been valid or abnormal\n\t\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsClose\", { event: e, socketWrapper: wrapper.publicInterface })\n\t\t\t\t};\n\n\t\t\t\tsocket.onerror = function (e) {\n\t\t\t\t\tapi.triggerErrorEvent(socketElt, \"htmx:wsError\", { error: e, socketWrapper: wrapper });\n\t\t\t\t\tmaybeCloseWebSocketSource(socketElt);\n\t\t\t\t};\n\n\t\t\t\tvar events = this.events;\n\t\t\t\tObject.keys(events).forEach(function (k) {\n\t\t\t\t\tevents[k].forEach(function (e) {\n\t\t\t\t\t\tsocket.addEventListener(k, e);\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tclose: function () {\n\t\t\t\tthis.socket.close()\n\t\t\t}\n\t\t}\n\n\t\twrapper.init();\n\n\t\twrapper.publicInterface = {\n\t\t\tsend: wrapper.send.bind(wrapper),\n\t\t\tsendImmediately: wrapper.sendImmediately.bind(wrapper),\n\t\t\tqueue: wrapper.messageQueue\n\t\t};\n\n\t\treturn wrapper;\n\t}\n\n\t/**\n\t * ensureWebSocketSend attaches trigger handles to elements with\n\t * \"ws-send\" attribute\n\t * @param {HTMLElement} elt\n\t */\n\tfunction ensureWebSocketSend(elt) {\n\t\tvar legacyAttribute = api.getAttributeValue(elt, \"hx-ws\");\n\t\tif (legacyAttribute && legacyAttribute !== 'send') {\n\t\t\treturn;\n\t\t}\n\n\t\tvar webSocketParent = api.getClosestMatch(elt, hasWebSocket)\n\t\tprocessWebSocketSend(webSocketParent, elt);\n\t}\n\n\t/**\n\t * hasWebSocket function checks if a node has webSocket instance attached\n\t * @param {HTMLElement} node\n\t * @returns {boolean}\n\t */\n\tfunction hasWebSocket(node) {\n\t\treturn api.getInternalData(node).webSocket != null;\n\t}\n\n\t/**\n\t * processWebSocketSend adds event listeners to the <form> element so that\n\t * messages can be sent to the WebSocket server when the form is submitted.\n\t * @param {HTMLElement} socketElt\n\t * @param {HTMLElement} sendElt\n\t */\n\tfunction processWebSocketSend(socketElt, sendElt) {\n\t\tvar nodeData = api.getInternalData(sendElt);\n\t\tvar triggerSpecs = api.getTriggerSpecs(sendElt);\n\t\ttriggerSpecs.forEach(function (ts) {\n\t\t\tapi.addTriggerHandler(sendElt, ts, nodeData, function (elt, evt) {\n\t\t\t\tif (maybeCloseWebSocketSource(socketElt)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/** @type {WebSocketWrapper} */\n\t\t\t\tvar socketWrapper = api.getInternalData(socketElt).webSocket;\n\t\t\t\tvar headers = api.getHeaders(sendElt, api.getTarget(sendElt));\n\t\t\t\tvar results = api.getInputValues(sendElt, 'post');\n\t\t\t\tvar errors = results.errors;\n\t\t\t\tvar rawParameters = results.values;\n\t\t\t\tvar expressionVars = api.getExpressionVars(sendElt);\n\t\t\t\tvar allParameters = api.mergeObjects(rawParameters, expressionVars);\n\t\t\t\tvar filteredParameters = api.filterValues(allParameters, sendElt);\n\n\t\t\t\tvar sendConfig = {\n\t\t\t\t\tparameters: filteredParameters,\n\t\t\t\t\tunfilteredParameters: allParameters,\n\t\t\t\t\theaders: headers,\n\t\t\t\t\terrors: errors,\n\n\t\t\t\t\ttriggeringEvent: evt,\n\t\t\t\t\tmessageBody: undefined,\n\t\t\t\t\tsocketWrapper: socketWrapper.publicInterface\n\t\t\t\t};\n\n\t\t\t\tif (!api.triggerEvent(elt, 'htmx:wsConfigSend', sendConfig)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (errors && errors.length > 0) {\n\t\t\t\t\tapi.triggerEvent(elt, 'htmx:validation:halted', errors);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar body = sendConfig.messageBody;\n\t\t\t\tif (body === undefined) {\n\t\t\t\t\tvar toSend = Object.assign({}, sendConfig.parameters);\n\t\t\t\t\tif (sendConfig.headers)\n\t\t\t\t\t\ttoSend['HEADERS'] = headers;\n\t\t\t\t\tbody = JSON.stringify(toSend);\n\t\t\t\t}\n\n\t\t\t\tsocketWrapper.send(body, elt);\n\n\t\t\t\tif (evt && api.shouldCancel(evt, elt)) {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * getWebSocketReconnectDelay is the default easing function for WebSocket reconnects.\n\t * @param {number} retryCount // The number of retries that have already taken place\n\t * @returns {number}\n\t */\n\tfunction getWebSocketReconnectDelay(retryCount) {\n\n\t\t/** @type {\"full-jitter\" | ((retryCount:number) => number)} */\n\t\tvar delay = htmx.config.wsReconnectDelay;\n\t\tif (typeof delay === 'function') {\n\t\t\treturn delay(retryCount);\n\t\t}\n\t\tif (delay === 'full-jitter') {\n\t\t\tvar exp = Math.min(retryCount, 6);\n\t\t\tvar maxDelay = 1000 * Math.pow(2, exp);\n\t\t\treturn maxDelay * Math.random();\n\t\t}\n\n\t\tlogError('htmx.config.wsReconnectDelay must either be a function or the string \"full-jitter\"');\n\t}\n\n\t/**\n\t * maybeCloseWebSocketSource checks to the if the element that created the WebSocket\n\t * still exists in the DOM.  If NOT, then the WebSocket is closed and this function\n\t * returns TRUE.  If the element DOES EXIST, then no action is taken, and this function\n\t * returns FALSE.\n\t *\n\t * @param {*} elt\n\t * @returns\n\t */\n\tfunction maybeCloseWebSocketSource(elt) {\n\t\tif (!api.bodyContains(elt)) {\n\t\t\tapi.getInternalData(elt).webSocket.close();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * createWebSocket is the default method for creating new WebSocket objects.\n\t * it is hoisted into htmx.createWebSocket to be overridden by the user, if needed.\n\t *\n\t * @param {string} url\n\t * @returns WebSocket\n\t */\n\tfunction createWebSocket(url) {\n\t\tvar sock = new WebSocket(url, []);\n\t\tsock.binaryType = htmx.config.wsBinaryType;\n\t\treturn sock;\n\t}\n\n\t/**\n\t * queryAttributeOnThisOrChildren returns all nodes that contain the requested attributeName, INCLUDING THE PROVIDED ROOT ELEMENT.\n\t *\n\t * @param {HTMLElement} elt\n\t * @param {string} attributeName\n\t */\n\tfunction queryAttributeOnThisOrChildren(elt, attributeName) {\n\n\t\tvar result = []\n\n\t\t// If the parent element also contains the requested attribute, then add it to the results too.\n\t\tif (api.hasAttribute(elt, attributeName) || api.hasAttribute(elt, \"hx-ws\")) {\n\t\t\tresult.push(elt);\n\t\t}\n\n\t\t// Search all child nodes that match the requested attribute\n\t\telt.querySelectorAll(\"[\" + attributeName + \"], [data-\" + attributeName + \"], [data-hx-ws], [hx-ws]\").forEach(function (node) {\n\t\t\tresult.push(node)\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * @template T\n\t * @param {T[]} arr\n\t * @param {(T) => void} func\n\t */\n\tfunction forEach(arr, func) {\n\t\tif (arr) {\n\t\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\t\tfunc(arr[i]);\n\t\t\t}\n\t\t}\n\t}\n\n})();\n\n"
  },
  {
    "path": "src/staticfiles/ws.js",
    "content": "/*\nWebSockets Extension\n============================\nThis extension adds support for WebSockets to htmx.  See /www/extensions/ws.md for usage instructions.\n*/\n\n(function () {\n\n\t/** @type {import(\"../htmx\").HtmxInternalApi} */\n\tvar api;\n\n\thtmx.defineExtension(\"ws\", {\n\n\t\t/**\n\t\t * init is called once, when this extension is first registered.\n\t\t * @param {import(\"../htmx\").HtmxInternalApi} apiRef\n\t\t */\n\t\tinit: function (apiRef) {\n\n\t\t\t// Store reference to internal API\n\t\t\tapi = apiRef;\n\n\t\t\t// Default function for creating new EventSource objects\n\t\t\tif (!htmx.createWebSocket) {\n\t\t\t\thtmx.createWebSocket = createWebSocket;\n\t\t\t}\n\n\t\t\t// Default setting for reconnect delay\n\t\t\tif (!htmx.config.wsReconnectDelay) {\n\t\t\t\thtmx.config.wsReconnectDelay = \"full-jitter\";\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * onEvent handles all events passed to this extension.\n\t\t *\n\t\t * @param {string} name\n\t\t * @param {Event} evt\n\t\t */\n\t\tonEvent: function (name, evt) {\n\n\t\t\tswitch (name) {\n\n\t\t\t\t// Try to close the socket when elements are removed\n\t\t\t\tcase \"htmx:beforeCleanupElement\":\n\n\t\t\t\t\tvar internalData = api.getInternalData(evt.target)\n\n\t\t\t\t\tif (internalData.webSocket) {\n\t\t\t\t\t\tinternalData.webSocket.close();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\n\t\t\t\t// Try to create websockets when elements are processed\n\t\t\t\tcase \"htmx:beforeProcessNode\":\n\t\t\t\t\tvar parent = evt.target;\n\n\t\t\t\t\tforEach(queryAttributeOnThisOrChildren(parent, \"ws-connect\"), function (child) {\n\t\t\t\t\t\tensureWebSocket(child)\n\t\t\t\t\t});\n\t\t\t\t\tforEach(queryAttributeOnThisOrChildren(parent, \"ws-send\"), function (child) {\n\t\t\t\t\t\tensureWebSocketSend(child)\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n\n\tfunction splitOnWhitespace(trigger) {\n\t\treturn trigger.trim().split(/\\s+/);\n\t}\n\n\tfunction getLegacyWebsocketURL(elt) {\n\t\tvar legacySSEValue = api.getAttributeValue(elt, \"hx-ws\");\n\t\tif (legacySSEValue) {\n\t\t\tvar values = splitOnWhitespace(legacySSEValue);\n\t\t\tfor (var i = 0; i < values.length; i++) {\n\t\t\t\tvar value = values[i].split(/:(.+)/);\n\t\t\t\tif (value[0] === \"connect\") {\n\t\t\t\t\treturn value[1];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * ensureWebSocket creates a new WebSocket on the designated element, using\n\t * the element's \"ws-connect\" attribute.\n\t * @param {HTMLElement} socketElt\n\t * @returns\n\t */\n\tfunction ensureWebSocket(socketElt) {\n\n\t\t// If the element containing the WebSocket connection no longer exists, then\n\t\t// do not connect/reconnect the WebSocket.\n\t\tif (!api.bodyContains(socketElt)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get the source straight from the element's value\n\t\tvar wssSource = api.getAttributeValue(socketElt, \"ws-connect\")\n\n\t\tif (wssSource == null || wssSource === \"\") {\n\t\t\tvar legacySource = getLegacyWebsocketURL(socketElt);\n\t\t\tif (legacySource == null) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\twssSource = legacySource;\n\t\t\t}\n\t\t}\n\n\t\t// Guarantee that the wssSource value is a fully qualified URL\n\t\tif (wssSource.indexOf(\"/\") === 0) {\n\t\t\tvar base_part = location.hostname + (location.port ? ':' + location.port : '');\n\t\t\tif (location.protocol === 'https:') {\n\t\t\t\twssSource = \"wss://\" + base_part + wssSource;\n\t\t\t} else if (location.protocol === 'http:') {\n\t\t\t\twssSource = \"ws://\" + base_part + wssSource;\n\t\t\t}\n\t\t}\n\n\t\tvar socketWrapper = createWebsocketWrapper(socketElt, function () {\n\t\t\treturn htmx.createWebSocket(wssSource)\n\t\t});\n\n\t\tsocketWrapper.addEventListener('message', function (event) {\n\t\t\tif (maybeCloseWebSocketSource(socketElt)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar response = event.data;\n\t\t\tif (!api.triggerEvent(socketElt, \"htmx:wsBeforeMessage\", {\n\t\t\t\tmessage: response,\n\t\t\t\tsocketWrapper: socketWrapper.publicInterface\n\t\t\t})) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tapi.withExtensions(socketElt, function (extension) {\n\t\t\t\tresponse = extension.transformResponse(response, null, socketElt);\n\t\t\t});\n\n\t\t\tvar settleInfo = api.makeSettleInfo(socketElt);\n\t\t\tvar fragment = api.makeFragment(response);\n\n\t\t\tif (fragment.children.length) {\n\t\t\t\tvar children = Array.from(fragment.children);\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tapi.oobSwap(api.getAttributeValue(children[i], \"hx-swap-oob\") || \"true\", children[i], settleInfo);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tapi.settleImmediately(settleInfo.tasks);\n\t\t\tapi.triggerEvent(socketElt, \"htmx:wsAfterMessage\", { message: response, socketWrapper: socketWrapper.publicInterface })\n\t\t});\n\n\t\t// Put the WebSocket into the HTML Element's custom data.\n\t\tapi.getInternalData(socketElt).webSocket = socketWrapper;\n\t}\n\n\t/**\n\t * @typedef {Object} WebSocketWrapper\n\t * @property {WebSocket} socket\n\t * @property {Array<{message: string, sendElt: Element}>} messageQueue\n\t * @property {number} retryCount\n\t * @property {(message: string, sendElt: Element) => void} sendImmediately sendImmediately sends message regardless of websocket connection state\n\t * @property {(message: string, sendElt: Element) => void} send\n\t * @property {(event: string, handler: Function) => void} addEventListener\n\t * @property {() => void} handleQueuedMessages\n\t * @property {() => void} init\n\t * @property {() => void} close\n\t */\n\t/**\n\t *\n\t * @param socketElt\n\t * @param socketFunc\n\t * @returns {WebSocketWrapper}\n\t */\n\tfunction createWebsocketWrapper(socketElt, socketFunc) {\n\t\tvar wrapper = {\n\t\t\tsocket: null,\n\t\t\tmessageQueue: [],\n\t\t\tretryCount: 0,\n\n\t\t\t/** @type {Object<string, Function[]>} */\n\t\t\tevents: {},\n\n\t\t\taddEventListener: function (event, handler) {\n\t\t\t\tif (this.socket) {\n\t\t\t\t\tthis.socket.addEventListener(event, handler);\n\t\t\t\t}\n\n\t\t\t\tif (!this.events[event]) {\n\t\t\t\t\tthis.events[event] = [];\n\t\t\t\t}\n\n\t\t\t\tthis.events[event].push(handler);\n\t\t\t},\n\n\t\t\tsendImmediately: function (message, sendElt) {\n\t\t\t\tif (!this.socket) {\n\t\t\t\t\tapi.triggerErrorEvent()\n\t\t\t\t}\n\t\t\t\tif (!sendElt || api.triggerEvent(sendElt, 'htmx:wsBeforeSend', {\n\t\t\t\t\tmessage: message,\n\t\t\t\t\tsocketWrapper: this.publicInterface\n\t\t\t\t})) {\n\t\t\t\t\tthis.socket.send(message);\n\t\t\t\t\tsendElt && api.triggerEvent(sendElt, 'htmx:wsAfterSend', {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\tsocketWrapper: this.publicInterface\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tsend: function (message, sendElt) {\n\t\t\t\tif (this.socket.readyState !== this.socket.OPEN) {\n\t\t\t\t\tthis.messageQueue.push({ message: message, sendElt: sendElt });\n\t\t\t\t} else {\n\t\t\t\t\tthis.sendImmediately(message, sendElt);\n\t\t\t\t}\n\t\t\t},\n\n\t\t\thandleQueuedMessages: function () {\n\t\t\t\twhile (this.messageQueue.length > 0) {\n\t\t\t\t\tvar queuedItem = this.messageQueue[0]\n\t\t\t\t\tif (this.socket.readyState === this.socket.OPEN) {\n\t\t\t\t\t\tthis.sendImmediately(queuedItem.message, queuedItem.sendElt);\n\t\t\t\t\t\tthis.messageQueue.shift();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tinit: function () {\n\t\t\t\tif (this.socket && this.socket.readyState === this.socket.OPEN) {\n\t\t\t\t\t// Close discarded socket\n\t\t\t\t\tthis.socket.close()\n\t\t\t\t}\n\n\t\t\t\t// Create a new WebSocket and event handlers\n\t\t\t\t/** @type {WebSocket} */\n\t\t\t\tvar socket = socketFunc();\n\n\t\t\t\t// The event.type detail is added for interface conformance with the\n\t\t\t\t// other two lifecycle events (open and close) so a single handler method\n\t\t\t\t// can handle them polymorphically, if required.\n\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsConnecting\", { event: { type: 'connecting' } });\n\n\t\t\t\tthis.socket = socket;\n\n\t\t\t\tsocket.onopen = function (e) {\n\t\t\t\t\twrapper.retryCount = 0;\n\t\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsOpen\", { event: e, socketWrapper: wrapper.publicInterface });\n\t\t\t\t\twrapper.handleQueuedMessages();\n\t\t\t\t}\n\n\t\t\t\tsocket.onclose = function (e) {\n\t\t\t\t\t// If socket should not be connected, stop further attempts to establish connection\n\t\t\t\t\t// If Abnormal Closure/Service Restart/Try Again Later, then set a timer to reconnect after a pause.\n\t\t\t\t\tif (!maybeCloseWebSocketSource(socketElt) && [1006, 1012, 1013].indexOf(e.code) >= 0) {\n\t\t\t\t\t\tvar delay = getWebSocketReconnectDelay(wrapper.retryCount);\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\twrapper.retryCount += 1;\n\t\t\t\t\t\t\twrapper.init();\n\t\t\t\t\t\t}, delay);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Notify client code that connection has been closed. Client code can inspect `event` field\n\t\t\t\t\t// to determine whether closure has been valid or abnormal\n\t\t\t\t\tapi.triggerEvent(socketElt, \"htmx:wsClose\", { event: e, socketWrapper: wrapper.publicInterface })\n\t\t\t\t};\n\n\t\t\t\tsocket.onerror = function (e) {\n\t\t\t\t\tapi.triggerErrorEvent(socketElt, \"htmx:wsError\", { error: e, socketWrapper: wrapper });\n\t\t\t\t\tmaybeCloseWebSocketSource(socketElt);\n\t\t\t\t};\n\n\t\t\t\tvar events = this.events;\n\t\t\t\tObject.keys(events).forEach(function (k) {\n\t\t\t\t\tevents[k].forEach(function (e) {\n\t\t\t\t\t\tsocket.addEventListener(k, e);\n\t\t\t\t\t})\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tclose: function () {\n\t\t\t\tthis.socket.close()\n\t\t\t}\n\t\t}\n\n\t\twrapper.init();\n\n\t\twrapper.publicInterface = {\n\t\t\tsend: wrapper.send.bind(wrapper),\n\t\t\tsendImmediately: wrapper.sendImmediately.bind(wrapper),\n\t\t\tqueue: wrapper.messageQueue\n\t\t};\n\n\t\treturn wrapper;\n\t}\n\n\t/**\n\t * ensureWebSocketSend attaches trigger handles to elements with\n\t * \"ws-send\" attribute\n\t * @param {HTMLElement} elt\n\t */\n\tfunction ensureWebSocketSend(elt) {\n\t\tvar legacyAttribute = api.getAttributeValue(elt, \"hx-ws\");\n\t\tif (legacyAttribute && legacyAttribute !== 'send') {\n\t\t\treturn;\n\t\t}\n\n\t\tvar webSocketParent = api.getClosestMatch(elt, hasWebSocket)\n\t\tprocessWebSocketSend(webSocketParent, elt);\n\t}\n\n\t/**\n\t * hasWebSocket function checks if a node has webSocket instance attached\n\t * @param {HTMLElement} node\n\t * @returns {boolean}\n\t */\n\tfunction hasWebSocket(node) {\n\t\treturn api.getInternalData(node).webSocket != null;\n\t}\n\n\t/**\n\t * processWebSocketSend adds event listeners to the <form> element so that\n\t * messages can be sent to the WebSocket server when the form is submitted.\n\t * @param {HTMLElement} socketElt\n\t * @param {HTMLElement} sendElt\n\t */\n\tfunction processWebSocketSend(socketElt, sendElt) {\n\t\tvar nodeData = api.getInternalData(sendElt);\n\t\tvar triggerSpecs = api.getTriggerSpecs(sendElt);\n\t\ttriggerSpecs.forEach(function (ts) {\n\t\t\tapi.addTriggerHandler(sendElt, ts, nodeData, function (elt, evt) {\n\t\t\t\tif (maybeCloseWebSocketSource(socketElt)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t/** @type {WebSocketWrapper} */\n\t\t\t\tvar socketWrapper = api.getInternalData(socketElt).webSocket;\n\t\t\t\tvar headers = api.getHeaders(sendElt, api.getTarget(sendElt));\n\t\t\t\tvar results = api.getInputValues(sendElt, 'post');\n\t\t\t\tvar errors = results.errors;\n\t\t\t\tvar rawParameters = results.values;\n\t\t\t\tvar expressionVars = api.getExpressionVars(sendElt);\n\t\t\t\tvar allParameters = api.mergeObjects(rawParameters, expressionVars);\n\t\t\t\tvar filteredParameters = api.filterValues(allParameters, sendElt);\n\n\t\t\t\tvar sendConfig = {\n\t\t\t\t\tparameters: filteredParameters,\n\t\t\t\t\tunfilteredParameters: allParameters,\n\t\t\t\t\theaders: headers,\n\t\t\t\t\terrors: errors,\n\n\t\t\t\t\ttriggeringEvent: evt,\n\t\t\t\t\tmessageBody: undefined,\n\t\t\t\t\tsocketWrapper: socketWrapper.publicInterface\n\t\t\t\t};\n\n\t\t\t\tif (!api.triggerEvent(elt, 'htmx:wsConfigSend', sendConfig)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (errors && errors.length > 0) {\n\t\t\t\t\tapi.triggerEvent(elt, 'htmx:validation:halted', errors);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar body = sendConfig.messageBody;\n\t\t\t\tif (body === undefined) {\n\t\t\t\t\tvar toSend = Object.assign({}, sendConfig.parameters);\n\t\t\t\t\tif (sendConfig.headers)\n\t\t\t\t\t\ttoSend['HEADERS'] = headers;\n\t\t\t\t\tbody = JSON.stringify(toSend);\n\t\t\t\t}\n\n\t\t\t\tsocketWrapper.send(body, elt);\n\n\t\t\t\tif (evt && api.shouldCancel(evt, elt)) {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * getWebSocketReconnectDelay is the default easing function for WebSocket reconnects.\n\t * @param {number} retryCount // The number of retries that have already taken place\n\t * @returns {number}\n\t */\n\tfunction getWebSocketReconnectDelay(retryCount) {\n\n\t\t/** @type {\"full-jitter\" | ((retryCount:number) => number)} */\n\t\tvar delay = htmx.config.wsReconnectDelay;\n\t\tif (typeof delay === 'function') {\n\t\t\treturn delay(retryCount);\n\t\t}\n\t\tif (delay === 'full-jitter') {\n\t\t\tvar exp = Math.min(retryCount, 6);\n\t\t\tvar maxDelay = 1000 * Math.pow(2, exp);\n\t\t\treturn maxDelay * Math.random();\n\t\t}\n\n\t\tlogError('htmx.config.wsReconnectDelay must either be a function or the string \"full-jitter\"');\n\t}\n\n\t/**\n\t * maybeCloseWebSocketSource checks to the if the element that created the WebSocket\n\t * still exists in the DOM.  If NOT, then the WebSocket is closed and this function\n\t * returns TRUE.  If the element DOES EXIST, then no action is taken, and this function\n\t * returns FALSE.\n\t *\n\t * @param {*} elt\n\t * @returns\n\t */\n\tfunction maybeCloseWebSocketSource(elt) {\n\t\tif (!api.bodyContains(elt)) {\n\t\t\tapi.getInternalData(elt).webSocket.close();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * createWebSocket is the default method for creating new WebSocket objects.\n\t * it is hoisted into htmx.createWebSocket to be overridden by the user, if needed.\n\t *\n\t * @param {string} url\n\t * @returns WebSocket\n\t */\n\tfunction createWebSocket(url) {\n\t\tvar sock = new WebSocket(url, []);\n\t\tsock.binaryType = htmx.config.wsBinaryType;\n\t\treturn sock;\n\t}\n\n\t/**\n\t * queryAttributeOnThisOrChildren returns all nodes that contain the requested attributeName, INCLUDING THE PROVIDED ROOT ELEMENT.\n\t *\n\t * @param {HTMLElement} elt\n\t * @param {string} attributeName\n\t */\n\tfunction queryAttributeOnThisOrChildren(elt, attributeName) {\n\n\t\tvar result = []\n\n\t\t// If the parent element also contains the requested attribute, then add it to the results too.\n\t\tif (api.hasAttribute(elt, attributeName) || api.hasAttribute(elt, \"hx-ws\")) {\n\t\t\tresult.push(elt);\n\t\t}\n\n\t\t// Search all child nodes that match the requested attribute\n\t\telt.querySelectorAll(\"[\" + attributeName + \"], [data-\" + attributeName + \"], [data-hx-ws], [hx-ws]\").forEach(function (node) {\n\t\t\tresult.push(node)\n\t\t})\n\n\t\treturn result\n\t}\n\n\t/**\n\t * @template T\n\t * @param {T[]} arr\n\t * @param {(T) => void} func\n\t */\n\tfunction forEach(arr, func) {\n\t\tif (arr) {\n\t\t\tfor (var i = 0; i < arr.length; i++) {\n\t\t\t\tfunc(arr[i]);\n\t\t\t}\n\t\t}\n\t}\n\n})();\n\n"
  },
  {
    "path": "src/templates/__init__.py",
    "content": ""
  },
  {
    "path": "src/templates/_base.html",
    "content": "{# djlint: off #}\n{% load static %}\n{% load django_htmx %}\n\n{% if not request.htmx %}\n    <!DOCTYPE html>\n    <html lang=\"en\">\n        <head>\n            <meta charset=\"UTF-8\">\n            <meta name=\"description\" content=\"Django HTMX Components\">\n            <meta name=\"keywords\" content=\"Django, HTMX, Components\">\n            <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n            <title>Django HTMX Components</title>\n            <link rel=\"stylesheet\" href=\"{% static 'style.css' %}\">\n            <link rel=\"stylesheet\" href=\"{% static 'prism.css' %}\">\n            <link rel=\"icon\" href=\"{% static 'favicon.ico' %}\" type=\"image/x-icon\">\n            {% block style %}\n            {% endblock style %}\n            {% component_css_dependencies %}\n        </head>\n        <body hx-headers='{\"x-csrftoken\": \"{{ csrf_token }}\"}'\n              class=\"antialiased bg-white dark:bg-gray-900 font-body\" hx-ext=\"preload\">\n            <nav class=\"bg-white dark:bg-gray-900 fixed w-full z-20 top-0 start-0 border-b border-gray-200 dark:border-gray-600\">\n                <div class=\"max-w-screen-xl flex flex-col items-center justify-between mx-auto p-4\">\n                    <span class=\"flex flex-col items-center space-x-3 rtl:space-x-reverse\">\n                        <a href=\"{% url 'index' %}\">\n                            <span class=\"self-center text-2xl font-semibold whitespace-nowrap dark:text-white\">Django HTMX Components</span>\n                        </a>\n                        <a href=\"https://iwanalabs.com\"\n                           target=\"_blank\"\n                           rel=\"noopener noreferrer\">\n                            <span class=\"self-center text-xs text-slate-600 whitespace-nowrap dark:text-white\">Made with 🦎 by Iwana Labs</span>\n                        </a>\n                    </span>\n                </div>\n            </nav>\n{% endif %}\n\n{% block content %}\n{% endblock content %}\n\n{% if not request.htmx %}\n        <script src=\"{% static 'htmx.min.js' %}\"></script>\n        <script src=\"{% static 'preload.js' %}\"></script>\n        <script src=\"{% static 'prism.js' %}\"></script>\n        <script src=\"{% static 'flowbite.min.js' %}\"></script>\n        {% django_htmx_script %}\n        {% block javascript %}\n        {% endblock javascript %}\n        {% component_js_dependencies %}\n        <script src=\"https://cdn.usefathom.com/script.js\" data-site=\"YPOOWREF\" defer></script>\n    </body>\n</html>\n{% endif %}\n"
  },
  {
    "path": "src/templates/active_search.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"input_active_search\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/bulk_update.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_bulk_update\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/cascading_selects.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"parent_select_cascading_selects\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/click_to_edit.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"click_to_edit\" id=first_available_id %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/click_to_load.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_click_to_load\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/delete_row.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"delete_row\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/edit_row.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_edit_row\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/index.html",
    "content": "{% include \"_base.html\" %}\n{% block content %}\n    <header hx-target=\"this\" id=\"header\">\n        <div>\n            <div class=\"flex flex-col items-center lg:items-start lg:flex-row lg:justify-between min-h-screen\">\n                <div class=\"w-full px-8 py-12 lg:py-8  md:w-1/2\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>What</h2>\n                        {# djlint:off #}\n                        <p>\n                            This is a collection of components for <a href=\"https://www.djangoproject.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>. They are designed to be copy-pasted into your project and customized to your needs.\n                        </p>\n                        {# djlint:on #}\n                        <p>\n                            They feature minimal styling and barebones functionality. They are meant to be a starting point for your own components or a reference.\n                        </p>\n                        <h3>List of components</h3>\n                        <p>These are the components we've created so far:</p>\n                        <ul preload>\n                            {% for component in components %}\n                                <li>\n                                    <a href=\"{{ component.url }}\"\n                                       hx-get=\"{{ component.url }}\"\n                                       hx-push-url=\"true\">{{ component.name }}</a>\n                                </li>\n                            {% endfor %}\n                        </ul>\n                        <h3>Contributing</h3>\n                        <p>\n                            We'd love to see your components here! If you have a component you'd like to share, please go to <a href=\"https://github.com/iwanalabs/django-htmx-components\">our GitHub repository</a> and open a pull request.\n                        </p>\n                    </article>\n                </div>\n                <div class=\"w-full px-8 py-12 lg:py-8 lg:w-1/2 bg-slate-100\">\n                    <article class=\"mt-20 format lg:format-lg\">\n                        <h2>How</h2>\n                        <p>\n                            It's easy! Just copy and paste these components into your project. They serve as a starting point for your own components or as a reference.\n                        </p>\n                        <p>To use them, you first need to install some dependencies.  Here's how to do it:</p>\n                        <ol>\n                            {# djlint:off #}\n                            <li>\n                                Install <a href=\"https://www.djangoproject.com/\" target=\"_blank\" rel=\"noopener noreferrer\">Django</a> and <a href=\"https://htmx.org/\" target=\"_blank\" rel=\"noopener noreferrer\">htmx</a>.\n                            </li>\n                            <li>\n                                Install and set up <a href=\"https://github.com/EmilStenstrom/django-components/\" rel=\"noopener noreferrer\" target=\"_blank\">django-components</a>.\n                            </li>\n                            {# djlint:on #}\n                            <li>\n                                Create a <code>urls.py</code> file in <code>components/</code> and add the following code:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path \n                                    urlpatterns = []\n                                </code></pre>\n                                Then import this file in your project's <code>urls.py</code> file:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path, include\n                                    urlpatterns = [\n                                        path('components/', include('components.urls')),\n                                    ]\n                                </code></pre>\n                                This step simplifies adding URL patterns for your components and keeps them separate from your project's URL patterns.\n                                Then, adding a single-file component to your <code>components/urls.py</code> file is as easy as:\n                                <pre class=\"language-python\"><code class=\"language-python\">\n                                    from django.urls import path\n                                    from components.mycomponent import MyComponent \n                                    urlpatterns = [\n                                        path('mycomponent/', MyComponent.as_view()),\n                                    ]\n                                </code></pre>\n                                It will handle requests to <code>/components/mycomponent/</code> and render the component.\n                            </li>\n                            <li>That's all! You can now use the component in your templates. Check out the examples to get started.</li>\n                        </ol>\n                    </article>\n                </div>\n            </div>\n        </div>\n    </header>\n{% endblock content %}\n"
  },
  {
    "path": "src/templates/infinite_scroll.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"table_infinite_scroll\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/inline_validation.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"form_inline_validation\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "src/templates/progress_bar.html",
    "content": "{# djlint:off #}\n{% include \"_base.html\" %}\n{% block content %}\n    {% component \"component_tabs\" %}\n        {% fill \"component_code\" %}\n            {% component \"start_progress_bar\" %}{% endcomponent %}\n        {% endfill %}\n    {% endcomponent %}\n{% endblock content %}\n{# djlint:on #}\n"
  },
  {
    "path": "tailwind.config.js",
    "content": "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  darkMode: \"class\",\n  content: [\n    \"./*.html\",\n    \"./src/templates/*.html\",\n    \"./src/templates/**/*.html\",\n    \"./src/templates/**/**/*.html\",\n    \"./src/components/*.py\",\n    \"./src/components/**/*.html\",\n    \"./src/components/**/*.js\",\n    \"./src/components/**/*.py\",\n    \"./src/static/input/*.js\",\n    \"./node_modules/flowbite/**/*.js\",\n  ],\n  theme: {\n    extend: {},\n    fontFamily: {\n      body: [\n        \"Inter\",\n        \"ui-sans-serif\",\n        \"system-ui\",\n        \"-apple-system\",\n        \"system-ui\",\n        \"Segoe UI\",\n        \"Roboto\",\n        \"Helvetica Neue\",\n        \"Arial\",\n        \"Noto Sans\",\n        \"sans-serif\",\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\",\n      ],\n      sans: [\n        \"Inter\",\n        \"ui-sans-serif\",\n        \"system-ui\",\n        \"-apple-system\",\n        \"system-ui\",\n        \"Segoe UI\",\n        \"Roboto\",\n        \"Helvetica Neue\",\n        \"Arial\",\n        \"Noto Sans\",\n        \"sans-serif\",\n        \"Apple Color Emoji\",\n        \"Segoe UI Emoji\",\n        \"Segoe UI Symbol\",\n        \"Noto Color Emoji\",\n      ],\n    },\n  },\n  plugins: [\n    require(\"flowbite/plugin\")({\n      charts: true,\n    }),\n    require(\"flowbite-typography\"),\n  ],\n};\n"
  }
]